X crashes on exit
Status: Beta
Brought to you by:
davidsporn
If I start Xorg with hidtouch support, Xorg crashes when terminating the session. Even when using the most basic start-script available:
Xorg -dpi 96 -nolisten tcp vt7 &
DISPLAY=:0 xterm
If I can make the screen display anything after the crash, I has the following error:
*** glibc detected *** Xorg: double free or corruption (!prev): 0x093ec118 ***
The system is running a very minimal Debian Testing. With xorg-server 2:1.7.7-8 and a self-compiled hidtouch driver version 10.05.23.
xorg.conf
Sorry, I was not available last week.
I do not see anything wrong in the xorg.conf. Did you try to run X without the driver (commenting all line related to hidtouch and associated device) ?
No problem.
I tried running X without the hidtouch driver. It did not crash then.
ok, so it should be in my code T_T
However on my log, I don't have this kind of message, I only see those 2 lines (my hidtouch device is named ETT Touch Panel) :
(II) ETT Touch Panel: Off.
(II) UnloadModule: "hidtouch"
In other word no error for me, BUT I don't start X.org manually. Could you add a log file for X.org ?
By the way, here is the beginning of my log :
X.Org X Server 1.7.6
Release Date: 2010-03-17
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.24-27-server i686 Ubuntu
Current Operating System: Linux reina 2.6.32-25-generic #44-Ubuntu SMP Fri Sep 17 20:26:08 UTC 2010 i686
Kernel command line: root=UUID=98301dbe-103c-4d05-8f03-e795744e31bc ro quiet splash
Build Date: 21 July 2010 12:47:34PM
xorg-server 2:1.7.6-2ubuntu7.3 (For technical support please see http://www.ubuntu.com/support\)
Current version of pixman: 0.16.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: Wed Nov 17 22:43:54 2010
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using config directory: "/usr/lib/X11/xorg.conf.d"
(==) ServerLayout "Default Layout"
(**) |-->Screen "Default Screen" (0)
(**) | |-->Monitor "Configured Monitor"
(**) | |-->Device "Configured Video Device"
(**) |-->Input Device "ETT Touch Panel"
(==) Automatically adding devices
(==) Automatically enabling devices
(WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
Entry deleted from font path.
(==) FontPath set to:
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/100dpi/:unscaled,
/usr/share/fonts/X11/75dpi/:unscaled,
/usr/share/fonts/X11/Type1,
/usr/share/fonts/X11/100dpi,
/usr/share/fonts/X11/75dpi,
/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType,
built-ins
(==) ModulePath set to "/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
(II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
(II) Loader magic: 0x81f0e80
(II) Module ABI versions:
X.Org ANSI C Emulation: 0.4
X.Org Video Driver: 6.0
X.Org XInput driver : 7.0
X.Org Server Extension : 2.0
(++) using VT number 7
Xorg logfile with X crash on exit
I added the Xorg logfile where X crashed on exit. I don't think there is an error in the logfile, but X still crashes.
The effect of the crash is (1) the screen is blanked, because there's no input signal (2) I can't use a key-combination to switch vt's. The only way to really see the crash-information is, to switch to a console (vt1), stop X and then switch back to the vt where X was running (vt7).
Note: for this logfile, I did not switch vt's at all.
Sorry for the delay, I didn't had time to look at the code this month.
I had a look at the code that is likely to be called on shutdown of the driver, in hidtouch__body.h :
In function hdtOnDeviceOff (around line 114) there is a call to xf86RemoveEnabledDevice(pInfo) before changing the pInfo struct again.
You might try the following alternatives :
- comment the call to xf86RemoveEnabledDevice
- comment out xf86RemoveEnabledDevice, comment further modification of pInfo
- put the call to xf86RemoveEnabledDevice after the modification of pInfo
- comment xf86RemoveEnabledDevice and further modification of pInfo
maybe one of these thing will fix (I would say hide) the problem.