bugGuile - Bugs: bug #2110, bug in threading implementation...

 
 

bug #2110: bug in threading implementation using guile-1.6.1

Submitter:  Stan Pinte <stan_pinte>
Submitted:  Thu 02 Jan 2003 01:12:35 PM UTC
   
 
Category:  None Severity:  3 - Normal
Item Group:  None Status:  Invalid
Privacy:  Public Assigned to:  None
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Mon 20 Jul 2009 09:38:16 PM UTC, comment #3: 

I think it's reasonable to say that 1.6 is no longer maintained, so closing this bug.

Ludo'.

Ludovic Courtès <civodul>
Group administrator
Sun 05 Dec 2004 11:09:55 PM UTC, comment #2: 

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.

Kevin Ryde <kryde>
Group Member
Fri 10 Jan 2003 01:38:41 PM UTC, comment #1: 

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.

Stan Pinte <stan_pinte>
Thu 02 Jan 2003 01:12:35 PM UTC, 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

Stan Pinte <stan_pinte>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by civodul (Updated the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2009-08-17 civodul Open/ClosedOpen Closed
    2008-08-25 civodul StatusNone Invalid
    2008-07-09 None Attached File- Added get_apache_80x15_2.png, #16044

    Back to the top

    Powered by Savane 3.14-eb11.
    Corresponding source code