[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#969739: Segmentation fault on startup



Dear Maintainer,
I could not reproduce the crash, but I could modify the process under
gdb to reach a point of execution, which prints a similar backtrace.

Therefore I guess the crash described in Christophe's first message
is really located in [1], caused by "xf86_platform_devices[i].pdev"
containing a null pointer.

[1] https://sources.debian.org/src/xorg-server/2:1.20.9-1/hw/xfree86/common/xf86platformBus.c/#L367


But second and more fundamentally, I guess too that the backtrace
generating function in Xorg seems not to be reliable.

If I am right the following backtraces should show the same addresses, but for
some reason the Xorg output seems to be kind of misleading on some frames.
Would that be worth to track in a separate bug?

Kind regards,
Bernhard

With debug symbols:
    #0  0x000055555560ae10 in xf86MergeOutputClassOptions () at ../../../../../../hw/xfree86/common/xf86platformBus.c:367
    #1  0x00005555555ee197 in xf86CollectOptions () at ../../../../../../hw/xfree86/common/xf86Option.c:83
    #2  0x00007ffff6993d2e in PreInit () at ../../../../../../../hw/xfree86/drivers/modesetting/driver.c:972
    #3  0x00005555555f185e in InitOutput () at ../../../../../../hw/xfree86/common/xf86Init.c:522
    #4  0x00005555555b331c in dix_main () at ../../../../dix/main.c:193
    #5  0x00007ffff72dbcca in __libc_start_main () at ../csu/libc-start.c:308
    #6  0x000055555559cc9a in _start ()

Without debug symbols:
    #0  0x000055555560ae10 in ?? ()
    #1  0x00005555555ee197 in xf86CollectOptions ()
    #2  0x00007ffff6993d2e in ?? () from /usr/lib/xorg/modules/drivers/modesetting_drv.so
    #3  0x00005555555f185e in InitOutput ()
    #4  0x00005555555b331c in ?? ()
    #5  0x00007ffff72dbcca in __libc_start_main () at ../csu/libc-start.c:308
    #6  0x000055555559cc9a in _start ()

>From Xorg:
    (EE) Backtrace:
    (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x135) [0x555555712f35]
    (EE) 1: /lib/x86_64-linux-gnu/libpthread.so.0 (funlockfile+0x50) [0x7ffff749018f]
    (EE) 2: /usr/lib/xorg/Xorg (xf86PlatformMatchDriver+0x5c0) [0x55555560b2b0]
    (EE) 3: /usr/lib/xorg/Xorg (xf86CollectOptions+0x77) [0x5555555ee197]
    (EE) unw_get_proc_name failed: no unwind info found [-10]
    (EE) 4: /usr/lib/xorg/modules/drivers/modesetting_drv.so (?+0x0) [0x7ffff6993940]
    (EE) 5: /usr/lib/xorg/Xorg (InitOutput+0x9ae) [0x5555555f185e]
    (EE) 6: /usr/lib/xorg/Xorg (InitFonts+0x1cc) [0x5555555b335c]
    (EE) 7: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xea) [0x7ffff72dbcca]
    (EE) 8: /usr/lib/xorg/Xorg (_start+0x2a) [0x55555559cc9a]
    (EE) 
    (EE) Segmentation fault at address 0x124
# Unstable amd64 qemu VM 2020-09-23

apt update
apt dist-upgrade


apt install systemd-coredump gdb xserver-xorg xterm openbox


/usr/bin/Xorg








