[Mono-winforms-list] Mono hangs after looking up XKeycodeToKeysym

Adam J. P. Wood AdamWood at xephi.co.uk
Wed Jan 25 09:18:24 EST 2006


I have attached a trace of the problem I'm having. The trace is heavily edited 
to show only the parent function and the looping functions. I still have the 
full trace if anyone wants it but since the looping doesn't start until line 
# 335248 it's pretty big. ;-)

It looks like System.Windows.Forms.Locale:GetText is the source of the loop. 
While trying to get some information about the keyboard. GetText calls a 
number of other functions before the looping begins. I suspect this is not 
Mono's fault but my particular setup. Still it would be nice for Mono to 
notice this and default to a safe locale or whatever.

This problem only occurs in apps that try to use Windows.Forms.

I'm happy with the work around LC="C" for now but I hope this helps someone 
else.

Adam

On Tuesday 24 January 2006 20:07, Peter Dennis Bartok wrote:
> Adam,
>
> Can you run your app with "mono --trace" and see where it hangs (or what
> infinite loop you enter). You might want to redirect to a file, it's gonna
> give you *lots* of output.
>
> I tried running here with your LC locale, but I don't get a problem (I'm on
> SuSE10). Does it matter what application you are trying to run, or are all
> failing?
>
> Cheers,
>   Peter
>
> -----Original Message-----
> From: "Adam J. P. Wood" <AdamWood at xephi.co.uk>
> To: <mono-winforms-list at lists.ximian.com>
> Date: 23 January, 2006 15:01
> Subject: Re: [Mono-winforms-list] Mono hangs after looking up
> XKeycodeToKeysym
>
> >Accidentally repiled to author instead of the list, so I'm trying again.
> > :)
> >
> >I'm not running a 64 bit processor, just an AMD Athlon XP.
> >
> >Adam
> >
> >On Monday 23 January 2006 20:57, Peter Dennis Bartok wrote:
> >> Are you on a 64bit processor?
> >>
> >> Peter
> >>
> >> -----Original Message-----
> >> From: "Adam J. P. Wood" <AdamWood at xephi.co.uk>
> >> To: <mono-winforms-list at lists.ximian.com>
> >> Date: 23 January, 2006 13:55
> >> Subject: [Mono-winforms-list] Mono hangs after looking up
> >> XKeycodeToKeysym
> >>
> >> >Please help,
> >> >
> >> >I'm using mono on Linux and trying to run an app which has previously
> >> >worked
> >> >on windows. I think it is a problem with my Xorg configuration but I
> >> >can't
> >> >figure it out.
> >> >
> >> >I'm using Gentoo, Xorg 6.8, and Mono 1.1.13
> >> >
> >> >When I start up mono with debugging output the app starts and prints
> >> >some
> >> >console text. As it tries to open the first window obviously the
> >> >System.Windows.Forms assembly gets loaded and then a lot of lines like
> >> >the
> >> >following:
> >> >
> >> >Mono-INFO: Searching for 'XGetKeyboardMapping'.
> >> >Mono-INFO: Probing 'XGetKeyboardMapping'.
> >> >Mono-INFO: Found as 'XGetKeyboardMapping'.
> >> >Mono-INFO: DllImport attempting to load: 'libX11.so.6'.
> >> >Mono-INFO: DllImport loading location: 'libX11.so.6'.
> >> >Mono-INFO: Searching for 'XFree'.
> >> >Mono-INFO: Probing 'XFree'.
> >> >Mono-INFO: Found as 'XFree'.
> >> >Mono-INFO: DllImport attempting to load: 'libX11.so.6'.
> >> >Mono-INFO: DllImport loading location: 'libX11.so.6'.
> >> >Mono-INFO: Searching for 'XFreeModifiermap'.
> >> >Mono-INFO: Probing 'XFreeModifiermap'.
> >> >Mono-INFO: Found as 'XFreeModifiermap'.
> >> >Mono-INFO: DllImport attempting to load: 'libX11.so.6'.
> >> >Mono-INFO: DllImport loading location: 'libX11.so.6'.
> >> >Mono-INFO: Searching for 'XKeycodeToKeysym'.
> >> >Mono-INFO: Probing 'XKeycodeToKeysym'.
> >> >Mono-INFO: Found as 'XKeycodeToKeysym'.
> >> >
> >> >The lines above are the last lines I get and then mono just hangs and
> >> >starts
> >> >eating cpu time without getting any further. I've since tried other
> >> > apps and
> >> >they all have the same effect. I can only assume after hours of playing
> >> >around that my keyboard settings are defunct but I don't see how.
> >> >Here is a snippet from my /etc/X11/xorg.conf, I have tried it both with
> >> > the commented lines working and disabled.
> >> >
> >> >Section "InputDevice"
> >> >        Identifier  "Keyboard1"
> >> >        Driver      "kbd"
> >> >#       Option      "AutoRepeat" "500 30"
> >> ># Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
> >> >#       Option      "XkbRules" "xorg"
> >> >#       Option      "XkbModel" "pc105"
> >> >#       Option      "XkbLayout" "gb"
> >> >EndSection
> >> >
> >> >Does anyone have any ideas?
> >> >
> >> >thanks,
> >> >
> >> >Adam Wood
> >> >_______________________________________________
> >> >Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> >> >http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> >
> >_______________________________________________
> >Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> >http://lists.ximian.com/mailman/listinfo/mono-winforms-list
-------------- next part --------------
ENTER: System.Windows.Forms.Locale:GetText (string)([STRING:0x8355800:Keyboard], )
. ENTER: System.Resources.ResourceManager:GetObject (string)(this:0x825efc8[System.Resources.R$
. . ENTER: System.Resources.ResourceManager:GetObject (string,System.Globalization.CultureInfo$

-----------------------BEGIN LOOP----------------------

ENTER: System.Resources.ResourceSet:GetObject (string,bool)(this:0x821d020[System.Resources.ResourceSet AtlasClient.exe], [STRING:0x8355800:Keyboard], 0, )
. ENTER: System.Collections.Hashtable:get_Item (object)(this:0x8254510[System.Collections.Hashtable AtlasClient.exe], [STRING:0x8355800:Keyboard], )
. . ENTER: System.Collections.Hashtable:GetHash (object)(this:0x8254510[System.Collections.Hashtable AtlasClient.exe], [STRING:0x8355800:Keyboard], )
. . . ENTER: System.String:GetHashCode ()(this:[STRING:0x8355800:Keyboard], )
. . . LEAVE: System.String:GetHashCode ()result=568383495
. . LEAVE: System.Collections.Hashtable:GetHash (object)result=568383495
. LEAVE: System.Collections.Hashtable:get_Item (object)[OBJECT:(nil)]
LEAVE: System.Resources.ResourceSet:GetObject (string,bool)[OBJECT:(nil)]
ENTER: System.Globalization.CultureInfo:get_InvariantCulture ()()
LEAVE: System.Globalization.CultureInfo:get_InvariantCulture ()[System.Globalization.CultureInfo:0x82e8ee0]
ENTER: System.Globalization.CultureInfo:get_Parent ()(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], )
LEAVE: System.Globalization.CultureInfo:get_Parent ()[System.Globalization.CultureInfo:0x82e8b60]

ENTER: System.Resources.ResourceManager:InternalGetResourceSet (System.Globalization.CultureInfo,bool,bool)(this:0x825efc8[System.Resources.ResourceManager AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], 1, 1, )
. ENTER: System.Collections.Hashtable:get_Item (object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], )
. . ENTER: System.Collections.Hashtable:GetHash (object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], )
. . . ENTER: System.Globalization.CultureInfo:GetHashCode ()(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], )
. . . LEAVE: System.Globalization.CultureInfo:GetHashCode ()result=127
. . LEAVE: System.Collections.Hashtable:GetHash (object)result=127
. . ENTER: System.Collections.Hashtable:KeyEquals (object,object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], [System.Globalization.CultureInfo:0x82e8cb0], )
. . . ENTER: System.Globalization.CultureInfo:Equals (object)(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8cb0], )
. . . LEAVE: System.Globalization.CultureInfo:Equals (object)TRUE:1
. . LEAVE: System.Collections.Hashtable:KeyEquals (object,object)TRUE:1
. LEAVE: System.Collections.Hashtable:get_Item (object)[System.Resources.ResourceSet:0x821d020]
LEAVE: System.Resources.ResourceManager:InternalGetResourceSet (System.Globalization.CultureInfo,bool,bool)[System.Resources.ResourceSet:0x821d020]

