Ubuntu

[12.04 Xorg, xserver 1.11.3] Dual monitor, after entering password, mouse pointer stuck on LHS of screen, no desktop.

Reported by Manoj Iyer on 2012-01-24
180
This bug affects 38 people
Affects Status Importance Assigned to Milestone
X.Org X server
Fix Released
High
xorg-server (Ubuntu)
High
Unassigned
Precise
High
Timo Aaltonen

Bug Description

[IMPACT]
infinite loop in the server in certain situations

[TESTCASE]
- create a device with REL_HWHEEL and ABS_X and ABS_Y. evdev 2.7.0 will set
  that up as device with 1 relative axis
- move pointer to VGA1
- xrandr --output VGA1 --off

[Regression Potential]
the fix was posted on Apr 27th, and was included in upstream 1.12.2 bugfix release on May 29th, so there should be little regression potential

--

Upgraded 1/24 (11:00 AM Central), reboot, and after entering user password I can see the splash screen and the mouse pointer stuck to the left hand side of the right monitor, there is no pointer on the left monitor.... Looking into xorg log files I see several BUG: being reported.

[ 20.436] BUG: triggered 'if (dev->valuator->numAxes < 2)'
BUG: ../../dix/getevents.c:848 in scale_to_desktop()
[ 20.436]
Backtrace:
[ 20.436] 0: /usr/bin/X (xorg_backtrace+0x26) [0x7f0cc96b6126]
[ 20.436] 1: /usr/bin/X (0x7f0cc952f000+0x62326) [0x7f0cc9591326]
[ 20.436] 2: /usr/bin/X (0x7f0cc952f000+0x62925) [0x7f0cc9591925]
[ 20.436] 3: /usr/bin/X (GetPointerEvents+0x103) [0x7f0cc9592cc3]
[ 20.436] 4: /usr/bin/X (0x7f0cc952f000+0x171986) [0x7f0cc96a0986]
[ 20.436] 5: /usr/bin/X (miPointerWarpCursor+0xe7) [0x7f0cc96a0e07]
[ 20.436] 6: /usr/bin/X (0x7f0cc952f000+0x86971) [0x7f0cc95b5971]
[ 20.436] 7: /usr/bin/X (0x7f0cc952f000+0x17235c) [0x7f0cc96a135c]
[ 20.436] 8: /usr/bin/X (0x7f0cc952f000+0x110d13) [0x7f0cc963fd13]
[ 20.437] 9: /usr/bin/X (0x7f0cc952f000+0xfbbfe) [0x7f0cc962abfe]
[ 20.437] 10: /usr/bin/X (RRPointerScreenConfigured+0x75) [0x7f0cc962ae25]
[ 20.437] 11: /usr/bin/X (RRTellChanged+0x11b) [0x7f0cc96245cb]
[ 20.437] 12: /usr/bin/X (RRCrtcSet+0x353) [0x7f0cc9625703]
[ 20.437] 13: /usr/bin/X (ProcRRSetCrtcConfig+0x3f3) [0x7f0cc96266a3]
[ 20.437] 14: /usr/bin/X (0x7f0cc952f000+0x4e411) [0x7f0cc957d411]
[ 20.437] 15: /usr/bin/X (0x7f0cc952f000+0x3d33a) [0x7f0cc956c33a]
[ 20.437] 16: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xed) [0x7f0cc777d30d]
[ 20.437] 17: /usr/bin/X (0x7f0cc952f000+0x3d62d) [0x7f0cc956c62d]
[ 20.437] BUG: triggered 'if (dev->valuator->numAxes < 2)'
BUG: ../../dix/getevents.c:848 in scale_to_desktop()

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: xorg (not installed)
ProcVersionSignature: Ubuntu 3.2.0-10.18-generic 3.2.1
Uname: Linux 3.2.0-10-generic x86_64
ApportVersion: 1.91-0ubuntu1
Architecture: amd64
CompizPlugins: [core,bailer,detection,composite,opengl,compiztoolbox,decor,gnomecompat,move,place,regex,snap,grid,resize,session,vpswitch,imgpng,mousepoll,animation,wall,workarounds,unitymtgrabhandles,expo,fade,ezoom,scale,unityshell]
Date: Tue Jan 24 15:43:56 2012
DistUpgraded: Log time: 2012-01-18 18:59:37.896423
DistroCodename: precise
DistroVariant: ubuntu
EcryptfsInUse: Yes
ExtraDebuggingInterest: Yes, whatever it takes to get this fixed in Ubuntu
GraphicsCard:
 Intel Corporation Core Processor Integrated Graphics Controller [8086:0042] (rev 18) (prog-if 00 [VGA controller])
   Subsystem: Intel Corporation Device [8086:4d54]
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release amd64 (20111012)
MachineType: Intel Corp. Intel(R) UDK2010 firmware developer platform
ProcEnviron:
 PATH=(custom, user)
 LANG=en_US.UTF-8
 SHELL=/bin/bash
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.2.0-10-generic root=UUID=cd65b907-5a6a-4c86-952b-764b9ee71705 ro quiet splash vt.handoff=7
SourcePackage: xorg
UpgradeStatus: Upgraded to precise on 2012-01-19 (5 days ago)
dmi.bios.date: 01/01/2011
dmi.bios.vendor: Intel Corp.
dmi.bios.version: SDV.TM.B6 Release Build (CSM)
dmi.chassis.asset.tag: Chassis Asset Tag
dmi.chassis.type: 3
dmi.chassis.vendor: Chassis Manufacturer
dmi.chassis.version: Chassis Version
dmi.modalias: dmi:bvnIntelCorp.:bvrSDV.TM.B6ReleaseBuild(CSM):bd01/01/2011:svnIntelCorp.:pnIntel(R)UDK2010firmwaredeveloperplatform:pvr1.0:cvnChassisManufacturer:ct3:cvrChassisVersion:
dmi.product.name: Intel(R) UDK2010 firmware developer platform
dmi.product.version: 1.0
dmi.sys.vendor: Intel Corp.
version.compiz: compiz 1:0.9.6+bzr20110929-0ubuntu8
version.ia32-libs: ia32-libs N/A
version.libdrm2: libdrm2 2.4.30-1ubuntu1
version.libgl1-mesa-dri: libgl1-mesa-dri 7.11-0ubuntu4
version.libgl1-mesa-dri-experimental: libgl1-mesa-dri-experimental N/A
version.libgl1-mesa-glx: libgl1-mesa-glx 7.11-0ubuntu4
version.xserver-xorg-core: xserver-xorg-core 2:1.11.3-0ubuntu8
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev 1:2.6.99.901-1ubuntu2
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:6.14.99~git20111219.aacbd629-0ubuntu1
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.17.0-1ubuntu3
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:0.0.16+git20111201+b5534a1-1build2

