Re: [Pyobjc-dev] autorelease pool page corrupted
Brought to you by:
ronaldoussoren
From: Diez B. R. <de...@we...> - 2013-10-26 19:03:40
|
Hi, just to rule out the obvious - you are aware of this? https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html#//apple_ref/doc/uid/20000051-SW6 And of course this: http://pythonhosted.org/pyobjc/core/intro.html?highlight=nsautoreleasepool Also, there seems to be a workaround: http://stackoverflow.com/questions/16453026/pyobjc-autorelease-pool Last, but not least: why on earth WX-python? It's ugly both API and UI-wise, as it essentially looks like Windows - everywhere. Of course that's your choice, but on OS X, people easily are alienated by non-native looking apps. Just a suggestion :) Diez On Oct 24, 2013, at 5:01 PM, Jake Wang <del...@gm...> wrote: > Sorry, for the screenshot of the system error dialog, I included in this post: http://stackoverflow.com/questions/19520078/wxpython-with-pyobjc-autorelease-pool-page-corrupted > > > On Thu, Oct 24, 2013 at 9:52 PM, Jake Wang <del...@gm...> wrote: > Hi Ronald, > > Thanks for your response! You reply only arrived once, so no worries :) > > I've arranged a small app to reproduce this issue. Please see the source code from this link: https://github.com/jiakuan/wx-sample > > New findings > > While preparing the small app, I found that the issue might be related to two event binds together with a multiple-thread environment: > > app.Bind(wx.EVT_QUERY_END_SESSION, OnUnexpectedExit) > app.Bind(wx.EVT_END_SESSION, OnUnexpectedExit) > > Sample project description > > Test 1: From the sample project, please run test_wx_and_event_1.py, you will see a taskbar icon. When you click the taskbar icon and select "Close wxPython Sample", the app quit correctly without any issues. > > Test 2: From the sample project, please run test_wx_and_event_2.py, you will also see a taskbar icon. When you click the taskbar icon and select "Close wxPython Sample", the app quit with a system dialog as the same as the one I attached in my previous post, and an error message will be printed in console like the following: > > objc[9303]: autorelease pool page 0x103889000 corrupted > magic 0x1038a800 0x70000000 0x1039c000 0x50000000 > pthread 0x7fff79c40180 > > If we comment two lines (line 145 and 146) in test_wx_and_event_2.py > > # self.Bind(wx.EVT_QUERY_END_SESSION, self.OnUnexpectedExit) > # self.Bind(wx.EVT_END_SESSION, self.OnUnexpectedExit) > > then no such error when quitting app from the taskbar menu. > > The only difference between test_wx_and_event_1.py and test_wx_and_event_2.py is that the second one used a new thread to maintain an event queue. > > And the issue in test 2 only happened in wxPython 2.9.5.0, no such issues for wxPython 2.9.4.0. > > Really appreciate your help on this issue. > > Thanks, > Jake > > > > On Thu, Oct 24, 2013 at 7:55 PM, Ronald Oussoren <ron...@ma...> wrote: > > On 22 Oct, 2013, at 15:49, Jake Wang <del...@gm...> wrote: > > > Hi, > > > > I used PyObjc in a python application for monitoring some global events: > > > > class MacOSXEventMonitor(): > > def init(self): > > log.debug("Initializing events monitor for Mac OS X...") > > > > self._observer = NSEvent.addGlobalMonitorForEventsMatchingMask_handler_( > > NSLeftMouseDownMask > > | NSLeftMouseUpMask > > | NSRightMouseDownMask > > | NSRightMouseUpMask > > | NSMouseMovedMask > > | NSLeftMouseDraggedMask > > | NSRightMouseDraggedMask > > | NSMouseEnteredMask > > | NSMouseExitedMask > > | NSScrollWheelMask > > | NSKeyDownMask > > | NSKeyUpMask > > | NSAlphaShiftKeyMask > > | NSShiftKeyMask > > | NSControlKeyMask > > | NSAlternateKeyMask > > | NSCommandKeyMask > > | NSNumericPadKeyMask > > | NSHelpKeyMask > > | NSFunctionKeyMask > > | NSFlagsChangedMask, self.handleEvent) > > > > def handleEvent(self, event): > > # NSLog(u"%@", event) > > > > def stop(self): > > NSEvent.removeMonitor_(self._observer) > > > > It is strange that each time when I exit the application, the following error printed in console: > > > > objc[8775]: autorelease pool page 0x1009e0000 corrupted > > magic 0x1009ff00 0xc0000000 0x00000000 0x60000000 > > pthread 0x7fff7e917180 > > > > Also a system dialog shown (please see the screenshot attached). > > > > Anyone encountered this before? Much appreciate for any suggestions/help. > > (I'm sorry if this arrives twice, I just noticed that an earlier attempt at replying seems to be dropped to the floor by mail.app...) > > Do you have a self-contained program that demonstrates the problem? I can get callbacks to handleEvent by embedding the code above > in a small app, but the app doesn't crash in the way you mention. > > Ronald > > > > > Thanks, > > Jake > > > > ------------------------------------------------------------------------------ > > October Webinars: Code for Performance > > Free Intel webinars can help you accelerate application performance. > > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from > > the latest Intel processors and coprocessors. See abstracts and register > > > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk_______________________________________________ > > Pyobjc-dev mailing list > > Pyo...@li... > > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > > > ------------------------------------------------------------------------------ > October Webinars: Code for Performance > Free Intel webinars can help you accelerate application performance. > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from > the latest Intel processors and coprocessors. See abstracts and register > > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk_______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev |