Bug 55980

Summary: X Segfault on second screen resize
Product: xorg Reporter: Ge@@ru <geaaru>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: critical    
Priority: medium CC: geaaru
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Ge@@ru 2012-10-14 21:23:23 UTC
Hi, 
with last kernel 3.x I have a segfault of X server (v. 1.13.0).
When i start X (on kde4 or gnome3 environment) all start correctly. I have a CRT monitor that support 1600x1200 resolution. Through these steps i have always segfault:
1. X started with a resolution of 1600x1200
2. Change resolution to 1280x1024 (here resolution change correctly)
3. Change resolution to 1600x1200 (here Segfault)

resize called 1600 1200
resize called 1280 1024
resize called 1600 1200
(EE) 
(EE) Backtrace:
(EE) 0: /usr/bin/X (xorg_backtrace+0x36) [0x577a6e]
(EE) 1: /usr/bin/X (0x400000+0x17b429) [0x57b429]
(EE) 2: /lib64/libpthread.so.0 (0x7fb3af392000+0xef30) [0x7fb3af3a0f30]
(EE) 3: /lib64/libc.so.6 (0x7fb3ae01a000+0x1230f0) [0x7fb3ae13d0f0]
(EE) 4: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0x5b75) [0x7fb3ac3fab75]
(EE) 5: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0x5eb4) [0x7fb3ac3faeb4]
(EE) 6: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0x87f0) [0x7fb3ac3fd7f0]
(EE) 7: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0x10c3e) [0x7fb3ac405c3e]
(EE) 8: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0x12692) [0x7fb3ac407692]
(EE) 9: /usr/lib64/xorg/modules/libexa.so (0x7fb3ac3f5000+0xb803) [0x7fb3ac400803]
(EE) 10: /usr/bin/X (0x400000+0x168a80) [0x568a80]
(EE) 11: /usr/bin/X (0x400000+0xb8fff) [0x4b8fff]
(EE) 12: /usr/bin/X (0x400000+0x31c5e) [0x431c5e]
(EE) 13: /usr/bin/X (0x400000+0x345eb) [0x4345eb]
(EE) 14: /usr/bin/X (0x400000+0x248fa) [0x4248fa]
(EE) 15: /lib64/libc.so.6 (__libc_start_main+0xec) [0x7fb3ae038ae8]
(EE) 16: /usr/bin/X (0x400000+0x24489) [0x424489]
(EE) 
(EE) Segmentation fault at address 0x8

Fatal server error:
Caught signal 11 (Segmentation fault). Server aborting

Same segfault happens if I leave my computer on poweron but with monitor on poweroff. When i poweron monitor screen resolution automatically go to 1024x768 and then when i try to restore 1600x1200 resolution I have same segfault.

Hereinafter same informations about my env:

# uname -a
Linux golia2 3.6.0-rc6+ #1 SMP PREEMPT Sat Sep 29 11:29:58 CEST 2012 x86_64 Pentium(R) Dual-Core CPU E5200 @ 2.50GHz GenuineIntel GNU/Linux

# lspci | grep VGA  
01:00.0 VGA compatible controller: NVIDIA Corporation G92 [GeForce GTS 250] (rev a2)

Mesa-9.0 and libdrm 2.4.39.

This error happens with both vanilla kernel or nouveau-kernel from git.

How can i help you to fix this bug ?
Comment 1 Ge@@ru 2012-10-14 21:28:09 UTC
Missing... 
When X go to segfault my monitor go to poweroff and only a reboot permit to return to a normal status.
Comment 2 Ge@@ru 2012-10-14 22:31:36 UTC
With gdb problem is happens after 5/6 resolutions change (I thinks that could be relative to a delay required on driver to do this syscall).
However, after these resize this is gdb backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007f46ee14f860 in ?? () from /lib64/libc.so.6
(gdb) bt
#0  0x00007f46ee14f860 in ?? () from /lib64/libc.so.6
#1  0x00007f46ec40eb75 in exaMemcpyBox (pbox=<optimized out>, src=<optimized out>, src_pitch=448, dst=<optimized out>, dst_pitch=436, 
    pPixmap=<optimized out>) at /usr/include/bits/string3.h:52
#2  0x00007f46ec40eeb4 in exaCopyDirty (migrate=<optimized out>, pValidDst=0x1e6b8e0, pValidSrc=0x1e6b8f0, transfer=0x7f46eceb9513, fallback_index=1, 
    sync=0x7f46ec40d9c0 <exaWaitSync>) at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/exa/exa_migration_classic.c:240