Manoj Iyer (manjo) wrote :
Changed in xorg (Ubuntu):
assignee: nobody → Robert Hooker (sarvatt)
importance: Undecided → Critical
Bryce Harrington (bryce) on 2012-01-24
summary: - [12.04 Xorg] Dual monitor, after entering passoword, mouse pointer stuck
+ [12.04 Xorg] Dual monitor, after entering password, mouse pointer stuck
on LHS of screen, no desktop.
description: updated
summary: - [12.04 Xorg] Dual monitor, after entering password, mouse pointer stuck
- on LHS of screen, no desktop.
+ [12.04 Xorg, xserver 1.11.3] Dual monitor, after entering password,
+ mouse pointer stuck on LHS of screen, no desktop.
affects: xorg (Ubuntu) → xorg-server (Ubuntu)
Robert Hooker (sarvatt) wrote :

xserver-xorg-input-evdev with the fix is building in this PPA

https://launchpad.net/~sarvatt/+archive/sru1/+packages

Bryce Harrington (bryce) wrote :

Please collect a full backtrace on this crash - see http://wiki.ubuntu.com/X/Backtracing for guidance.

Changed in xorg-server (Ubuntu):
importance: Critical → High
status: New → Incomplete
Manoj Iyer (manjo) wrote :

Just tested the http://koti.kapsi.fi/~tjaalton/tmp/xserver-xorg-input-evdev_2.6.99.901-1ubuntu3~lp921236_amd64.deb from tjaalton and that fixed the problem. Great job guys.. thanks.

Bryce Harrington (bryce) on 2012-01-25
Changed in xorg-server (Ubuntu):
assignee: Robert Hooker (sarvatt) → Timo Aaltonen (tjaalton)
status: Incomplete → In Progress
Robert Hooker (sarvatt) wrote :

Fix is already released

xserver-xorg-input-evdev (1:2.6.99.901-1ubuntu3) precise; urgency=low

  * Add 100-evdev-force-x-y-axes.patch: Fixes lp: #921236

Date: Tue, 24 Jan 2012 16:58:43 -0500
Changed-By: Robert Hooker <sarvatt at ubuntu.com>
Maintainer: Ubuntu X-SWAT <ubuntu-x at lists.ubuntu.com>
Signed-By: Chris Halse Rogers <raof at ubuntu.com>
https://launchpad.net/ubuntu/precise/+source/xserver-xorg-input-evdev/1:2.6.99.901-1ubuntu3

affects: xorg-server (Ubuntu) → xserver-xorg-input-evdev (Ubuntu)
Changed in xserver-xorg-input-evdev (Ubuntu):
assignee: Timo Aaltonen (tjaalton) → Robert Hooker (sarvatt)
status: In Progress → Fix Released
Andrzej Jarmoniuk (ajarmoniuk) wrote :

Just upgraded to 12.04 beta 1. Same bug.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

System halts with black screen, unable to kill X server, unable to switch to console. Only Magic SysRq worked.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

any chance this will be fixed for beta2?

Created attachment 58374
Xorg log

I have Archlinux (linux-3.2.9) running on Radeon 4550 using radeon with xf86-video-ati 6.14.3, xorg 1.12 and mesa 8.0.1.
I have two monitors attached using DVI (Dell 2408WFP) and HDMI (Toshiba TV).

While running
xrandr --output HDMI-0 --auto
xrandr --output HDMI-0 --below DVI-0
Xorg hangs.
Here is the Xorg.0.log (full log is attached):

[ 730.765] BUG: triggered 'if (!dev->valuator || dev->valuator->numAxes < 2)'
[ 730.765] BUG: getevents.c:843 in scale_to_desktop()
[ 730.765]
[ 730.765] Backtrace:
[ 730.765] 0: /usr/bin/X (xorg_backtrace+0x34) [0x5684f4]
[ 730.765] 1: /usr/bin/X (0x400000+0x471e4) [0x4471e4]
[ 730.765] 2: /usr/bin/X (0x400000+0x47db5) [0x447db5]
[ 730.765] 3: /usr/bin/X (GetPointerEvents+0x352) [0x449452]
[ 730.765] 4: /usr/bin/X (0x400000+0x152c56) [0x552c56]
[ 730.766] 5: /usr/bin/X (miPointerWarpCursor+0xce) [0x55308e]
[ 730.766] 6: /usr/bin/X (0x400000+0x6c532) [0x46c532]
[ 730.766] 7: /usr/bin/X (0x400000+0x15357e) [0x55357e]
[ 730.766] 8: /usr/bin/X (0x400000+0xf3841) [0x4f3841]
[ 730.766] 9: /usr/bin/X (0x400000+0xdf2ee) [0x4df2ee]
[ 730.766] 10: /usr/bin/X (RRPointerScreenConfigured+0x75) [0x4df535]
[ 730.766] 11: /usr/bin/X (RRTellChanged+0x122) [0x4d9282]
[ 730.766] 12: /usr/bin/X (RRCrtcSet+0x33d) [0x4da41d]
[ 730.766] 13: /usr/bin/X (ProcRRSetCrtcConfig+0x3b3) [0x4db273]
[ 730.767] 14: /usr/bin/X (0x400000+0x33cf9) [0x433cf9]
[ 730.767] 15: /usr/bin/X (0x400000+0x2319a) [0x42319a]
[ 730.767] 16: /lib/libc.so.6 (__libc_start_main+0xed) [0x2ba545a7a38d]
[ 730.767] 17: /usr/bin/X (0x400000+0x234bd) [0x4234bd]

The same behaviour is seen using xf86-video-ati-git and xorg-git.

If "--below" is changed to some other "direction" it makes no difference. But It hangs only when the screens are positioned nearby, but not when showing the same area (1920x1200 on Dell and 1920x1080 on Toshiba).

Michael Helmling (supermihi) wrote :

I am having a very similar problem on Arch Linux: Since upgrading xorg-intel driver from 2.7 to 2.8, the X server does not start when an external monitor is connected to my laptop, and some segfault message appears in Xorg.0.log. Downgrading to 2.7 again "solved" the issue.

Created attachment 58539
Xorg log file

After upgrading intel drivers from 7.11 to 8.0 on Arch Linux, the X server crashes on start if two monitors are connected (laptop plus external screen), with this in the log:

[ 9.047]
[ 9.047] Backtrace:
[ 9.047] 0: /usr/bin/Xorg (xorg_backtrace+0x34) [0x567da4]
[ 9.047] 1: /usr/bin/Xorg (0x400000+0x16b8b9) [0x56b8b9]
[ 9.047] 2: /lib/libpthread.so.0 (0x7ff74f24f000+0xf270) [0x7ff74f25e270]
[ 9.047]
[ 9.047] Segmentation fault at address (nil)
[ 9.047]
Fatal server error:
[ 9.047] Caught signal 11 (Segmentation fault). Server aborting
[ 9.047]

In my case, I don't even get to see the GDM login manager; others seem to have similar problems as soon as gnome-session starts:
https://bbs.archlinux.org/viewtopic.php?id=137593
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/921236
I am not sure if the Intel driver is the problem; the launchpad bug suggests it's evdev but I am not experiencing the same behavior as described in that bug. I have also tried installing xf86-input-evdev-git, which didn't help. Only "solutions" so far:
- downgrade to 7.11,
- don't use external monitor
Using the vesa driver, the X server does not crash (which indicates that the intel-drivers are in fact causing the problem), however the screen looks pretty garbaged with vesa.

Complete Xorg.0.log is attached; please let me know how I can provide further useful information.

Attaching gdb and getting the symbols for the backtrace would be useful, and/or running X under valgrind.

Download full text (4.5 KiB)

Okay, after recompiling some X packages with debugging symbols, then following
http://www.x.org/wiki/Development/Documentation/ServerDebugging#Debugging_with_one_machine
I get the following output.

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.9-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.9-1-ARCH #1 SMP PREEMPT Thu Mar 1 09:31:13 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 16 March 2012 10:00:15AM

Current version of pixman: 0.24.4
 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: Fri Mar 16 10:33:47 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
> Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
#0 0x0000000000000000 in ?? ()
No symbol table info available.
#1 0x00000000004a873c in xf86RotateBlockHandler (screenNum=0, blockData=0x0, pTimeout=0x7fff0ad43458, pReadmask=0x7d80e0) at xf86Rotate.c:274
        pScreen = <optimized out>
        pScrn = <optimized out>
        xf86_config = <optimized out>
#2 0x00007fd354df7471 in I830BlockHandler (i=<optimized out>, blockData=<optimized out>, pTimeout=<optimized out>, pReadmask=<optimized out>)
    at intel_driver.c:750
        screen = 0x1fcaad0
        scrn = <optimized out>
        intel = 0x1fb2cd0
#3 0x00000000004352b7 in BlockHandler (pTimeout=0x7fff0ad43458, pReadmask=0x7d80e0) at dixutils.c:392
        i = <optimized out>
        j = <optimized out>
#4 0x0000000000558b7d in WaitForSomething (pClientsReady=0x3f1a640) at WaitFor.c:219
        i = <optimized out>
        waittime = {tv_sec = 600, tv_usec = 0}
        wt = 0x7fff0ad43440
        timeout = <optimized out>
        clientsReadable = {fds_bits = {0 <repeats 16 times>}}
        clientsWritable = {fds_bits = {0, 214748364811, 472446402651, 532575944823, 0, 140545673819648, 160, 40, 4, 66516784, 0, 1, 0, 944, 0, 1}}
        curclient = <optimized out>
      ...

Read more...

This looks very much like the Xserver bug supposedly fixed in the 1.12 cycle, odd. Can you confirm if this also affects sna? (Recompile -intel with ./configure --enable-sna.)

No problems with SNA enabled, X running flawlessly, as far as I can tell!

And for completeness, can you try with your own recompiled UXA? (i.e. ./configure --disable-sna)

with --disable-sna, the segfault is back, with the same debug trace as before.

And whilst I have your attention... ;-)

Can you try launching X under valgrind?

I didn't have much time to tes valgrind yet; will need to complete this on monday.
What I noticed is that just running "valgrind X" causes my system to completely freeze. Is there any trick for valgrinding X (special command-line option or the like)?

Hmm, shouldn't lock your system up (hopefully it was just being unresponsive).

I tend to ssh in, cp /usr/bin/X .; sudo valgrind --trace-children=yes ./X -ac -noreset

The copy is to remove the setuid that valgrind will complain about and refuse to run.

Created attachment 58653
logfile for valgrind --trace-children=yes ./X -ac -noreset

Created attachment 58654
logfile for valgrind --leak-check=full --trace-children=yes ./X -ac -noreset

