bug-guile
[Top][All Lists]
Advanced

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

[Bug #2110] bug in threading implementation using guile-1.6.1


From: nobody
Subject: [Bug #2110] bug in threading implementation using guile-1.6.1
Date: Thu, 02 Jan 2003 08:12:36 -0500

=================== BUG #2110: FULL BUG SNAPSHOT ===================
http://savannah.gnu.org/bugs/?func=detailbug&bug_id=2110&group_id=39

Submitted by: stan_pinte                Project: Guile                          
Submitted on: 2003-Jan-02 13:12
Category:  None                         Severity:  5 - Major                    
Bug Group:  None                        Resolution:  None                       
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




No Followups Have Been Posted


CC list is empty


No files currently attached


For detailed info, follow this link:
http://savannah.gnu.org/bugs/?func=detailbug&bug_id=2110&group_id=39



reply via email to

[Prev in Thread] Current Thread [Next in Thread]