#3  0x00007f46ec4117f0 in exaPrepareAccessReg_mixed (pPixmap=0x1e6b840, index=<optimized out>, pReg=0x0)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/exa/exa_migration_mixed.c:254
#4  0x00007f46ec41afe5 in ExaCheckPolyFillRect (pDrawable=0x20a7cc0, pGC=0x1b3e8d0, nrect=1, prect=0x200ad40)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/exa/exa_unaccel.c:311
#5  0x00007f46ec41455c in exaPolyFillRect (pDrawable=0x20a7cc0, pGC=0x1b3e8d0, nrect=1, prect=0x200ad40)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/exa/exa_accel.c:849
#6  0x00000000005057e7 in damagePolyFillRect (pDrawable=0x20a7cc0, pGC=0x1b3e8d0, nRects=1, pRects=0x200ad40)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/miext/damage/damage.c:1250
#7  0x000000000055ad9c in miPaintWindow (pWin=<optimized out>, prgn=<optimized out>, what=<optimized out>)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/mi/miexpose.c:641
#8  0x000000000055b01f in miWindowExposures (pWin=0x20a7cc0, prgn=0x22853c0, other_exposed=0x0)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/mi/miexpose.c:470
#9  0x0000000000487472 in xf86XVWindowExposures (pWin=0x20a7cc0, reg1=0x22853c0, reg2=<optimized out>)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/hw/xfree86/common/xf86xv.c:1171
#10 0x0000000000570756 in miHandleValidateExposures (pWin=0x1b3ea60)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/mi/miwindow.c:223
#11 0x0000000000461274 in SetRootClip (pScreen=0x1ad5230, enable=0)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/dix/window.c:3649
#12 0x00007f46ec40b9df in exaXorgEnableDisableFBAccess (pScrn=0x1ac93b0, enable=0)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/hw/xfree86/exa/examodule.c:100
#13 0x00000000004b0293 in xf86CursorEnableDisableFBAccess (pScrn=0x1ac93b0, enable=0)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/hw/xfree86/ramdac/xf86Cursor.c:226
#14 0x000000000046f2c5 in xf86VTSwitch () at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/hw/xfree86/common/xf86Events.c:441
#15 xf86Wakeup (blockData=<optimized out>, err=<optimized out>, pReadmask=<optimized out>)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/hw/xfree86/common/xf86Events.c:285
#16 0x0000000000438597 in WakeupHandler (result=1, pReadmask=0x80ea60)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/dix/dixutils.c:423
#17 0x0000000000575477 in WaitForSomething (pClientsReady=0x1c94740)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/os/WaitFor.c:224
#18 0x0000000000434339 in Dispatch () at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/dix/dispatch.c:357
#19 0x00000000004248fa in main (argc=10, argv=<optimized out>, envp=<optimized out>)
    at /var/tmp/portage/x11-base/xorg-server-1.13.0/work/xorg-server-1.13.0/dix/main.c:295
Comment 3 Marcin Slusarz 2012-10-15 17:23:17 UTC
It looks more like xserver bug. Because of zero appearance of Nouveau in the callchain it's not certain you are using Nouveau...
Please follow instructions from http://nouveau.freedesktop.org/wiki/Bugs#HowToReport and attach dmesg and xorg logs.
Comment 4 Ge@@ru 2012-10-29 11:00:27 UTC
Hi,

I confirm that with xorg-server-1.12.4 this doesn't happens.
I move bug to Server/Acceleration/EXA.

Thanks for reply.

Bye

geaaru
Comment 5 Michel Dänzer 2012-10-29 12:29:04 UTC
Can you bisect xserver? Note that you may need to rebuild the drivers against xserver after each bisection step.
Comment 6 Ge@@ru 2012-12-23 13:43:01 UTC
Hi, i do other test about this problem and I found that problem is relative to kernel nouveau driver and not to X.

I test this with different xorg-server versions:
- 1.12.4,
- 1.13.0
- 1.13.1 (current installed version)

and with xf86-video-nouveau:

- 1.0.1
- 1.0.2
- 1.0.3
- 1.0.4

and with different kernel:

- 3.7.0
- 3.6.8
- 3.6.4
- 3.5.7
- 3.4.24
- 3.2.35
- 3.0.17

With my test i see that only with 3.0.17 and 3.2.35 all works fine.

I'm sure that problems is on kernel driver.

Are there big changes between 3.2.35 and > 3.4 for nouveau kernel driver ?

I move this bug again to nouveau/driver but I'm not sure that is right. Sorry if is wrong.

Thanks
Comment 7 Ilia Mirkin 2013-08-24 01:59:49 UTC
Can you confirm whether this still happens with the latest kernel/xf86-video-nouveau/Xorg? If so, please provide a complete dmesg and Xorg.0.log after the issue happens.
Comment 8 Ilia Mirkin 2013-09-26 23:09:48 UTC
No response to re-test request in over a month. Closing as invalid.
Comment 9 Ge@@ru 2013-09-27 08:01:02 UTC
Sorry for delay.

I test with last driver and seems that segfault doesn't happens. But I see that resolution change automatically if a leave screen off. But probably could be relative to a wrong EDID message from my old CRT monitor.
So, we can consider resolved this issue.

Thank you very much for support.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.