root@debian:~# gdb -q -ex 'set width 0' -ex 'set pagination off' -ex 'display/i $pc' -ex 'b *xf86MergeOutputClassOptions+31' -ex 'run' -ex 'print/x $edx' -ex 'set $edx = 1' -ex 'b *xf86MergeOutputClassOptions+288' -ex 'cont' -ex 'print/x $rdx' -ex 'set $rdx=0' -ex 'generate-core /tmp/xorg-core' -ex 'bt' -ex 'detach' -ex 'quit' --args /usr/lib/xorg/Xorg 
Reading symbols from /usr/lib/xorg/Xorg...
Reading symbols from /usr/lib/debug/.build-id/86/86f2627d86f090b258bc6477b49359b2475a83.debug...
1: x/i $pc
<error: No registers.>
Breakpoint 1 at 0xb6d0f: file ../../../../../../hw/xfree86/common/xf86platformBus.c, line 361.
Starting program: /usr/lib/xorg/Xorg 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.19.0-10-amd64 x86_64 Debian
Current Operating System: Linux debian 5.8.0-1-amd64 #1 SMP Debian 5.8.7-1 (2020-09-05) x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.8.0-1-amd64 root=UUID=c9e90f0f-a043-45af-bda9-4a7fb7b42490 ro quiet
Build Date: 31 August 2020  03:49:48PM
xorg-server 2:1.20.9-1 (https://www.debian.org/support) 
Current version of pixman: 0.36.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Wed Sep 23 22:02:12 2020
(==) Using system config directory "/usr/share/X11/xorg.conf.d"

Breakpoint 1, 0x000055555560ad0f in xf86MergeOutputClassOptions (entityIndex=0, options=options@entry=0x555555800f90) at ../../../../../../hw/xfree86/common/xf86platformBus.c:361
361     ../../../../../../hw/xfree86/common/xf86platformBus.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x55555560ad0f <xf86MergeOutputClassOptions+31>:     cmp    $0x1,%edx
$1 = 0x3
Breakpoint 2 at 0x55555560ae10: file ../../../../../../hw/xfree86/common/xf86platformBus.c, line 367.
Continuing.

Breakpoint 2, 0x000055555560ae10 in xf86MergeOutputClassOptions (entityIndex=<optimized out>, options=options@entry=0x555555800f90) at ../../../../../../hw/xfree86/common/xf86platformBus.c:367
367     in ../../../../../../hw/xfree86/common/xf86platformBus.c
1: x/i $pc
=> 0x55555560ae10 <xf86MergeOutputClassOptions+288>:    cmp    %ecx,0x124(%rdx)
$2 = 0x5555557f6fe0
Saved corefile /tmp/xorg-core
#0  0x000055555560ae10 in xf86MergeOutputClassOptions (entityIndex=<optimized out>, options=options@entry=0x555555800f90) at ../../../../../../hw/xfree86/common/xf86platformBus.c:367
#1  0x00005555555ee197 in xf86CollectOptions (pScrn=pScrn@entry=0x555555800c10, extraOpts=extraOpts@entry=0x0) at ../../../../../../hw/xfree86/common/xf86Option.c:83
#2  0x00007ffff6993d2e in PreInit (pScrn=0x555555800c10, flags=<optimized out>) at ../../../../../../../hw/xfree86/drivers/modesetting/driver.c:972
#3  0x00005555555f185e in InitOutput (pScreenInfo=pScreenInfo@entry=0x5555557b4080 <screenInfo>, argc=argc@entry=1, argv=argv@entry=0x7fffffffed08) at ../../../../../../hw/xfree86/common/xf86Init.c:522
#4  0x00005555555b331c in dix_main (argc=1, argv=0x7fffffffed08, envp=<optimized out>) at ../../../../dix/main.c:193
#5  0x00007ffff72dbcca in __libc_start_main (main=0x55555559cc60 <main>, argc=1, argv=0x7fffffffed08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffecf8) at ../csu/libc-start.c:308
#6  0x000055555559cc9a in _start ()
Detaching from program: /usr/lib/xorg/Xorg, process 17331
[Inferior 1 (process 17331) detached]
(EE) 
(EE) Backtrace:
(EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x135) [0x555555712f35]
(EE) 1: /lib/x86_64-linux-gnu/libpthread.so.0 (funlockfile+0x50) [0x7ffff749018f]
(EE) 2: /usr/lib/xorg/Xorg (xf86PlatformMatchDriver+0x5c0) [0x55555560b2b0]
(EE) 3: /usr/lib/xorg/Xorg (xf86CollectOptions+0x77) [0x5555555ee197]
(EE) unw_get_proc_name failed: no unwind info found [-10]
(EE) 4: /usr/lib/xorg/modules/drivers/modesetting_drv.so (?+0x0) [0x7ffff6993940]
(EE) 5: /usr/lib/xorg/Xorg (InitOutput+0x9ae) [0x5555555f185e]
(EE) 6: /usr/lib/xorg/Xorg (InitFonts+0x1cc) [0x5555555b335c]
(EE) 7: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xea) [0x7ffff72dbcca]
(EE) 8: /usr/lib/xorg/Xorg (_start+0x2a) [0x55555559cc9a]
(EE) 
(EE) Segmentation fault at address 0x124
(EE) 
Fatal server error:
(EE) Caught signal 11 (Segmentation fault). Server aborting
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.
root@debian:~# 







root@debian:~# dpkg --purge xserver-xorg-core-dbgsym
(Lese Datenbank ... 51267 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von xserver-xorg-core-dbgsym (2:1.20.9-1) ...


root@debian:~# gdb -q /usr/lib/xorg/Xorg --core /tmp/xorg-core
Reading symbols from /usr/lib/xorg/Xorg...
(No debugging symbols found in /usr/lib/xorg/Xorg)
[New LWP 17331]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/xorg/Xorg'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  0x000055555560ae10 in ?? ()
(gdb) set pagination off
(gdb) set width 0
(gdb) display /i $pc
1: x/i $pc
=> 0x55555560ae10:      cmp    %ecx,0x124(%rdx)
(gdb) bt
#0  0x000055555560ae10 in ?? ()
#1  0x00005555555ee197 in xf86CollectOptions ()
#2  0x00007ffff6993d2e in ?? () from /usr/lib/xorg/modules/drivers/modesetting_drv.so
#3  0x00005555555f185e in InitOutput ()
#4  0x00005555555b331c in ?? ()
#5  0x00007ffff72dbcca in __libc_start_main (main=0x55555559cc60, argc=1, argv=0x7fffffffed08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffecf8) at ../csu/libc-start.c:308
#6  0x000055555559cc9a in _start ()
(gdb) q







root@debian:~# apt install xserver-xorg-core-dbgsym 

root@debian:~# gdb -q /usr/lib/xorg/Xorg --core /tmp/xorg-core
Reading symbols from /usr/lib/xorg/Xorg...
Reading symbols from /usr/lib/debug/.build-id/86/86f2627d86f090b258bc6477b49359b2475a83.debug...
[New LWP 17331]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/xorg/Xorg'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  0x000055555560ae10 in xf86MergeOutputClassOptions (entityIndex=<optimized out>, options=options@entry=0x555555800f90) at ../../../../../../hw/xfree86/common/xf86platformBus.c:367
367     ../../../../../../hw/xfree86/common/xf86platformBus.c: Datei oder Verzeichnis nicht gefunden.
(gdb) set width 0
(gdb) set pagination off
(gdb) display/i $pc
1: x/i $pc
=> 0x55555560ae10 <xf86MergeOutputClassOptions+288>:    cmp    %ecx,0x124(%rdx)
(gdb) bt
#0  0x000055555560ae10 in xf86MergeOutputClassOptions (entityIndex=<optimized out>, options=options@entry=0x555555800f90) at ../../../../../../hw/xfree86/common/xf86platformBus.c:367
#1  0x00005555555ee197 in xf86CollectOptions (pScrn=pScrn@entry=0x555555800c10, extraOpts=extraOpts@entry=0x0) at ../../../../../../hw/xfree86/common/xf86Option.c:83
#2  0x00007ffff6993d2e in PreInit (pScrn=0x555555800c10, flags=<optimized out>) at ../../../../../../../hw/xfree86/drivers/modesetting/driver.c:972
#3  0x00005555555f185e in InitOutput (pScreenInfo=pScreenInfo@entry=0x5555557b4080 <screenInfo>, argc=argc@entry=1, argv=argv@entry=0x7fffffffed08) at ../../../../../../hw/xfree86/common/xf86Init.c:522
#4  0x00005555555b331c in dix_main (argc=1, argv=0x7fffffffed08, envp=<optimized out>) at ../../../../dix/main.c:193
#5  0x00007ffff72dbcca in __libc_start_main (main=0x55555559cc60 <main>, argc=1, argv=0x7fffffffed08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffecf8) at ../csu/libc-start.c:308
#6  0x000055555559cc9a in _start ()
(gdb) print xf86_platform_devices
$1 = (struct xf86_platform_device *) 0x5555557f5ae0
(gdb) print xf86_platform_devices[i]
$2 = {attribs = 0x5555557f5a20, pdev = 0x5555557f6fe0, flags = 0}
(gdb) print xf86_platform_devices[i].pdev
$3 = (struct pci_device *) 0x5555557f6fe0








https://sources.debian.org/src/xorg-server/2:1.20.9-1/hw/xfree86/common/xf86platformBus.c/#L367

Reply to: