Re: Windows GTK hang 'not responding'




	Hi,

No, it's not a basic networking thing. I've written socket programs before. :) The program itself isn't freezing, that's what I was saying I've been able to determine. It's just waiting normally in select (for network packets) whenever I get a 'hang' dump grab for windbg. So, that's not of any help to track down the problem. Thinking it was something with select() under windows, I set the timeout to zero and then called 'Sleep()' manually to test it. Sure enough, whenever it's 'grabbed' the program is sleeping which makes sense as it's not really hung and that's where a lot of programs will be if you were to take a snapshot of them. The program is still operating, I get debugging printfs through my main loop and also it is still reading from the network and recording to disk. The ONLY thing that appears to hang is the GTK part. Windows just says it's window is 'unresponsive'.
	So, it's along the GTK lines I was seeking some advice.

	Derek

Anna wrote:
On Thu, Apr 27, 2006 at 01:56:24PM -0400, Derek Piper wrote:

	Hi,

I have a strange bug I'm trying to track down. I've been able to determine that the program is not hanging in itself, it's the window that just 'freezes'. The program I have has a 'telnet' mode, and I am able to telnet to the program even when the GTK window has 'hung'. When I enter a command, the window 'unfreezes'. This is using GLib 2.10.1 and GTK 2.8.17 DLLs run from a 'standalone' environment, i.e. PATH set to include the relevant DLLs etc. The error still occurs using GTK 2.8.9 (the latest Windows installer) and also on GTK 2.6.10 (Windows). Has anyone else had that sort of thing happen or have any idea as to why it's happening? Trying to get a 'hang' dump of my program only reveals it's waiting in the select(), or in a sleep. My program was originally written without an interface (apart from telnet) but I added the GTK interface and call this code in a function:


what's the select() waiting for?  are you just using it to sleep?  I
don't understand your comment about "or in a sleep".  If your program is
hanging and you discover it's just sitting in a sleep() too long, why
not just adjust the amount of time it's sleep()ing for?  and, the
select() call should return when whatever it's wainting for arives.  You
can give select() a timeout.  why not do that?  have you tried running
it under a debugger?  the fact that it runs fine on Debian but hangs on
windows says "timing issue" to me.  things are probably running in a
slightly different order in Windows than in Linux, causing...  something
like...  a file descriptor to be in a writable state while you're still
waiting for readable.  good luck.

- Anna



--
Derek Piper - dcpiper indiana edu - (812) 856 0111
IRI 323, School of Informatics
Indiana University, Bloomington, Indiana



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]