Bug#883615: Acknowledgement ([CRITICAL] Stretch p-u 9.3 breaks NVidia driver and X.org)

Andreas Beckmann anbe at debian.org
Sun Dec 17 04:18:50 UTC 2017


Hi Aurelien,

I can reproduce the problem in glxgears using nvidia driver 375.82-9~bpo9+1 and libc6 2.24-11+deb9u1 in a mostly stretch system:

I ran glxgears in gdb and it died here:

(gdb) bt
#0  0x00007ffff6a15360 in __GI__IO_link_in (fp=fp at entry=0x5555557b2510) at genops.c:102
#1  0x00007ffff6a13fa2 in _IO_new_file_init_internal (fp=fp at entry=0x5555557b2510) at fileops.c:151
#2  0x00007ffff6a08573 in __fopen_internal (filename=0x5555557b2450 "/home/beckmann/.Xauthority", mode=0x7ffff3e04cb7 "rb", is32=1) at iofopen.c:82
#3  0x00007ffff3e04477 in XauGetBestAuthByAddr () from /usr/lib/x86_64-linux-gnu/libXau.so.6
#4  0x00007ffff4017070 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#5  0x00007ffff40171ed in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#6  0x00007ffff4016d1b in xcb_connect_to_display_with_auth_info () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#7  0x00007ffff6f93e8a in _XConnectXCB () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#8  0x00007ffff6f84bc2 in XOpenDisplay () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#9  0x00005555555563f4 in main (argc=<optimized out>, argv=<optimized out>) at glxgears.c:762

   0x00007ffff6a15360 <+512>:   callq  *%rax
(gdb) print /x $rax
$8 = 0xb08ebdf3733b6f74

(gdb) info shared
>From                To                  Syms Read   Shared Object Library
0x00007ffff7dd9aa0  0x00007ffff7df5340  Yes         /lib64/ld-linux-x86-64.so.2
0x00007ffff7b8dcc0  0x00007ffff7bb6100  Yes (*)     /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0
0x00007ffff78d96d0  0x00007ffff792bb13  Yes (*)     /usr/lib/x86_64-linux-gnu/libGLU.so.1
0x00007ffff75e8f00  0x00007ffff765e291  Yes (*)     /usr/lib/x86_64-linux-gnu/libGL.so.1
0x00007ffff7297680  0x00007ffff73038da  Yes         /lib/x86_64-linux-gnu/libm.so.6
0x00007ffff6f6fda0  0x00007ffff6ff7434  Yes (*)     /usr/lib/x86_64-linux-gnu/libX11.so.6
0x00007ffff6d43700  0x00007ffff6d4d49f  Yes (*)     /usr/lib/x86_64-linux-gnu/libXext.so.6
0x00007ffff69c0910  0x00007ffff6aea403  Yes         /lib/x86_64-linux-gnu/libc.so.6
0x00007ffff66ae090  0x00007ffff6756b69  Yes         /usr/lib/x86_64-linux-gnu/libstdc++.so.6
0x00007ffff640dac0  0x00007ffff641dde5  Yes         /lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007ffff6208810  0x00007ffff620a5a3  Yes (*)     /usr/lib/x86_64-linux-gnu/libnvidia-tls.so.375.82
0x00007ffff4734600  0x00007ffff5817c77  Yes (*)     /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.375.82
0x00007ffff422fd80  0x00007ffff423094e  Yes         /lib/x86_64-linux-gnu/libdl.so.2
0x00007ffff4012b40  0x00007ffff40249f5  Yes (*)     /usr/lib/x86_64-linux-gnu/libxcb.so.1
0x00007ffff3e04010  0x00007ffff3e04c8c  Yes (*)     /usr/lib/x86_64-linux-gnu/libXau.so.6
0x00007ffff3bfe340  0x00007ffff3bffc48  Yes (*)     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
0x00007ffff39ea3d0  0x00007ffff39f75df  Yes (*)     /lib/x86_64-linux-gnu/libbsd.so.0
0x00007ffff37e10e0  0x00007ffff37e3ecf  Yes         /lib/x86_64-linux-gnu/librt.so.1
0x00007ffff35c7ab0  0x00007ffff35d4811  Yes         /lib/x86_64-linux-gnu/libpthread.so.0

Since I wanted to know where that invalid pointer came from, I stopped a few instructions earlier:

(gdb) break *__GI__IO_link_in+480
Breakpoint 3 at 0x7ffff6a15340: file genops.c, line 102.

(gdb) disassemble
Dump of assembler code for function __GI__IO_link_in:
   0x00007ffff6a15160 <+0>:     mov    (%rdi),%eax
...
=> 0x00007ffff6a15340 <+480>:   mov    0x32a3a9(%rip),%rax        # 0x7ffff6d3f6f0 <__libc_pthread_functions+368>
   0x00007ffff6a15347 <+487>:   mov    %rsp,%rdi
   0x00007ffff6a1534a <+490>:   xor    %edx,%edx
   0x00007ffff6a1534c <+492>:   ror    $0x11,%rax
   0x00007ffff6a15350 <+496>:   xor    %fs:0x30,%rax
   0x00007ffff6a15359 <+505>:   lea    -0x580(%rip),%rsi        # 0x7ffff6a14de0 <flush_cleanup>
   0x00007ffff6a15360 <+512>:   callq  *%rax
...

(gdb) print /x $rax
$1 = 0xfbad248c
(gdb) stepi
0x00007ffff6a15347      102     in genops.c
(gdb) print /x $rax
$2 = 0xd14c4c80fe79611d
(gdb) print &__libc_pthread_functions.ptr__pthread_cleanup_push_defer
$3 = (void (**)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0x7ffff6d3f6f0 <__libc_pthread_functions+368>
(gdb) print __libc_pthread_functions.ptr__pthread_cleanup_push_defer
$4 = (void (*)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0xd14c4c80fe79611d
(gdb) stepi
0x00007ffff6a1534a      102     in genops.c
(gdb) stepi
0x00007ffff6a1534c      102     in genops.c
(gdb) print /x $rax
$5 = 0xd14c4c80fe79611d
(gdb) stepi
0x00007ffff6a15350      102     in genops.c
(gdb) print /x $rax
$6 = 0xb08ee8a626407f3c
(gdb) stepi
0x00007ffff6a15359      102     in genops.c
(gdb) print /x $rax
$7 = 0xb08ebdf3733b6f74
(gdb) stepi
0x00007ffff6a15360      102     in genops.c
(gdb) print /x $rax
$8 = 0xb08ebdf3733b6f74
(gdb) stepi

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6a15360 in __GI__IO_link_in (fp=fp at entry=0x5555557b2510) at genops.c:102
102     in genops.c

(gdb) print &_pthread_cleanup_push_defer
$9 = (void (*)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0x7ffff35d1ac0 <_pthread_cleanup_push_defer>


And now let's retry that without /etc/ld.so.nohwcap

(gdb) break *__GI__IO_link_in+480
Breakpoint 2 at 0x7ffff6a15340: file genops.c, line 102.
(gdb) cont
Continuing.

Breakpoint 2, __GI__IO_link_in (fp=fp at entry=0x5555557b2510) at genops.c:102
102     genops.c: No such file or directory.
(gdb) disassemble
Dump of assembler code for function __GI__IO_link_in:
   0x00007ffff6a15160 <+0>:     mov    (%rdi),%eax
...
=> 0x00007ffff6a15340 <+480>:   mov    0x32a3a9(%rip),%rax        # 0x7ffff6d3f6f0 <__libc_pthread_functions+368>
   0x00007ffff6a15347 <+487>:   mov    %rsp,%rdi
   0x00007ffff6a1534a <+490>:   xor    %edx,%edx
   0x00007ffff6a1534c <+492>:   ror    $0x11,%rax
   0x00007ffff6a15350 <+496>:   xor    %fs:0x30,%rax
   0x00007ffff6a15359 <+505>:   lea    -0x580(%rip),%rsi        # 0x7ffff6a14de0 <flush_cleanup>
   0x00007ffff6a15360 <+512>:   callq  *%rax
...
(gdb) print /x $rax
$1 = 0xfbad248c
(gdb) print &__libc_pthread_functions.ptr__pthread_cleanup_push_defer
$2 = (void (**)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0x7ffff6d3f6f0 <__libc_pthread_functions+368>
(gdb) print __libc_pthread_functions.ptr__pthread_cleanup_push_defer
$3 = (void (*)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0x1bb877ddeda50cb
(gdb) print &_pthread_cleanup_push_defer
$4 = (void (*)(struct _pthread_cleanup_buffer *, void (*)(void *), void *)) 0x7ffff35d0ac0 <_pthread_cleanup_push_defer>
(gdb) stepi
0x00007ffff6a15347      102     in genops.c
(gdb) print /x $rax
$5 = 0x1bb877ddeda50cb
(gdb) stepi
0x00007ffff6a1534a      102     in genops.c
(gdb) stepi
0x00007ffff6a1534c      102     in genops.c
(gdb) print /x $rax
$6 = 0x1bb877ddeda50cb
(gdb) stepi
0x00007ffff6a15350      102     in genops.c
(gdb) print /x $rax
$7 = 0x286580ddc3beef6d
(gdb) stepi
0x00007ffff6a15359      102     in genops.c
(gdb) print /x $rax
$8 = 0x7ffff35d0ac0
(gdb) stepi
0x00007ffff6a15360      102     in genops.c
(gdb) stepi
_pthread_cleanup_push_defer (buffer=0x7fffffffd720, routine=0x7ffff6a14de0 <flush_cleanup>, arg=0x0) at cleanup_defer_compat.c:28
28      cleanup_defer_compat.c: No such file or directory.
(gdb) bt
#0  _pthread_cleanup_push_defer (buffer=0x7fffffffd720, routine=0x7ffff6a14de0 <flush_cleanup>, arg=0x0) at cleanup_defer_compat.c:28
#1  0x00007ffff6a15362 in __GI__IO_link_in (fp=fp at entry=0x5555557b2510) at genops.c:102
#2  0x00007ffff6a13fa2 in _IO_new_file_init_internal (fp=fp at entry=0x5555557b2510) at fileops.c:151
#3  0x00007ffff6a08573 in __fopen_internal (filename=0x5555557b2450 "/home/beckmann/.Xauthority", mode=0x7ffff3e03cb7 "rb", is32=1) at iofopen.c:82
#4  0x00007ffff3e03477 in XauGetBestAuthByAddr () from /usr/lib/x86_64-linux-gnu/libXau.so.6
#5  0x00007ffff4016070 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#6  0x00007ffff40161ed in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#7  0x00007ffff4015d1b in xcb_connect_to_display_with_auth_info () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#8  0x00007ffff6f93e8a in _XConnectXCB () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#9  0x00007ffff6f84bc2 in XOpenDisplay () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#10 0x00005555555563f4 in main (argc=<optimized out>, argv=<optimized out>) at glxgears.c:762
(gdb) info shared
>From                To                  Syms Read   Shared Object Library
0x00007ffff7dd9aa0  0x00007ffff7df5340  Yes         /lib64/ld-linux-x86-64.so.2
0x00007ffff7b8dcc0  0x00007ffff7bb6100  Yes (*)     /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0
0x00007ffff78d96d0  0x00007ffff792bb13  Yes (*)     /usr/lib/x86_64-linux-gnu/libGLU.so.1
0x00007ffff75e8f00  0x00007ffff765e291  Yes (*)     /usr/lib/x86_64-linux-gnu/libGL.so.1
0x00007ffff7297680  0x00007ffff73038da  Yes         /lib/x86_64-linux-gnu/libm.so.6
0x00007ffff6f6fda0  0x00007ffff6ff7434  Yes (*)     /usr/lib/x86_64-linux-gnu/libX11.so.6
0x00007ffff6d43700  0x00007ffff6d4d49f  Yes (*)     /usr/lib/x86_64-linux-gnu/libXext.so.6
0x00007ffff69c0910  0x00007ffff6aea403  Yes         /lib/x86_64-linux-gnu/libc.so.6
0x00007ffff66ae090  0x00007ffff6756b69  Yes         /usr/lib/x86_64-linux-gnu/libstdc++.so.6
0x00007ffff640dac0  0x00007ffff641dde5  Yes         /lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007ffff62079a0  0x00007ffff6209683  Yes (*)     /usr/lib/x86_64-linux-gnu/tls/libnvidia-tls.so.375.82
0x00007ffff4733600  0x00007ffff5816c77  Yes (*)     /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.375.82
0x00007ffff422ed80  0x00007ffff422f94e  Yes         /lib/x86_64-linux-gnu/libdl.so.2
0x00007ffff4011b40  0x00007ffff40239f5  Yes (*)     /usr/lib/x86_64-linux-gnu/libxcb.so.1
0x00007ffff3e03010  0x00007ffff3e03c8c  Yes (*)     /usr/lib/x86_64-linux-gnu/libXau.so.6
0x00007ffff3bfd340  0x00007ffff3bfec48  Yes (*)     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
0x00007ffff39e93d0  0x00007ffff39f65df  Yes (*)     /lib/x86_64-linux-gnu/libbsd.so.0
0x00007ffff37e00e0  0x00007ffff37e2ecf  Yes         /lib/x86_64-linux-gnu/librt.so.1
0x00007ffff35c6ab0  0x00007ffff35d3811  Yes         /lib/x86_64-linux-gnu/libpthread.so.0

So this looks like __libc_pthread_functions is not set up correctly if /etc/ld.so.nohwcap exists
(and several other conditions are fulfilled, as is done with using the nvidia driver)


Andreas



More information about the pkg-nvidia-devel mailing list