Here are the valgrind logfiles (once with and without --leak-check=full; didn't know if you'd need that).

So the difference between UXA and SNA in this case, is that UXA tidies up the outputs upon screen close and server regeneration, SNA doesn't because that code is buggy ;-)

Can you try this patch to the xserver:

diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index ff7000b..0c9123e 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -313,6 +313,12 @@ xf86RotateDestroy (xf86CrtcPtr crtc)
        DamageDestroy (xf86_config->rotation_damage);
        xf86_config->rotation_damage = NULL;
     }
+
+ if (xf86_config->BlockHandler)
+ {
+ pScreen->BlockHandler = xf86_config->BlockHandler;
+ xf86_config->BlockHandler = NULL;
+ }
 }

 void

The patch doesn't help ... with UXA, I get the same gdb output as before.

Hmm, it looked like that was on the right track.

Back to the hypothesis that the difference between SNA and UXA that matters is:

diff --git a/src/intel_display.c b/src/intel_display.c
index 11d0e2b..e61af86 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -1680,6 +1680,7 @@ intel_mode_fini(intel_screen_private *intel)
 {
        struct intel_mode *mode = intel->modes;

+#if 0
        while(!list_is_empty(&mode->crtcs)) {
                xf86CrtcDestroy(list_first_entry(&mode->crtcs,
                                                 struct intel_crtc,
@@ -1691,6 +1692,7 @@ intel_mode_fini(intel_screen_private *intel)
                                                   struct intel_output,
                                                   link)->output);
        }
+#endif

        if (mode->fb_id)
                drmModeRmFB(mode->fd, mode->fb_id);

Still no luck with this one ...

Then I'm not seeing how config->BlockHandler is set to NULL.

Can you launch X under gdb, set a breakpoint on xf86RotateBlockHandler and then a watchpoint on xf86_config->BlockHandler?

Download full text (3.3 KiB)

Here's my gdb session. Had to "set can-use-hw-breakpoints 0", don't know if this is a problem. :-) Also, I had to recompile with -O0 instead of -O1, otherwise gdb would report that xf86_config->BlockHandler is optimized out.
I don't have any experience using gdb; hope this is of any use for you ...

# gdb X
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/X...done.
(gdb) break xf86RotateBlockHandler
Breakpoint 1 at 0x4ab16c: file xf86Rotate.c, line 267.
(gdb) set can-use-hw-watchpoints 0
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 10:51:22 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
> Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server

Breakpoint 1, xf86RotateBlockHandler (screenNum=0, blockData=0x0, pTimeout=0x7fffc47c4d38, pReadmask=0x7dc0c0) at xf86Rotate.c:267
267 ScreenPtr pScreen = screenInfo.screens[screenNum];
(gdb) watch xf86_config->BlockHandler
Watchpoint 2: xf86_config->BlockHandler
(gdb) continue
Continuing.
Watchpoint 2: xf86_config->BlockHandler

Old value = <unreadable>
New value = (ScreenBlockHandlerProcPtr) 0
xf86RotateBlockHandler (screenNum=0, blockData=0x0, pTi...

Read more...

The very first time we enter xf86RotateBlockHandler we die. Hmm. Let's look at pScreen->BlockHandler instead, put a breakpoint on I830ScreenInit and then a watch on pScreen->BlockHandler.

Download full text (4.5 KiB)

I guess you mean screen->BlockHandler instead of pScreen->BlockHandler which isn't defined? After recompiling also the intel-driver with -O0 (with -O1, gdb eats 100% cpu when continuing after the watchpoint is set), the following results:

[root@utahraptor ~]# gdb X
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/X...done.
(gdb) break I830ScreenInit
Function "I830ScreenInit" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (I830ScreenInit) pending.
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 11:38:53 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]

Breakpoint 1, I830ScreenInit (scrnIndex=0, screen=0x9d9aa0, argc=1, argv=0x7fff084ed4a8) at intel_driver.c:924
924 ScrnInfoPtr scrn = xf86Screens[screen->myNum];
(gdb) watch screen->BlockHandler
Hardware watchpoint 2: screen->BlockHandler
(gdb) continue
Continuing.
Hardware watchpoint 2: screen->BlockHandler

Old value = (ScreenBlockHandlerProcPtr) 0
New value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
miScreenInit (pScreen=0x9d9aa0, pbits=0x0, xsize=<optimized out>, ysize=<optimized out>, dpix=<optimized out>, dpiy=<optimized out>, width=1920, rootDepth=24,
    numDepths=7, depths=0x9d92e0, rootVisual=33, numVisuals=2, visuals=0x9d5e00) at miscrinit.c:267
267 pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr)NoopDDA;
(gdb) c
Continuing.
Hardware watchpoint 2: screen->BlockHandler

Old value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
New value = (ScreenBlockHandlerProcPtr) 0x4ab155 <xf86RotateBlockHandler>
0x00000000004ab9d7 in xf86CrtcRotate (crtc=0x9cfc90) at xf86Rotate.c:475
475 pScreen->BlockHandler = xf86RotateBlockHandler;
(gdb) c
Continuing.
Hardware watchpoint 2: screen->BlockHandler

Old value = (ScreenBlockHandler...

Read more...

So it looks valid when we set it up, now we just need to keep watching afterwards. Instead of watching screen->BlockHander, try finding the address of screen->BlockHandler and watching that memory location. Something like: p &screen->BlockerHandler; watch *$

Download full text (4.7 KiB)

Here we go...
# gdb X
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/X...done.
(gdb) break I830ScreenInit
Function "I830ScreenInit" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (I830ScreenInit) pending.
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 14:19:18 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]

