Bug 70556 - Xorg Segfaults when certain X apps (Gtk ones?) are invoked
Xorg Segfaults when certain X apps (Gtk ones?) are invoked
Status: NEW
Product: xorg
Classification: Unclassified
Component: Driver/mach64
7.7 (2012.06)
x86 (IA32) Linux (All)
: medium blocker
Assigned To: Xorg Project Team
Xorg Project Team
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-10-17 00:55 UTC by Tom Crane
Modified: 2013-10-26 05:29 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg.0.log logfile and GDB session tarball (11.41 KB, text/plain)
2013-10-17 00:55 UTC, Tom Crane
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Crane 2013-10-17 00:55:51 UTC
Created attachment 87768 [details]
Xorg.0.log logfile and GDB session tarball

The X server segfaults when certain X apps are invoked (eg. the Gimp, Firefox, Thunderbird which all use Gtk).  With simple X apps (eg. xterm, xcalc) there is no problem.

H/W + S/W details:

Distro: Slackware current.

Kernel: 3.9.9

Graphics adapter: SuperMicro X5DPA onboard graphics. Results from lspci,
# lspci -s 01:04.0 -vv
01:04.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Rage XL (rev 27) (prog-if 00 [VGA controller])
        Subsystem: Advanced Micro Devices [AMD] nee ATI Rage XL
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 64 (2000ns min), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
        Region 1: I/O ports at b000 [size=256]
        Region 2: Memory at fe6ff000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at fe6c0000 [disabled] [size=128K]
        Capabilities: [5c] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

Xorg S/W configuration:
# /usr/bin/X -version

X.Org X Server 1.14.3
Release Date: 2013-09-12
X Protocol Version 11, Revision 0
Build Operating System: Slackware 14.1 Slackware Linux Project
Current Operating System: Linux mklab 3.9.9-smp #1 SMP Fri Jul 5 20:07:07 CDT 2013 i686
Kernel command line: auto BOOT_IMAGE=lin-smp-3.9.9 ro root=fd00
Build Date: 15 October 2013  03:19:29AM
 
Current version of pixman: 0.30.2
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.

I have rebuilt the X server from source using the Distro's build scripts but with CFLAGS=-g -O0.  I have no /etc/X11/xorg.conf or /etc/X11/xorg.conf.d files. Xorg is invoked by kdm using '/usr/bin/X -br -novtswitch -quiet :0 vt7 -nolisten tcp -auth /var/run/xauth/A:0-2EbFha'.  Following is the last part of the Xorg.0.log file.  The complete file is included as an attachment.

[399059.006] (EE) 
[399059.006] (EE) Backtrace:
[399059.006] (EE) 0: /usr/bin/X (xorg_backtrace+0x47) [0x822813b]
[399059.006] (EE) 1: /usr/bin/X (0x8048000+0x1e4f95) [0x822cf95]
[399059.006] (EE) 2: linux-gate.so.1 (__kernel_rt_sigreturn+0x0) [0xffffe40c]
[399059.006] (EE) 3: /usr/lib/xorg/modules/drivers/mach64_drv.so (0xb6fff000+0x2cd97) [0xb702bd97]
[399059.006] (EE) 4: /usr/lib/xorg/modules/drivers/mach64_drv.so (0xb6fff000+0x2ce7c) [0xb702be7c]
[399059.006] (EE) 5: /usr/lib/xorg/modules/libexa.so (0xb6647000+0x104e1) [0xb66574e1]
[399059.006] (EE) 6: /usr/lib/xorg/modules/libexa.so (0xb6647000+0x10c50) [0xb6657c50]
[399059.006] (EE) 7: /usr/lib/xorg/modules/libexa.so (0xb6647000+0xdd14) [0xb6654d14]
[399059.006] (EE) 8: /usr/lib/xorg/modules/libexa.so (0xb6647000+0xe640) [0xb6655640]
[399059.006] (EE) 9: /usr/bin/X (0x8048000+0x1483c8) [0x81903c8]
[399059.006] (EE) 10: /usr/bin/X (CompositeGlyphs+0xaa) [0x817cbb1]
[399059.007] (EE) 11: /usr/bin/X (0x8048000+0x13f25b) [0x818725b]
[399059.007] (EE) 12: /usr/bin/X (0x8048000+0x140c5c) [0x8188c5c]
[399059.007] (EE) 13: /usr/bin/X (0x8048000+0x2afd6) [0x8072fd6]
[399059.007] (EE) 14: /usr/bin/X (0x8048000+0x1d23a) [0x806523a]
[399059.007] (EE) 15: /lib/libc.so.6 (__libc_start_main+0xf3) [0xb713f7a3]
[399059.007] (EE) 16: /usr/bin/X (0x8048000+0x1cb61) [0x8064b61]
[399059.007] (EE) 
[399059.007] (EE) Segmentation fault at address 0xc
[399059.007] (EE) 
Fatal server error:
[399059.007] (EE) Caught signal 11 (Segmentation fault). Server aborting
[399059.007] (EE) 
[399059.007] (EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
[399059.007] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[399059.007] (EE) 
[399059.023] (EE) Server terminated with error (1). Closing log file.

Gdb debugging session: Attaching gdb to the running /usr/bin/X process and starting the Gimp to trigger the segfault reveals more information.  Please see the attached file.

Please let me know if any other information is needed.

Thanks for your help.
Tom Crane.
Comment 1 Tom Crane 2013-10-18 20:14:07 UTC
I have discovered that enabling the xorg.conf option "ExaNoComposite" as noted at https://wiki.archlinux.org/index.php/mach64 provides a workaround and avoids the segfault triggered previously by X apps such as the Gimp.

Tom Crane
Comment 2 Tom Crane 2013-10-26 05:25:23 UTC
Some further investigation with gdb: 

The problems at xf86-video-mach64-6.9.4/src/atimach64render.c,

Mach64CheckTexture(PicturePtr pPict)
{
    int w = pPict->pDrawable->width;

occurs when pPict->pDrawable == NULL, the final pointer dereference pPict->pDrawable->width then causes the segfault.

I found the patch at http://lists.x.org/archives/xorg-devel/2013-June/036430.html
is a workaround and allows the xorg.conf ExaNoComposite option to be turned off and my brief initial tests gave much improved accelerated graphics performance and no more segfaults.

Could I request the patch be incorporated into the next release?

Thanks
Tom Crane.
Comment 3 Alan Coopersmith 2013-10-26 05:29:51 UTC
That patch has already been pushed to git master for the next release:
http://cgit.freedesktop.org/xorg/driver/xf86-video-mach64/commit/?id=2c83b465b336a012f2d2716940bf483358388000