LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (http://www.linuxquestions.org/questions/slackware-14/)
-   -   libSDL-1.2.so.0.11.4 from slackware64-current "undefined symbol" _XGetRequest (http://www.linuxquestions.org/questions/slackware-14/libsdl-1-2-so-0-11-4-from-slackware64-current-undefined-symbol-_xgetrequest-4175456708/)

nates1 04-03-2013 10:35 AM

libSDL-1.2.so.0.11.4 from slackware64-current "undefined symbol" _XGetRequest
 
After upgrading to sdl-1.2.15-x86_64-1 I get failed: /usr/lib64/libSDL-1.2.so.0: undefined symbol: _XGetRequest

Specifically when running /opt/VirtualBox/VirtualBox.so.
Whole error is:
VirtualBox: supR3HardenedMainGetTrustedMain: dlopen("/opt/VirtualBox/VirtualBox.so",) failed: /usr/lib64/libSDL-1.2.so.0: undefined symbol: _XGetRequest

Sure enough:
# objdump -T /usr/lib64/libSDL-1.2.so.0 |grep XGetRe
0000000000000000 DF *UND* 0000000000000000 _XGetRequest

sdl-1.2.15-x86_64-1.txz (from slackware64-current)
/usr/lib64/libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.4 (Not work)

sdl-1.2.14-x86_64-5.txz (from slackware64-14.0)
/usr/lib64/libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.3 (works)

Is sdl-1.2.15 missing something?

fskmh 04-03-2013 01:49 PM

Code:

fskmh@workstation:/usr/local/src/SDL-1.2.15> grep -r XGetReq
src/video/x11/SDL_x11sym.h: * libX11 1.4.99.1 added _XGetRequest, and macros use it behind the scenes.
src/video/x11/SDL_x11sym.h:SDL_X11_SYM(void *,_XGetRequest,(Display* a,CARD8 b,size_t c),(a,b,c),return)
src/video/x11/SDL_x11dyn.c:static void *SDL_XGetRequest_workaround(Display* dpy, CARD8 type, size_t len)
src/video/x11/SDL_x11dyn.c:              *  that _XGetRequest() is available, even on older systems.
src/video/x11/SDL_x11dyn.c:                    p_XGetRequest = SDL_XGetRequest_workaround;

Looks like this symbol comes from libX11, and libSDL definitely links to it:

Code:

fskmh@workstation:~> ldd /usr/lib64/libSDL-1.2.so.0.11.4
        linux-vdso.so.1 (0x00007fff0d22a000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f599f143000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f599ef39000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f599ed28000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f599eb1f000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f599e7e6000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f599e5c8000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f599e3c5000)
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f599e1bf000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f599dfbb000)
        libvga.so.1 => /usr/lib64/libvga.so.1 (0x00007f599dd42000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f599db25000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f599d75e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f599f744000)

On my slack64-current, libX11-1.5.0 appears to originate from Slackware 14 release.

nates1 04-08-2013 08:40 AM

Thanks to fskmh. That lead me on the right track of upgrading libX11, and others while at it. Didn't even think of it as I don't run X locally, only over SSH.
Now I know how to trace lib dependencies more.


All times are GMT -5. The time now is 04:54 PM.