Hi Gordon,

        Yes.. the same code on Linux, and Win32 works OK. I've actually 
tracked it down to a problem with threads and Numeric (another fink 
module). Here's a message I just sent to the MacPython folks. I'm just 
not sure how I can find out what "resource" is "unavailable". Any hints 
would be appreciated!

thanks,
-steve

From: Steve Spicklemire <[EMAIL PROTECTED]>
Date: Mon Feb 25, 2002  03:47:54 PM America/Indianapolis
To: Jack Jansen <[EMAIL PROTECTED]>
Cc: Steve Spicklemire <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
Subject: Re: [Pythonmac-SIG] CXX/Numeric problem on MacOSX (was building 
vpython on MacOSX)


OK.. it's almost certainly a problem with Numeric and threads. I 
modified NumPy's ufuncobject.c like this:

[spicklemire:~/Packages] steve% diff -c 
Numeric-20.3-orig/Src/ufuncobject.c Numeric-20.3/Src/ufuncobject.c
*** Numeric-20.3-orig/Src/ufuncobject.c Tue Aug 14 11:18:24 2001
--- Numeric-20.3/Src/ufuncobject.c      Mon Feb 25 15:42:08 2002
***************
*** 470,477 ****
         if (self->check_return) check_array(mps[i]);
       }

!     if (self->check_return && errno != 0) {math_error(); return -1;}
!
       return 0;
   }

--- 470,488 ----
         if (self->check_return) check_array(mps[i]);
       }

!     if (self->check_return && (errno != 0))
!       {
!       if ((errno == EDOM) || (errno == ERANGE))
!         {
!           math_error(); return -1;
!         }
!       else
!         {
!           fprintf(stderr, "Hmm.. error encountered -> %i\n", errno);
!           perror("error in ufunc generic function:");
!         }
!       }
!
       return 0;
   }


Now when I try to run the NumTut demo I see:

[spicklemire:~/Packages/Numeric-20.3/Demo] steve% python -c "import 
NumTut;NumTut.test()"
 >>> view(greece)
 >>> view(1.0-greece)
Hmm.. error encountered -> 35
error in ufunc generic function:: Resource temporarily unavailable
 >>> view(greeceBW)
 >>> view(greece*xgrade)
 >>> view(greece*ygrade)
 >>> negative = 1.0 - greece
 >>> view(greece*xgrade + negative*ygrade)
 >>> view(red)
 >>> view(green)
 >>> view(blue)
 >>> sine = sin(xgrade*6*pi)
 >>> view(green*sine + red*(1.0-sine))
 >>> view(green + red[::-1])
 >>> view(transpose(greece, (1,0,2)))
[spicklemire:~/Packages/Numeric-20.3/Demo] steve% python -c "import 
NumTut;NumTut.test()"
 >>> view(greece)
 >>> view(1.0-greece)
 >>> view(greeceBW)
 >>> view(greece*xgrade)
 >>> view(greece*ygrade)
 >>> negative = 1.0 - greece
 >>> view(greece*xgrade + negative*ygrade)
 >>> view(red)
 >>> view(green)
 >>> view(blue)
 >>> sine = sin(xgrade*6*pi)
 >>> view(green*sine + red*(1.0-sine))
 >>> view(green + red[::-1])
 >>> view(transpose(greece, (1,0,2)))
[spicklemire:~/Packages/Numeric-20.3/Demo] steve% python -c "import 
NumTut;NumTut.test()"
 >>> view(greece)
 >>> view(1.0-greece)
Hmm.. error encountered -> 35
error in ufunc generic function:: Resource temporarily unavailable
 >>> view(greeceBW)
 >>> view(greece*xgrade)
 >>> view(greece*ygrade)
 >>> negative = 1.0 - greece
 >>> view(greece*xgrade + negative*ygrade)
 >>> view(red)
 >>> view(green)
 >>> view(blue)
 >>> sine = sin(xgrade*6*pi)
 >>> view(green*sine + red*(1.0-sine))
 >>> view(green + red[::-1])
 >>> view(transpose(greece, (1,0,2)))

So... ufuncs just multiply, divide and suchlike! What "resources" are 
not available? It's fairly clear that it's thread related, since all the 
Numeric tests pass every time in a non-threaded example, as well as my 
own non-threaded testing to attempt to reproduce what I thought 
originally was a linking problem.

So... how can I track down where errno is actually getting set? Does the 
fact that it happens "randomly" mean that it's not due to some numerical 
computation, but more likely about timing between threads?

thanks,
-steve


On Monday, February 25, 2002, at 05:43 PM, Gordon Messmer wrote:

> Your code doesn't look like it's using threads...  I missed the early
> part of this thread.  Did you say that this problem is OS X specific,
> for sure?
>
> On Sun, 2002-02-24 at 22:12, Steve Spicklemire wrote:
>> Nope.. no help. It's looking like the problem might be that errno is
>> being set in one thread, and detected in another. Does that sound
>> possible?
>>
>


_______________________________________________
Fink-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to