Re: [Pyobjc-dev] Confusing crash that's fixed by adding NSBeep()
Brought to you by:
ronaldoussoren
|
From: Ronald O. <ron...@ma...> - 2010-05-15 17:24:39
|
On 14 May, 2010, at 8:40, Scott Harris wrote:
> I've got this obj-c object in a simple demo program:
>
>
> @implementation junker
> -(id) init
> {
> [super init];
> NSLog(@"initing");
> [self action];
> return self;
> }
> -(void) action
> {
> NSLog(@"junk");
> //NSBeep();
> }
> @end
>
> I call it from Python in my App delegate like this:
>
> from Foundation import *
> from AppKit import *
>
> class PyObjCTestAppDelegate(NSObject):
> def applicationDidFinishLaunching_(self, sender):
> NSLog("Application did finish launching.")
> self.a=junker.alloc().init()
>
> def awakeFromNib(self):
> NSLog("Awoke from NIB")
>
> @objc.IBAction
> def buttonPress_(self, sender):
> NSLog("Button pressed!")
> self.a.action()
>
> The funny thing is that the program crashes when I press the button that calls buttonPress iff NSBeep is commented out, but runs fine if the NSBeep is uncommented. Strange.
>
> Here's the console output:
> 2010-05-14 00:39:23.924 PyObjCTest[99096:a0f] Awoke from NIB
> 2010-05-14 00:39:24.006 PyObjCTest[99096:a0f] Drawing
> 2010-05-14 00:39:24.069 PyObjCTest[99096:a0f] Application did finish launching.
> 2010-05-14 00:39:24.070 PyObjCTest[99096:a0f] initing
> 2010-05-14 00:39:24.070 PyObjCTest[99096:a0f] junk
> 2010-05-14 00:39:29.781 PyObjCTest[99096:a0f] Button Pressed
> 2010-05-14 00:39:29.782 PyObjCTest[99096:a0f] junk
> Program received signal: “EXC_BAD_ACCESS”.
> sharedlibrary apply-load-rules all
>
> Any ideas?
The code looks correct, but indeed crashes. I'm looking into this, at first glance it seems that PyObjC is confused about the return type for [junker -action], and that's probably caused by the metadata files.
One quick way to work around this: rename 'action' to something else.
Ronald
|