STR #1138

GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 Home  |  Articles & FAQs  |  Bugs & Features  |  Documentation  |  Download  |  Screenshots  ]

Return to Bugs & Features | Roadmap 1.1 ]

STR #1138

Application:FLTK Library
Status:1 - Closed w/Resolution
Priority:2 - Low, e.g. a documentation error or undocumented side-effect
Scope:2 - Specific to an operating system
Summary:pthreads support not activated though working very well in mac os x
Created By:fabien
Assigned To:mike
Fix Version:1.1-current (SVN: v4740)
Update Notification:

Receive EMails Don't Receive EMails

Trouble Report Files:

No files

Trouble Report Comments:

Name/Time/Date Text top right image
#1 fabien
11:48 Jan 05, 2006

in ./src/config.h
  #define HAVE_PTHREAD 1
  #define HAVE_PTHREAD_H 1

are missing after running ./configure

though it does work very well and pthread ARE supported by Darwin
(at least in mac os 10.4)

2) Bug & Fix in Mac OSX AND Win32 for the threads example:

Under Mac OS X (and also in Windows XP), the threads example bugs if you let it run a while ... the prime number in the multithreaded browser are erroneous.

This comes from the non-atomicity of the increment of loop variable n, simply protect the increment as follows (replaces the prime_func loop):

  // very simple prime number calculator !
  for (; ; ) {
    int p;
    int hn = (int)sqrt((double)n);
    for (p=3; p<=hn; p+=2) if ( n%p == 0 ) break;
    if (p >= hn) {
      char s[128];
      sprintf(s, "%d", n);
      if (n > value->value()) value->value(n);
      n+= step;
      Fl::awake((void*) (browser == browser1? p:0)); // Cause the browser to redraw ...
    } else {
        n+= step;
#2 mike
12:10 Jan 05, 2006

Also, threading is not enabled by default - you MUST provide the "--enable-threads" configure option to enable it!
#3 mike
12:15 Jan 05, 2006
Also, regarding #2, "n" is a local variable referenced by a single thread, so there are no atomicity issues.  It *is* possible for the primes to be added out-of-order, but that is not the point of the demo...  
#4 matt
15:07 Jan 05, 2006
Testing with the current RC, threading works very well on OS X 10.4.3. It is neccessary to configure with --enable-threads, just like Mike stated.

Should threads be enabled by default on Mac? It will change the implementation form using fd's to using pthreads.
#5 mike
16:54 Jan 05, 2006
No, we'll enable threading by default in 2.0, but doing it in 1.1.x might break binary compatibility.  
#6 mike
08:03 Jan 06, 2006
[copy of post to fltk.bugs]

Thanks for the explanation of point #1.

But No , what I was trying to say in #2 had nothing to
do with the out of order :
the display is altered after approx 30secs (depending
on your machine/platform) and display of some VALUES
are about -2147483647.

So the value of the prime number in itself is

And I experimented this bug with OS X 10.4.3/fltk
1.1.7rc2 and Windows XP Pro SP2/fltk, 1.1.7rc2

The patch is suggest correct this.

Sorry for my english,
#7 mike
08:56 Jan 06, 2006
[Please post your responses to the STR - that will ensure we keep a log of all the issues...  Thanks!]

I've tested on multiple platforms - this problem *only* happens on MacOS X 10.4 (and not on previous MacOS X releases).  I've added your workaround since I'm not able to otherwise eliminate the problem, but this is a (rather serious) MacOS X threading bug - the local variables are supposed to exist in separate address spaces, but even setting the stack size attribute in the pthread_create() call does not "fix" the problem.
#8 fabien
10:07 Jan 06, 2006
I totally agree with you mike and this is really weird but please believe me when I said it also happened in Windows XP but after a rather long period of time : I noticed it this  week with the candidate release.  
#9 mike
10:55 Jan 13, 2006
OK, this is fixed...  
bottom left image   bottom right image

Return to Bugs & Features ]


Comments are owned by the poster. All other content is copyright 1998-2021 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to ''.