Re: [Matplotlib-users] matplotlib with Qt4 backend
Thanks! I can confirm the patches fixes the issue on my computer. Celil On Thu, Nov 12, 2009 at 9:33 AM, Jouni K. Seppänen wrote: > Celil Rufat writes: > > > However, when I try one of the Qt4 examles: > [...] > > File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", > > line 303, in get_fontconfig_fonts > > status, output = commands.getstatusoutput("fc-list file") > > File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/commands.py", > > line 56, in getstatusoutput > > text = pipe.read() > > IOError: [Errno 4] Interrupted system call > > I believe the attached patch (already committed to the trunk) should fix > this on Python 2.6, but I don't have a Qt installation to try it out > with. Can you try this on your system? > > -- > Jouni K. Seppänen > http://www.iki.fi/jks > > > > -- > 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 > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib with Qt4 backend
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 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 IDFUNCTION:NAME 1 18577sendsig: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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib with Qt4 backend
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? > PyQt4 doesn't do it, but I > think something in QApplication does. I really don't know what, though. Here > are > the files that call signal(3) or sigaction(3): > > ./src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c > ./src/3rdparty/phonon/qt7/quicktimevideoplayer.mm > ./src/3rdparty/sqlite/shell.c > ./src/3rdparty/webkit/JavaScriptCore/jsc.cpp > ./src/corelib/io/qfilesystemwatcher_dnotify.cpp > ./src/corelib/io/qprocess_unix.cpp > ./src/corelib/kernel/qcrashhandler.cpp > ./src/corelib/kernel/qeventdispatcher_unix.cpp > ./src/gui/embedded/qwindowsystem_qws.cpp > ./src/gui/embedded/qwssignalhandler.cpp > ./tools/qvfb/main.cpp > > It's not obvious to me that any of these are activated on OS X (the > qcrashhandler.cpp file is intriguing, but it only seems to be used in the X11 > QApplication). dtrace doesn't actually show either signal(3) or sigaction(3) > being called at all. Actually, running a program under dtrace while probing > those functions makes the problem go away. Sometimes. > Ahh, a fun Heisenbug. OK, well if I decide to look for programs that use signals as a means of communication, I'll investigate Qt further. I asked because there's a proprietary library I'm forced to use that does communicate internally with signals. It's a real pain, however, because it means anything else in that process also gets hit with signals and so system calls must be EINTR safe. -Andrew -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib with Qt4 backend
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). PyQt4 doesn't do it, but I think something in QApplication does. I really don't know what, though. Here are the files that call signal(3) or sigaction(3): ./src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c ./src/3rdparty/phonon/qt7/quicktimevideoplayer.mm ./src/3rdparty/sqlite/shell.c ./src/3rdparty/webkit/JavaScriptCore/jsc.cpp ./src/corelib/io/qfilesystemwatcher_dnotify.cpp ./src/corelib/io/qprocess_unix.cpp ./src/corelib/kernel/qcrashhandler.cpp ./src/corelib/kernel/qeventdispatcher_unix.cpp ./src/gui/embedded/qwindowsystem_qws.cpp ./src/gui/embedded/qwssignalhandler.cpp ./tools/qvfb/main.cpp It's not obvious to me that any of these are activated on OS X (the qcrashhandler.cpp file is intriguing, but it only seems to be used in the X11 QApplication). dtrace doesn't actually show either signal(3) or sigaction(3) being called at all. Actually, running a program under dtrace while probing those functions makes the problem go away. Sometimes. -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib with Qt4 backend
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. -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib with Qt4 backend
Celil Rufat writes: > However, when I try one of the Qt4 examles: [...] > File > "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", > line 303, in get_fontconfig_fonts > status, output = commands.getstatusoutput("fc-list file") > File > "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/commands.py", > line 56, in getstatusoutput > text = pipe.read() > IOError: [Errno 4] Interrupted system call I believe the attached patch (already committed to the trunk) should fix this on Python 2.6, but I don't have a Qt installation to try it out with. Can you try this on your system? -- Jouni K. Seppänen http://www.iki.fi/jks Index: lib/matplotlib/font_manager.py === --- lib/matplotlib/font_manager.py (revision 7951) +++ lib/matplotlib/font_manager.py (working copy) @@ -42,7 +42,7 @@ see license/LICENSE_TTFQUERY. """ -import os, sys, glob +import os, sys, glob, subprocess try: set except NameError: @@ -292,16 +292,12 @@ grab all of the fonts the user wants to be made available to applications, without needing knowing where all of them reside. """ -try: -import commands -except ImportError: -return {} - fontext = get_fontext_synonyms(fontext) fontfiles = {} -status, output = commands.getstatusoutput("fc-list file") -if status == 0: +pipe = subprocess.Popen(['fc-list', '', 'file'], stdout=subprocess.PIPE) +output = pipe.communicate()[0] +if pipe.returncode == 0: for line in output.split('\n'): fname = line.split(':')[0] if (os.path.splitext(fname)[1][1:] in fontext and @@ -1244,11 +1240,11 @@ import re def fc_match(pattern, fontext): -import commands fontexts = get_fontext_synonyms(fontext) ext = "." + fontext -status, output = commands.getstatusoutput('fc-match -sv "%s"' % pattern) -if status == 0: +pipe = subprocess.Popen(['fc-match', '-sv', pattern], stdout=subprocess.PIPE) +output = pipe.communicate()[0] +if pipe.returncode == 0: for match in _fc_match_regex.finditer(output): file = match.group(1) if os.path.splitext(file)[1][1:] in fontexts: -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] matplotlib with Qt4 backend
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 I get the following error message: Traceback (most recent call last): File "/opt/local/share/py26-matplotlib/examples/user_interfaces/embedding_in_qt4.py", line 70, in update_figure self.draw() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_qt4agg.py", line 130, in draw FigureCanvasAgg.draw(self) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_agg.py", line 314, in draw self.figure.draw(self.renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py", line 46, in draw_wrapper draw(artist, renderer, *kl) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py", line 773, in draw for a in self.axes: a.draw(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py", line 46, in draw_wrapper draw(artist, renderer, *kl) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axes.py", line 1735, in draw a.draw(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py", line 46, in draw_wrapper draw(artist, renderer, *kl) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py", line 742, in draw tick.draw(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py", line 46, in draw_wrapper draw(artist, renderer, *kl) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py", line 196, in draw self.label1.draw(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/text.py", line 515, in draw bbox, info = self._get_layout(renderer) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/text.py", line 272, in _get_layout 'lp', self._fontproperties, ismath=False) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_agg.py", line 158, in get_text_width_height_descent font = self._get_agg_font(prop) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_agg.py", line 195, in _get_agg_font fname = findfont(prop) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", line 1308, in findfont _rebuild() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", line 1292, in _rebuild fontManager = FontManager() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", line 984, in __init__ self.ttffiles = findSystemFonts(paths) + findSystemFonts() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", line 341, in findSystemFonts for f in get_fontconfig_fonts(fontext): File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py", line 303, in get_fontconfig_fonts status, output = commands.getstatusoutput("fc-list file") File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/commands.py", line 56, in getstatusoutput text = pipe.read() IOError: [Errno 4] Interrupted system call Any ideas on what could be causing this? celil -- 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 Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users