ENTER: System.Resources.ResourceSet:GetObject (string,bool)(this:0x821d020[System.Resources.ResourceSet AtlasClient.exe], [STRING:0x8355800:Keyboard], 0, )
. ENTER: System.Collections.Hashtable:get_Item (object)(this:0x8254510[System.Collections.Hashtable AtlasClient.exe], [STRING:0x8355800:Keyboard], )
. . ENTER: System.Collections.Hashtable:GetHash (object)(this:0x8254510[System.Collections.Hashtable AtlasClient.exe], [STRING:0x8355800:Keyboard], )
. . . ENTER: System.String:GetHashCode ()(this:[STRING:0x8355800:Keyboard], )
. . LEAVE: System.String:GetHashCode ()result=568383495
. LEAVE: System.Collections.Hashtable:GetHash (object)result=568383495
LEAVE: System.Collections.Hashtable:get_Item (object)[OBJECT:(nil)]
LEAVE: System.Resources.ResourceSet:GetObject (string,bool)[OBJECT:(nil)]
ENTER: System.Globalization.CultureInfo:get_InvariantCulture ()()
LEAVE: System.Globalization.CultureInfo:get_InvariantCulture ()[System.Globalization.CultureInfo:0x82e8ee0]
ENTER: System.Globalization.CultureInfo:get_Parent ()(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], )
LEAVE: System.Globalization.CultureInfo:get_Parent ()[System.Globalization.CultureInfo:0x82e8b60]

