On 2009-11-12 16:44 PM, Andrew Straw wrote:
> Robert Kern wrote:
>> On 2009-11-12 12:05 PM, Andrew Straw wrote:
>>
>>> Celil Rufat wrote:
>>>
>>>> I just installed matplotlib on Snow Leopard 10.6 with the Qt4 backend
>>>> (via macports). However, when I try one of the Qt4 examles:
>>>>
>>>> python
>>>> /opt/local/share/py26-matplotlib/examples/user_interfaces/embedding_in_qt4.py
>>>>
>>>>
>>>> IOError: [Errno 4] Interrupted system call
>>>>
>>>> Any ideas on what could be causing this?
>>>>
>>> Out of curiosity, does anyone know where the signal interrupting the
>>> system call is originating? Is this a standard communication mechanism
>>> within Qt4? (I have never used Qt4.) I'm interested in knowing about OSS
>>> that use signals as a means of across-thread or across-process
>>> communication.
>>>
>>
>> This problem arises when signal handlers are installed, not necessarily when
>> a
>> signal itself is sent (dtrace doesn't detect any).
> Hmm, but a system call isn't going to get interrupted and return EINTR
> by any means other than a signal. So the OP must have had a signal
> interrupting the call and it must have come from somewhere. Or... am I
> wrong?
Well, SIGCHLD is sent by the OS when the child process completes. There is a
SIGCHLD handler registered in ./src/corelib/io/qprocess_unix.cpp . I'm not sure
how to avoid it, though.
I think I can verify this now:
$ really dtrace -n 'proc:::signal-handle /pid==$target/ { ustack();
printf("Signal: %d\n", arg0);}' -c "python application.py"
dtrace: description 'proc:::signal-handle ' matched 2 probes
Traceback (most recent call last):
File "application.py", line 247, in <module>
commands.getstatusoutput( "otool -L %s | grep libedit" % _rl.__file__ )
File
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/commands.py",
line 54, in getstatusoutput
text = pipe.read()
IOError: [Errno 4] Interrupted system call
dtrace: pid 47973 has exited
CPU ID FUNCTION:NAME
1 18577 sendsig:signal-handle
libSystem.B.dylib`read+0xa
libSystem.B.dylib`__srefill+0x127
libSystem.B.dylib`fread+0x9f
0x1c2d9b
0x23affa
0x23bde1
0x23c7fa
0x23c907
0x260d37
0x2610e3
0x26f855
python`0x1f82
python`0x1ea9
0x2
Signal: 20
$ python -c "import signal;print signal.SIGCHLD"
20
So it is getting SIGCHLD. I think my previous probes weren't getting signals
from the OS itself.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users