Breakpoint 1, I830ScreenInit (scrnIndex=0, screen=0x178caa0, argc=1, argv=0x7fff1338fb78) at intel_driver.c:924
924 ScrnInfoPtr scrn = xf86Screens[screen->myNum];
(gdb) p &screen->BlockHandler
$1 = (ScreenBlockHandlerProcPtr *) 0x178ccb8
(gdb) watch *$
Hardware watchpoint 2: *$
(gdb) continue
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0
New value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
miScreenInit (pScreen=0x178caa0, pbits=0x0, xsize=<optimized out>, ysize=<optimized out>, dpix=<optimized out>, dpiy=<optimized out>, width=1920,
    rootDepth=24, numDepths=7, depths=0x178c2e0, rootVisual=33, numVisuals=2, visuals=0x1788e00) at miscrinit.c:267
267 pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr)NoopDDA;
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
New value = (ScreenBlockHandlerProcPtr) 0x4ab155 <xf86RotateBlockHandler>
0x00000000004ab9d7 in xf86CrtcRotate (crtc=0x1782c90) at xf86Rotate.c:475
475 pScreen->BlockHandler = xf86RotateBlockHandler;
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x4ab155 <xf86RotateBlockHandler>
New value = (ScreenBlockHandlerProcPtr) 0x7fb07ccd5c1e <I830BlockHandler>
I830ScreenInit (scrnIndex=0, screen=0x178caa0, argc=1, argv=0x7fff1338fb78) at intel_driver.c:1026
1026 if (!AddCallback(&Flush...

Read more...

Right... So it is xf86_config->BlockHandler that is NULL, but afaics from that trace it should be NoopDDA.

One last go, break on xf86CrtcRotate and then p &xf86_config->BlockHandler; watch *$

Download full text (23.9 KiB)

That method seems to get called quite often ...
~]# gdb X
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/X...done.
(gdb) break xf86CrtcRotate
Breakpoint 1 at 0x4ab667: file xf86Rotate.c, line 385.
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 15:03:46 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]

Breakpoint 1, xf86CrtcRotate (crtc=0x23a1fe0) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) p &xf86_config->BlockHandler
$1 = (ScreenBlockHandlerProcPtr *) 0x7f8972ee8740
(gdb) watch *$
Hardware watchpoint 2: *$
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x23a2c90) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x7f8972ee8728 <main_arena+296>
New value = (ScreenBlockHandlerProcPtr) 0x3f155d0
0x00007f8972bc729e in _int_malloc () from /lib/libc.so.6
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x3f155d0
New value = (ScreenBlockHandlerProcPtr) 0x7f8972ee8728 <main_arena+296>
0x00007f8972bc77e6 in _int_malloc () from /lib/libc.so.6
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x23a1fe0) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x23a2c90) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.

cHardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x7f8972ee8728 <main_arena+296>
New value = (ScreenBlockHandlerProcPtr) 0x23a9180
0x0000...

Ah, in this case I believe the watchpoint was set too earlier, before xf86_config had been initialised, so we are just watching a random address from the stack. After breaking on xf86RotateDisplay, move on to the next line a few times until you see the assignment to xf86_config is completed.

Download full text (3.3 KiB)

(gdb) break xf86CrtcRotate
Breakpoint 1 at 0x4ab667: file xf86Rotate.c, line 385.
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 15:23:31 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]

Breakpoint 1, xf86CrtcRotate (crtc=0x1c9ffe0) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) s
386 xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
(gdb) s
388 ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
(gdb) p &xf86_config->BlockHandler
$1 = (ScreenBlockHandlerProcPtr *) 0x1c9fe38
(gdb) watch *$
Hardware watchpoint 2: *$
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x1ca0c90) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0
New value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
xf86CrtcRotate (crtc=0x1ca0c90) at xf86Rotate.c:475
475 pScreen->BlockHandler = xf86RotateBlockHandler;
(gdb) c
Continuing.
Hardware watchpoint 2: *$

Old value = (ScreenBlockHandlerProcPtr) 0x4352df <NoopDDA>
New value = (ScreenBlockHandlerProcPtr) 0
xf86CrtcScreenInit (screen=0x1caaaa0) at xf86Crtc.c:815
815 _xf86_di_dga_init_internal(screen);
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x1c9ffe0) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x1ca0c90) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) c
Continuing.
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)"
> Using last definition for duplicate fields
> Warning: Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols
> Ignoring extra symbols
> Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
> Ignoring extra symbols
Er...

Read more...

So the issue is simply that xf86CrtcRotate is called before xf86CrtcScreenInit. Can you put a breakpoint on each and print the backtrace?

Download full text (7.2 KiB)

not sure which backtrace you need, so here are all of them. :)

(gdb) delete 2
(gdb) break xf86CrtcScreenInit
Breakpoint 3 at 0x49f37f: file xf86Crtc.c, line 774.
(gdb) run
Starting program: /usr/bin/X
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

X.Org X Server 1.12.0
Release Date: 2012-03-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.11-1-ARCH x86_64
Current Operating System: Linux utahraptor 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/mapper/ssdvg-arch ro quiet
Build Date: 19 March 2012 10:45:43AM

Current version of pixman: 0.24.4
        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: Mon Mar 19 15:32:58 2012
(==) Using config directory: "/etc/X11/xorg.conf.d"
[tcsetpgrp failed in terminal_inferior: Die Operation ist nicht erlaubt]

