[Mesa-dev] [Bug 108933] Unreal Tournament (UT99) segfault on opengl init

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Dec 6 14:46:31 UTC 2018


https://bugs.freedesktop.org/show_bug.cgi?id=108933

--- Comment #3 from iive at yahoo.com ---
I got the UT99 working. 

valgrind doesn't show anything more, the first error is the one from the
report.

When trying to narrow mesa releases that work, I got mesa-18.1.7 working and
mesa-18.2.0 not working. However the bisect failed.
Even compiling mesa-18.0.0 also produces broken compilation.

Since I've done major update before compiling my mesa-18.2.0, it makes sense
that the bug is gcc/glibc related.

I had libstdc++.so.6.25 used, so I got an older libstdc++.so.6.24 one instead.
The problem remained. (I'm sure it got used, because I forgot to fix the link
and got another error.)

I tried compiling with -O0, but the bug remains. It is not miscompilation, per
se. It is more likely to be something related to ABI/API.

Here is the backtrace of current Mesa 19.0.0-devel (git-3b2ad8b290)
---
#1  0xf1be6ba8 in bool std::has_facet<std::ctype<char> >(std::locale const&) ()
from /usr/lib/libstdc++.so.6
#2  0xf1bd6f1a in std::basic_ios<char, std::char_traits<char>
>::_M_cache_locale(std::locale const&) () from /usr/lib/libstdc++.so.6
#3  0xf1bd7399 in std::basic_ios<char, std::char_traits<char>
>::init(std::basic_streambuf<char, std::char_traits<char> >*) () from
/usr/lib/libstdc++.so.6
#4  0xf1b75563 in std::ios_base::Init::Init() () from /usr/lib/libstdc++.so.6
#5  0xf5485d4b in __static_initialization_and_destruction_0 (__initialize_p=1,
__priority=65535) at /usr/include/c++/8.2.0/iostream:74
#6  0xf5485d93 in _GLOBAL__sub_I_st_glsl_to_tgsi_temprename.cpp(void) () at
state_tracker/st_glsl_to_tgsi_temprename.cpp:1426
#7  0xf595cc82 in __do_global_ctors_aux () from
/usr/lib/xorg/modules/dri/r600_dri.so
#8  0xf2230dc0 in ?? () from /usr/lib/libLLVM-6.0.so
#9  0xf514c025 in _init () from /usr/lib/xorg/modules/dri/r600_dri.so
#10 0xf4df26bc in ?? () from /usr/lib/libLLVM-6.0.so
---

The disassembly of the function in frame #1 looks like this:
---
   [...]
   0xf1be6b99 <+73>:    mov    -0x2a8(%ebx),%eax
   0xf1be6b9f <+79>:    mov    %eax,0x4(%esp)
   0xf1be6ba3 <+83>:    call   0xf1b5a570 <__dynamic_cast at plt>
=> 0xf1be6ba8 <+88>:    test   %eax,%eax
   0xf1be6baa <+90>:    setne  %al
   0xf1be6bad <+93>:    add    $0x18,%esp
   0xf1be6bb0 <+96>:    pop    %ebx
   0xf1be6bb1 <+97>:    ret    
---

Frame #6 is the closing bracket of dump_instruction() debug function.
Hollowing the whole function (#if/#endif) just moved the line number.

I'm not that familiar with C++ and debugging it. Maybe somebody could weight
in.
It seems that on init something calls global constructors and one of them needs
something that is not yet initialized or something.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181206/ac3f64bc/attachment.html>


More information about the mesa-dev mailing list