ENTER: System.Resources.ResourceManager:InternalGetResourceSet (System.Globalization.CultureInfo,bool,bool)(this:0x825efc8[System.Resources.ResourceManager AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], 1, 1, )
. ENTER: System.Collections.Hashtable:get_Item (object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], )
. . ENTER: System.Collections.Hashtable:GetHash (object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], )
. . . ENTER: System.Globalization.CultureInfo:GetHashCode ()(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], )
. . . LEAVE: System.Globalization.CultureInfo:GetHashCode ()result=127
. . LEAVE: System.Collections.Hashtable:GetHash (object)result=127
. . ENTER: System.Collections.Hashtable:KeyEquals (object,object)(this:0x8254ed0[System.Collections.Hashtable AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8b60], [System.Globalization.CultureInfo:0x82e8cb0], )
. . . ENTER: System.Globalization.CultureInfo:Equals (object)(this:0x82e8b60[System.Globalization.CultureInfo AtlasClient.exe], [System.Globalization.CultureInfo:0x82e8cb0], )
. . . LEAVE: System.Globalization.CultureInfo:Equals (object)TRUE:1
. . LEAVE: System.Collections.Hashtable:KeyEquals (object,object)TRUE:1
. LEAVE: System.Collections.Hashtable:get_Item (object)[System.Resources.ResourceSet:0x821d020]
LEAVE: System.Resources.ResourceManager:InternalGetResourceSet (System.Globalization.CultureInfo,bool,bool)[System.Resources.ResourceSet:0x821d020]


More information about the Mono-winforms-list mailing list