Breakpoint 1, xf86CrtcRotate (crtc=0x17d0fe0) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) backtrace
#0 xf86CrtcRotate (crtc=0x17d0fe0) at xf86Rotate.c:385
#1 0x00007f53f24923dc in intel_crtc_apply (crtc=0x17d0fe0) at intel_display.c:370
#2 0x00007f53f24927f1 in intel_crtc_set_mode_major (crtc=0x17d0fe0, mode=0x17d10c8, rotation=1, x=0, y=0) at intel_display.c:461
#3 0x00000000004a0d29 in xf86CrtcSetModeTransform (crtc=0x17d0fe0, mode=0x17d10c8, rotation=1, transform=0x0, x=0, y=0) at xf86Crtc.c:303
#4 0x00000000004a1524 in xf86SetDesiredModes (scrn=0x17c3660) at xf86Crtc.c:2677
#5 0x00007f53f2497ab7 in I830EnterVT (scrnIndex=0, flags=0) at intel_driver.c:1149
#6 0x00007f53f24975f0 in I830ScreenInit (scrnIndex=0, screen=0x17dbaa0, argc=1, argv=0x7fff2404e4c8) at intel_driver.c:1020
#7 0x0000000000431e27 in AddScreen (pfnInit=0x7f53f24971f6 <I830ScreenInit>, argc=1, argv=0x7fff2404e4c8) at dispatch.c:3909
#8 0x000000000046db85 in InitOutput (pScreenInfo=0x7db0c0, argc=1, argv=0x7fff2404e4c8) at xf86Init.c:817
#9 0x00000000004219e3 in main (argc=1, argv=0x7fff2404e4c8, envp=<optimized out>) at main.c:204
(gdb) c
Continuing.

Breakpoint 1, xf86CrtcRotate (crtc=0x17d1c90) at xf86Rotate.c:385
385 ScrnInfoPtr pScrn = crtc->scrn;
(gdb) backtrace
#0 xf86CrtcRotate (crtc=0x17d1c90) at xf86Rotate.c:385
#1 0x00007f53f24923dc in intel_crtc_apply (crtc=0x17d1c90) at intel_display.c:370
#2 0x00007f53f24927f1 in intel_crtc_set_mode_major (crtc=0x17d1c90, mode=0x17d1d78, rotation=1, x=1920, y=0) at intel_display.c:461
#3 0x00000000004a0d29 in xf86CrtcSetModeTransform (crtc=0x17d1c90, mode=0x17d1d78, rotation=1, transform=0x0, x=1920, y=0) at xf86Crtc.c:303
#4 0x00000000004a1524 in xf86SetDesiredModes (scrn=0x17c3660) at xf86Crtc.c:2677
#5 0x00007f53f2497ab7 in I830EnterVT (scrnIndex=0, flags=0) at intel_driver.c:1149
#6 0x00007f53f24975f0 in I830ScreenInit (scrnIndex=0, screen=0x17dbaa0, argc=1, a...

Read more...

commit 1c2932e9cb283942567c3dd2695d03b8045da27f
Author: Chris Wilson <email address hidden>
Date: Mon Mar 19 15:51:43 2012 +0000

    uxa: Defer the call to EnterVT till after outputs are initialised

    We need to do this apparently or else we never perform the VT switch.
    However, we can not do it too early, especially not before we have
    finished intialising the outputs.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47395
    Signed-off-by: Chris Wilson <email address hidden>

*fingers crossed*

I can confirm that this fixes the problem. Thanks a lot for so rapidly taking care of the issue! :-)

David Gillies (daveg) wrote :

I'm on precise right now, xserver-xorg-input-evdev 1:2.7.0-0ubuntu1 and I'm still affected by this bug too.

cumulus007 (cumulus-007) wrote :

Issue still occurring with xserver-xorg-input-evdev 1:2.7.0-0ubuntu1.

David Burrows (snadge) wrote :

Problem also exists with xserver-xorg-input-evdev 1:2.7.0+git20120323.99340147-0ubuntu0sarvatt, from xorg-edgers for whatever its worth. I'm able to log in and use my desktop though, I only noticed the issue when I looked in my Xorg.0.log.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

Just checked today and I still cannot have two monitors connected. It still hangs and the only way to reboot the machine is through a Magic SysRq.

So it's definitely not fixed.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

Attaching the Xorg.0.log after upgrading to precise on 28/3/2010. You can still see the BUG there.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

The same bug is filled here:

https://bugs.freedesktop.org/show_bug.cgi?id=47395

they claim to have fixed it.

*** Bug 48174 has been marked as a duplicate of this bug. ***

Bryce Harrington (bryce) wrote :

Re-opening; recent comments and dupe bug #970049 suggest the applied change was insufficient to fix the problem.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Fix Released → New
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: New → Confirmed
Leonardo Borda (lborda) wrote :

@Robert

Hi Robert, I am also affected by this issue.
Here is the Xorg errors I got: http://paste.ubuntu.com/923921/

$ glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 965GM
OpenGL version string: 2.1 Mesa 8.0.2
OpenGL shading language version string: 1.20

Affected System:
Base Board Information
 Manufacturer: LG Electronics
 Product Name: COLUMBIA
 Version: Not Applicable
 Serial Number: Not Applicable

Let me know if you need me to do some tests...

Leonardo Borda

Bryce Harrington (bryce) wrote :

Sarvat suggests testing this ppa:
   https://launchpad.net/~sarvatt/+archive/sru6

This contains the following upstream patch, which is believed (but not proven) to fix this issue:
   http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/commit/?id=1c2932e9cb283942567c3dd2695d03b8045da27f

Robert Hooker (sarvatt) wrote :

Ok the issue remaining on intel after display configuration changes is an xserver-xorg-video-intel bug and not related to this original bug which was fixed. For anyone experiencing this on Intel, can you please try the xserver-xorg-video-intel in this PPA out?

https://launchpad.net/~sarvatt/+archive/sru6

The fix for future reference: http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/commit/?id=1c2932e9cb283942567c3dd2695d03b8045da27f

affects: xserver-xorg-input-evdev (Ubuntu) → xserver-xorg-video-intel (Ubuntu)
Leonardo Borda (lborda) wrote :

Hi Robert,

I've just tested the ppa and it has not fixed the issue yet.
Same behaviour as described in the bug.

Leonardo

Andrzej Jarmoniuk (ajarmoniuk) wrote :

I also tested the ppa. Unfortunately, it does not fix the issue.

