unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* [bugs #2110] bug in threading implementation using guile-1.6.1
@ 2004-12-05 23:34 Kevin Ryde
  0 siblings, 0 replies; only message in thread
From: Kevin Ryde @ 2004-12-05 23:34 UTC (permalink / raw)


This mail is an automated notification from the bugs tracker
 of the project: Guile.

/**************************************************************************/
[bugs #2110] Latest Modifications:

Changes by: 
		Kevin Ryde <user42@zip.com.au>
'Date: 
		Sun 12/05/04 at 23:09 (Australia/NSW)

------------------ Additional Follow-up Comments ----------------------------
I'm pretty sure you're only meant to run one gtk-main (at any one time).  It'd be nice if guile or guile-gtk could protect against any ill effects of running two, but I'm not sure where the actual problem lies.






/**************************************************************************/
[bugs #2110] Full Item Snapshot:

URL: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=2110>
Project: Guile
Submitted by: Stan Pinte
On: Thu 01/02/03 at 13:12

Category:  None
Severity:  5 - Average
Item Group:  None
Resolution:  None
Privacy:  Public
Assigned to:  None
Status:  Open


Summary:  bug in threading implementation using guile-1.6.1

Original Submission:  hello,

I am using multiple threads within a guile-gtk application.

a call to (gtk-threads-ensure-handler) ensures that a first thread gets started, and
allows the rest of my program to execute. At the end of that program, I call (gtk-main), to 
wait in the Gtk event thread.

If I run my program without starting a second thread, it is ok, but as soon as I invoke 
(gtk-threads-ensure-handler), my CPU is used at 100%

NOTES:

1: I configured guile-1.6.1 using the "--with-threads" flag.
2: if I strace my process, I see this:

ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 454970}, NULL) = 0
gettimeofday({1041338430, 455055}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 455767}, NULL) = 0
gettimeofday({1041338430, 455852}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 456429}, NULL) = 0
gettimeofday({1041338430, 456511}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 457084}, NULL) = 0
gettimeofday({1041338430, 457166}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 459008}, NULL) = 0
gettimeofday({1041338430, 459097}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})
gettimeofday({1041338430, 459688}, NULL) = 0
gettimeofday({1041338430, 459771}, NULL) = 0
ioctl(7, FIONREAD, [0])                 = 0
select(32, [6 7], [], [], {0, 0})       = 1 (in [6], left {0, 0})

and so on....

--> I suspect a bug in the implementation of 

coop_wait_for_runnable_thread () in libguile/isselect.c

if (QFIRST (coop_global_sleepq)->timeoutp)
    gettimeofday (&now, NULL);
  
  return coop_wait_for_runnable_thread_now (&now);

...

thanks a lot,

Stan


Follow-up Comments
------------------


-------------------------------------------------------
Date: Sun 12/05/04 at 23:09         By: Kevin Ryde <kryde>
I'm pretty sure you're only meant to run one gtk-main (at any one time).  It'd be nice if guile or guile-gtk could protect against any ill effects of running two, but I'm not sure where the actual problem lies.

-------------------------------------------------------
Date: Fri 01/10/03 at 13:38         By: Stan Pinte <stan_pinte>
This only seems to happen when I make two calls two (gtk-main), indirectly.

-> one via the (gtk-ensure-handler) call
-> one afterwards, via the (gtk-main) call.












For detailed info, follow this link:
<http://savannah.gnu.org/bugs/?func=detailitem&item_id=2110>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/





_______________________________________________
Bug-guile mailing list
Bug-guile@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-guile


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-12-05 23:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-05 23:34 [bugs #2110] bug in threading implementation using guile-1.6.1 Kevin Ryde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).