Open iam-TJ opened 8 years ago
From the backtrace this looks like it's caused by loading the s2tc library without even calling it yet. It looks like a conflict between your version of libstdc++ and UT.
Now I see two ways of solving it:
I will see if there is anything obvious to be done there soon.
On Tue, Nov 10, 2015, 13:42 TJ notifications@github.com wrote:
Whilst helping an Ubuntu user we found that the library causes a segmentation fault for Unreal Tournament 1999 the user was trying to play. We found un-installing the libtxc-dxtn-s2tc0 library solved the SIGSEGV but I said I'd report the back-trace upstream in case it can be figured out and fixed.
$ gdb ./ut-bin GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 ... Reading symbols from ./ut-bin...(no debugging symbols found)...done. (gdb) run --- Segmentation Fault ---- (gdb) bt
0 0xf3e62e20 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6
1 0xf3df21eb in bool std::has_facetstd::ctype
(std::locale const&) () from /usr/lib/i386-linux-gnu/libstdc++.so.6
2 0xf3de5821 in std::basic_ios<char, std::char_traits
>::_M_cache_locale(std::locale const&) () from /usr/lib/i386-linux-gnu/libstdc++.so.6
3 0xf3de5990 in std::basic_ios<char, std::char_traits
>::init(std::basic_streambuf<char, std::char_traits >*) () from /usr/lib/i386-linux-gnu/libstdc++.so.6 4 0xf3dd60fc in std::ios_base::Init::Init() () from /usr/lib/i386-linux-gnu/libstdc++.so.6
5 0xf34fe8ae in static_initialization_and_destruction_0 (initialize_p=1, __priority=65535)
at /usr/include/c++/4.8/iostream:74
6 _GLOBAL__sub_I_s2tc_algorithm.cpp(void) () at s2tc_algorithm.cpp:1459
7 0xf7fead77 in ?? () from /lib/ld-linux.so.2
8 0xf7feae64 in ?? () from /lib/ld-linux.so.2
9 0xf7feee8e in ?? () from /lib/ld-linux.so.2
10 0xf7feac26 in ?? () from /lib/ld-linux.so.2
11 0xf7fee684 in ?? () from /lib/ld-linux.so.2
12 0xf7fb78d1 in ?? () from /lib/i386-linux-gnu/libdl.so.2
13 0xf7feac26 in ?? () from /lib/ld-linux.so.2
14 0xf7fb737c in ?? () from /lib/i386-linux-gnu/libdl.so.2
15 0xf7fb794c in dlopen () from /lib/i386-linux-gnu/libdl.so.2
16 0xf58ec323 in util_dl_open () from /usr/lib/i386-linux-gnu/libgallium.so.0
17 0xf58f0ac6 in util_format_s3tc_init () from /usr/lib/i386-linux-gnu/libgallium.so.0
18 0xf5ee64c9 in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
19 0xf5e8666b in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
20 0xf5c6b788 in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
21 0xf5ef307c in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
22 0xf5c6c966 in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
23 0xf6a53113 in ?? () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
24 0xf6a2bd44 in ?? () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
25 0xf6a282ed in ?? () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
26 0xf6a28b6e in glXChooseVisual () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
27 0xf7b475d7 in X11_GL_GetVisual () from ./libSDL-1.1.so.0
28 0xf7b4af82 in ?? () from ./libSDL-1.1.so.0
29 0xf7b4b73b in ?? () from ./libSDL-1.1.so.0
30 0xf7b421af in SDL_SetVideoMode () from ./libSDL-1.1.so.0
31 0xf7fce67a in USDLViewport::ResizeViewport(unsigned int, int, int, int) () from ./SDLDrv.so
32 0xf6b34e2b in UOpenGLRenderDevice::SetRes(int, int, int, int) () from ./OpenGLDrv.so
33 0xf6b34b17 in UOpenGLRenderDevice::Init(UViewport *, int, int, int, int) () from ./OpenGLDrv.so
34 0xf7fce1ed in USDLViewport::TryRenderDevice(char const *, int, int, int, int) () from ./SDLDrv.so
35 0xf7fcef97 in USDLViewport::OpenWindow(unsigned int, int, int, int, int, int) () from ./SDLDrv.so
36 0xf7de33a2 in UGameEngine::Init(void) () from ./Engine.so
37 0x0804d7a6 in _start ()
— Reply to this email directly or view it on GitHub https://github.com/divVerent/s2tc/issues/8.
I think I just pushed a change that should help.
Essentially, the dependency on libstdc++ is gone now. Was a bit tricky to tell libtool that.
Just verified - the library no longer links to the standard C++ library, and it can be successfully used from pure C binaries too. Closing this, as I am very sure this fixes your segfault.
Or actually: reopening, as this seems reason enough to create a new release.
Whilst helping an Ubuntu user we found that the library causes a segmentation fault for Unreal Tournament 1999 the user was trying to play. We found un-installing the libtxc-dxtn-s2tc0 library solved the SIGSEGV but I said I'd report the back-trace upstream in case it can be figured out and fixed.