bugbot (bugbot) on 2012-04-12
tags: added: dual-head
tags: added: mouse-pointer
Robert Hooker (sarvatt) on 2012-04-12
Changed in xserver-xorg-video-intel (Ubuntu):
assignee: Robert Hooker (sarvatt) → Canonical X.org (canonical-x)
Andrzej Jarmoniuk (ajarmoniuk) wrote :

Please let me know if you'd want any more tests.

Leonardo Borda (lborda) wrote :

Hi Guys,

Any updates on that issue?
It is really annoying since I cannot use my machine to make presentations and work with two monitors.

Leonardo

Conner Lee (connerleecml) wrote :

I have managed to narrow down the issue I think. Xorg seems to only crash when the cursor is on the screen that is being disconnected. If I have my cursor on the laptop screen before disconnected everything is fine. Furthermore, if the cursor is on the screen, the workaround is to go into display settings and disable the second screen first. Unplugging the hdmi cable without first disabling screen (in my case a tv) using gnome display settings. The same thing on Arch Linux. I hope this helps get this bug fixed.

Conner Lee (connerleecml) wrote :

Edit: So if I don't disable my tv in gnome display settings before unplugging hdmi and the cursor is on the tv it will crash.

I do not think this bug is fixed. I am changing status the to reopened and I apologise if that is inappropriate but as you can see here: https://bugs.archlinux.org/task/29285, it does not seem to be fixed.

You need to present some evidence (a backtrace for starters) that you have this highly particular bug. The exact bug as described here is fixed.

Andrzej Jarmoniuk (ajarmoniuk) wrote :

The bug is still the in 12.04. So don't upgrade just yet.

Created attachment 60643
Fix for xorg infinity loop.

Xorg goes to infinity loop (delta = 548.33340590666785 and incr = 6.3659874129151343e-314). Chromium authors code not good.

Created attachment 60645
proof debug output

I had previously launched "sleep 60 && kill -n 11 xorg_pid" and caused the freeze of xorg. And when xorg killed with SEGV, I receive this debug log. Xorg freezes in infinity loop.

the main question here is why the scroll increment is 0 (or close to 0 anyways). This is the cause of the bug and shouldn't happen.

In any way, while is dangerous without additional checks and in this case are senseless when works only with delta, more useable break loop and fmod delta.

But why scroll increment so small, I don't know, and in this moment mouse scroll not used at all.

Peter Hutterer,
your patch fix problem, but I will now always be nervous until the "while" loop will be completely safe

Changed in evdev:
importance: Unknown → Critical
status: Unknown → Fix Released
Andrzej Jarmoniuk (ajarmoniuk) wrote :

Conner, if you want me to do any tests, you can prepare a new ppa (with more debug?) which I'll test and I can post resuts.

doowttam@gmail.com (doowttam) wrote :

I was suffering from this bug after an upgrade to 12.04. By downgrading to version xserver-xorg-input-evdev 1:2.6.99.901-1ubuntu3~lp921236 (which I pulled from here https://launchpad.net/~sarvatt/+archive/sru1/+build/3118994) the issue is fixed.

That is expected, though, because as comment #5 points out, the bug was fixed quickly with that version. However, version 1:2.7.0-0ubuntu1, which is what's, shipping causes the same behavior and same error messages originally reported.

the loop is safe. "increment" is initialised once by the driver and that's where the server checks for and invalid increment of 0. it's read-only after that. This bug happened because of invalid memory access, there is only so much one can do against that.

Andy Choens (andy-choens) wrote :

I've been fighting this exact same bug. I normally get to work and plug in a USB hub with two external keyboards, a mouse and a printer. I also plug in my external monitor. Only after plugging everything in, do I typically boot the laptop (Lenovo X220, i5). I upgraded to help test and have been fighting this bug ever since. I rather like using my external monitor so I continued to test various permutations. I have discovered that XFCE does not trigger this bug, although Unity and Gnome Shell do. Surprisingly, this is true even when I havexfwm set to use compositing.

Today, I discovered that if I don't plug in my external mouse/keyboards/printer stuff, I CAN successfully launch Unity with my external monitor, which is great because not using it was really annoying. (Hence my use of XFCE which I don't really like as much.)

I attached my xorg.log from before my discovery. I will attach my xorg.log tomorrow from when I boot the system at work with my work around. Perhaps the difference will help figure out this bug.

commit af88b43f9e604157b74270d609c08bdfa256a792
Author: Peter Hutterer <email address hidden>
Date: Fri Apr 27 16:31:17 2012 +1000

    dix: don't emulate scroll events for non-existing axes (#47281)

Timo Aaltonen (tjaalton) on 2012-05-03
affects: xserver-xorg-video-intel (Ubuntu) → xserver-xorg-input-evdev (Ubuntu)
cumulus007 (cumulus-007) wrote :

Fixed upstream, try using the xorg-edgers ppa, dual-screen working flawlessly now.

Is it not going to be fixed in the regular repos as well?

I'd say this is a killer for newbie acceptance and should be fixed automagically during install time updates!

Andrzej Jarmoniuk (ajarmoniuk) wrote :

I can confirm. It fixed the problem.

Paul d'Aoust (paul) wrote :

I can confirm this bug -- also using built-in Intel 3400 graphics on a Sandybridge processor. Similar problems -- although, instead of getting a mousepointer stuck on the edge of the screen, the whole thing often goes blank.

This patched package linked by doowttam fixed the issue for me, until an update came through the regular repos, replaced the fixed version, and screwed everything up again. I hope it gets fixed in downstream soon! (Yes, I know I can hold the package version, but I would like to get updates when they come.)

Andrzej Jarmoniuk (ajarmoniuk) wrote :

Then just get the package via the xorg-edgers ppa. Until it eventually hits the regular repository.

Thanks.
Works for me now.
Xorg-server 1.12.2-1 (ArchLinux)

hce (hce) wrote :

