Re: Stalls in idle loop
- From: Vlad Harchev <hvv hippo ru>
- To: Nick Matsakis <matsakis merl com>
- Cc: gtk-list gnome org
- Subject: Re: Stalls in idle loop
- Date: Fri, 11 Aug 2000 11:27:11 +0500 (SAMST)
On Thu, 10 Aug 2000, Nick Matsakis wrote:
>
> On Thu, 10 Aug 2000, Vlad Harchev wrote:
>
> > Also, you didn't specify the version of gtk you are using (the recent is
> > 1.2.8).
>
> I'm not sure which version I am using. How can I find this out?
The following ints descibe gtk version:
gtk_major_version
gtk_minor_version
gtk_micro_version
So report their values here. Also it would be nice if you've said what OS do
you use, kernel version (that can matter if it's very ancient), and a version
of X too.
> > Also, I think you can explore the problem by stracing or ltracing the gtk
> > program when iddle function is ceased to run - may be it's not gtk (more
> > precisely, glib) problem but the problem with your X server/Xlib/glibc - in
> > what function program stays when the problem happens?
>
> It's hard to say. The program displays live video, captured from a frame
> grabber, so 30 times a second it gets a signal indicating a new
What signal - it is OS signal like SIGUSR1? Or is it timeout function?
> frame. The signal handler continues to be run in the stalled state. Is
> there any way to use GDB (or some other utility) to stop a program at a
> particular time and print a stack trace? I can't set a break point
> because I don't know where the function is during that time.
Run your program from the xterm, in foreground. Get it's PID (may be using
'ps -C program-name'). Remember it:). Then invoke gdb while in the directory
where your program binary resides.
Type the following in gdb prompt:
file program-name
at pid-of-your-program
c
The program will continue execution. When it stalls, press Control-C in the
xterm from which you've run the program (but don't try to send any events to
your program - i.e. don't move your mouse over it, etc). After pressing
Control-C, your program will be frozen and you will be able to inspect it in
gdb. So, switch to gdb, type 'bt' - it will print the name of the functions
it's in. It would be nice if you posted it here.
To resume execution of your program, type
c
again.
> > Also, how often that idle function stalls? Does plain waiting "unstalls" it?
>
> The stalls are erratic, and waiting doesn't seem to unstall it, but I've
> waited at most 22 seconds before sending some input to the computer.
>
Also, could you add another idle function that will print something (or in
any other way will prove that it's get called). Does the second idle function
stalls with first or not?
> Nick Matsakis
>
>
>
Best regards,
-Vlad
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]