Hi was using 12.04 with an external montor since months, and had no problems. most of the time the laptop remained always connected to the external monitor. in the last weeks I started having problems when reconnecting to the monitor (BUGs in xorg.0.log, machine locked but accessible via ssh), both when booting with external monitor connected and when connecting the external monitor after booting.

evdev upgrade history:

/var/log/dpkg.log.6.gz:2011-12-23 11:48:45 upgrade xserver-xorg-input-evdev 1:2.6.0-1ubuntu12 1:2.6.0-1ubuntu13
/var/log/dpkg.log.2.gz:2012-04-27 09:43:19 upgrade xserver-xorg-input-evdev 1:2.6.0-1ubuntu13 1:2.7.0-0ubuntu1
/var/log/dpkg.log:2012-06-22 09:27:14 upgrade xserver-xorg-input-evdev 1:2.7.0-0ubuntu1 1:2.7.0-0ubuntu1.2
/var/log/dpkg.log:2012-06-22 10:26:52 upgrade xserver-xorg-input-evdev 1:2.7.0-0ubuntu1.2 1:2.7.0+git20120504.f28507e8-0ubuntu0sarvatt~precise

after installing from xorg-edgers xserver-xorg-input-evdev 1:2.7.0+git20120504.f28507e8-0ubuntu0sar (and dependencies), booting with external monitor connected works, while connecting the external monitor after booting did not lock up the machine, enlarged the virtual desktop but showed no image on the external monitor.

card:
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)

hce (hce) wrote :

as the problems started well after the last relevant update, and are not strictly predictable, one might guess that some hw status is involved, such as registers on the graphic card

Tomi Pieviläinen (tpievila) wrote :
Tomi Pieviläinen (tpievila) wrote :

This is still happening with xserver-xorg-input-evdev 1:2.7.0-0ubuntu1.2 . Downgrade to 2.6.99.901-1ubuntu3~lp921236_amd64 also still works.

For what it's worth, I think this bug is not actually https://bugs.freedesktop.org/show_bug.cgi?id=47395, but https://bugs.freedesktop.org/show_bug.cgi?id=47281. At least the Xorg.log output matches that bug report better.

Timo Aaltonen (tjaalton) on 2012-07-05
affects: xserver-xorg-input-evdev (Ubuntu) → xorg-server (Ubuntu)
Changed in xorg-server (Ubuntu):
status: Confirmed → In Progress
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in xserver-xorg-video-intel (Ubuntu):
status: New → Confirmed
Timo Aaltonen (tjaalton) on 2012-07-05
affects: xserver-xorg-video-intel (Arch Linux) → xserver-xorg-video-intel (Ubuntu)
no longer affects: xserver-xorg-video-intel (Ubuntu)
Timo Aaltonen (tjaalton) wrote :

uploaded to the -proposed queue, but won't be available for testing until it's accepted

description: updated
affects: evdev → xserver
Changed in xserver:
importance: Critical → Unknown
status: Fix Released → Unknown
affects: xserver → xorg-server
Timo Aaltonen (tjaalton) wrote :

marking fixed for quantal

Changed in xorg-server (Ubuntu Precise):
assignee: nobody → Canonical X.org (canonical-x)
importance: Undecided → High
status: New → In Progress
Changed in xorg-server (Ubuntu):
assignee: Canonical X.org (canonical-x) → nobody
status: In Progress → Fix Released

Hello Manoj, or anyone else affected,

Accepted xorg-server into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/xorg-server/2:1.11.4-0ubuntu10.4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in xorg-server (Ubuntu Precise):
status: In Progress → Fix Committed
tags: added: verification-needed
Steve Beattie (sbeattie) wrote :

An xorg-server security update was released that does not include the
fixes from this package in precise-proposed. A new package needs to be built
for -proposed. Thanks!

Changed in xorg-server:
importance: Unknown → High
status: Unknown → Fix Released
TsFox (thuener) wrote :

The problem back with the "upgrade xserver-xorg-core 2:1.11.4-0ubuntu10.4 2:1.11.4-0ubuntu10.6".

Timo Aaltonen (tjaalton) on 2012-08-01
Changed in xorg-server (Ubuntu Precise):
assignee: Canonical X.org (canonical-x) → Timo Aaltonen (tjaalton)
status: Fix Committed → In Progress
Timo Aaltonen (tjaalton) wrote :

pushed a new revision to the precise-proposed queue.

Dennis Wisnia (dennis-wisnia) wrote :

@Timo:

Thanks, can you give me an short how to how I install it?

Timo Aaltonen (tjaalton) wrote :

Dennis: it'll end up in precise-proposed when it's accepted, so enable -proposed and install xserver-xorg-core once that has happened. In the meantime you can either wait, or build it from source..

Will Lucas (mevatron) wrote :

I can also confirm that the upgrade from xserver-xorg-core 2:1.11.4-0ubuntu10.4 to 2:1.11.4-0ubuntu10.6 has broken my secondary display. I didn't notice it for several days until a reboot... :/

Hello Manoj, or anyone else affected,

Accepted xorg-server into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/xorg-server/2:1.11.4-0ubuntu10.7 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in xorg-server (Ubuntu Precise):
status: In Progress → Fix Committed
tags: added: verification-done
removed: verification-needed
Will Lucas (mevatron) wrote :

Updated with 2:1.11.4-0ubuntu10.7 and viola, it worked! Thanks!

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package xorg-server - 2:1.11.4-0ubuntu10.7

---------------
xorg-server (2:1.11.4-0ubuntu10.7) precise-proposed; urgency=low

  * Re-enable 516-dix-dont-emulate-scroll-events-for-non-existing-axes.patch
    from upstream 1.12.2. Fixes the server from entering in an infinite
    loop in certain situations. (LP: #921236)
 -- Timo Aaltonen <email address hidden> Thu, 02 Aug 2012 17:14:39 +0300

Changed in xorg-server (Ubuntu Precise):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.