[Qt-interest] [OS X] Lion Sandboxing? Terminating app due to uncaught exception 'NSRangeException'
Israel Brewster
israel at frontierflying.com
Thu Oct 6 18:27:07 CEST 2011
Just finished a build of the latest 4.8, and same problem. So apparently not fixed yet. Is there any hope of this getting fixed before the App Store requirement goes into effect, or am I going to have to re-write the file saving portions of my app to use Apple's API directly? I'd rather not, of course, but this is a total show-stopper bug otherwise.
On Oct 4, 2011, at 11:36 AM, Israel Brewster wrote:
> I just tried this with my app, and I'm running into the same problem, although I haven't tried with the latest 4.8.0 beta yet (building now). I don't suppose anyone has come up with a solution yet, have they? This is going to be a real show-stopper for me if not.
>
> On Aug 29, 2011, at 2:33 PM, Till Oliver Knoll wrote:
>
>> Hello,
>>
>> I am trying to put my application into a "sandbox" on "Lion" (OS X 10.7)
>> by following the procedures here:
>>
>>
>> https://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005929-CH1-SW1
>>
>> The only entitlement I have given to my application is
>> "com.apple.security.documents.user-selected.read-write" which according
>> to above document should use the "Powerbox" daemon for rendering file
>> dialog boxes from a separate process:
>>
>> "Any time an application running inside a sandbox invokes an NSOpenPanel
>> or NSSavePanel dialog, rather than showing the panels directly, AppKit
>> automatically asks the Powerbox to present the dialog. From a developer
>> perspective, there are no code changes required in terms of how these
>> panels are used; this process is fully transparent."
>>
>> So I was hoping this would also work "out of the box" with a given Qt
>> application on Qt 4.7.3 Cocoa, I also tried with the latest Qt 4.8.0
>> Beta, same result.
>>
>>
>> However when I try to access a native QFileDialog the application
>> crashes (see below for crash report)!
>>
>> Anyone else tried succesfully to put a Qt Cocoa application into a
>> sandbox on "Lion"? (Note that this will become a requirement from late
>> 2011 onwards for the Mac App Store).
>>
>> Upon application start I see that the proper "sandboxed" Container is
>> indeed created under ~/Library/Containers/net.company.MyApp - my config
>> files (QSettings ...) are stored there properly.
>>
>>
>> Basically I have:
>>
>> - Created a self-signed Certificate for code signing
>>
>> - Made sure I have CFBundleIdentifier and CFBundleName
>> defined in the Info.plist
>>
>> - Added the following linker flag:
>> QMAKE_LFLAGS += -sectcreate __TEXT __info_plist /path/to/Info.plist
>>
>> - Signed the executable with:
>>
>> codesign -f -s "My codesign certificate" --entitlements
>> /path/to/entitlements.plist /path/to/application.app
>>
>> - A check with:
>>
>> codesign -d --entitlements - /path/to/MyApp.app/
>>
>> reveals the expected:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
>> "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
>> <plist version="1.0">
>> <dict>
>> <key>com.apple.security.app-sandbox</key>
>> <true/>
>> <key>com.apple.security.documents.user-selected.read-write</key>
>> <true/>
>> </dict>
>> </plist>
>>
>>
>> Here is the crash report when I execute the window-modal QFileDialog as
>> window sheet:
>>
>> QFileDialog *fileDialog = new QFileDialog(this, Qt::Sheet);
>> ...
>> fileDialog->setWindowModality(Qt::WindowModal);
>> fileDialog->setAcceptMode(QFileDialog::AcceptSave);
>> fileDialog->setAttribute(Qt::WA_DeleteOnClose);
>> ...
>> fileDialog->open(this, SLOT(handleFileSaveAsSelected(const QString &)));
>>
>>
>> Crash log:
>>
>> Process: Screenie [3667]
>> Path: /path/to/MyApp
>> Identifier: net.company.MyApp
>> Version: ??? (1.0)
>> Code Type: X86-64 (Native)
>> Parent Process: launchd [206]
>>
>> Date/Time: 2011-08-30 00:27:09.791 +0200
>> OS Version: Mac OS X 10.7.1 (11B26)
>> Report Version: 9
>>
>> Interval Since Last Report: 25212 sec
>> Crashes Since Last Report: 14
>> Per-App Interval Since Last Report: 105 sec
>> Per-App Crashes Since Last Report: 4
>> Anonymous UUID: 0099742B-E1E5-4903-B8C6-0C8C1E37846B
>>
>> Crashed Thread: 0 Dispatch queue: com.apple.main-thread
>>
>> Exception Type: EXC_CRASH (SIGABRT)
>> Exception Codes: 0x0000000000000000, 0x0000000000000000
>>
>> Application Specific Information:
>> objc[3667]: garbage collection is OFF
>> *** Terminating app due to uncaught exception 'NSRangeException',
>> reason: 'Cannot remove an observer <NSRemoteSavePanel 0x105e48990> for
>> the key path "panelSettings" from <NSRemoteSavePanel 0x105e48990>
>> because it is not registered as an observer.'
>> *** First throw call stack:
>> (
>> 0 CoreFoundation 0x00007fff90f30986
>> __exceptionPreprocess + 198
>> 1 libobjc.A.dylib 0x00007fff91b70d5e
>> objc_exception_throw + 43
>> 2 CoreFoundation 0x00007fff90f307ba
>> +[NSException raise:format:arguments:] + 106
>> 3 CoreFoundation 0x00007fff90f30744
>> +[NSException raise:format:] + 116
>> 4 Foundation 0x00007fff9420298a
>> -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:]
>> + 619
>> 5 Foundation 0x00007fff942026c8
>> -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:] + 121
>> 6 RemoteViewServices 0x00007fff8e426fe6
>> -[NSRemoteSavePanel dealloc] + 39
>> 7 libobjc.A.dylib 0x00007fff91b6903c
>> _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 434
>> 8 CoreFoundation 0x00007fff90ebe6a5
>> _CFAutoreleasePoolPop + 37
>> 9 Foundation 0x00007fff941a0f01
>> -[NSAutoreleasePool release] + 154
>> 10 QtGui 0x000000010011dd1d
>> _ZN18QFileDialogPrivate18showCocoaFilePanelEv + 157
>> 11 QtGui 0x000000010011dd5c
>> _ZN18QFileDialogPrivate14setVisible_sysEb + 44
>> 12 QtGui 0x00000001005dbe7d
>> _ZN11QFileDialog10setVisibleEb + 205
>> 13 QtGui 0x00000001005d6538
>> _ZN7QDialog4openEv + 136
>> 14 MyApp 0x0000000100007007
>> _ZN10MainWindow25on_saveAsAction_triggeredEv + 359
>> 15 MyApp 0x000000010001352f
>> _ZN10MainWindow11qt_metacallEN11QMetaObject4CallEiPPv + 95
>> 16 QtCore 0x0000000100ecd446
>> _ZN11QMetaObject8activateEP7QObjectPKS_iPPv + 2150
>> 17 QtGui 0x000000010012d581
>> _ZN7QAction9triggeredEb + 49
>> 18 QtGui 0x000000010012e914
>> _ZN7QAction8activateENS_11ActionEventE + 180
>> 19 QtGui 0x00000001000e3d5a
>> -[QCocoaMenuLoader qtDispatcherToQAction:] + 106
>> 20 CoreFoundation 0x00007fff90f2011d -[NSObject
>> performSelector:withObject:] + 61
>> 21 AppKit 0x00007fff8cd37852
>> -[NSApplication sendAction:to:from:] + 139
>> 22 AppKit 0x00007fff8ce2434f -[NSMenuItem
>> _corePerformAction] + 399
>> 23 AppKit 0x00007fff8ce24086
>> -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 125
>> 24 AppKit 0x00007fff8d0bfe9c -[NSMenu
>> _internalPerformActionForItemAtIndex:] + 38
>> 25 AppKit 0x00007fff8cf523f1
>> -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 138
>> 26 AppKit 0x00007fff8cd9e0bf
>> NSSLMMenuEventHandler + 339
>> 27 HIToolbox 0x00007fff93e668ec
>> _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec
>> + 1263
>> 28 HIToolbox 0x00007fff93e65ef8
>> _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec
>> + 446
>> 29 HIToolbox 0x00007fff93e7cd03
>> SendEventToEventTarget + 76
>> 30 HIToolbox 0x00007fff93ec3249
>> _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef
>> + 398
>> 31 HIToolbox 0x00007fff93faa0f1
>> SendMenuCommandWithContextAndModifiers + 56
>> 32 HIToolbox 0x00007fff93ff05e1
>> SendMenuItemSelectedEvent + 253
>> 33 HIToolbox 0x00007fff93ebc32d
>> _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 101
>> 34 HIToolbox 0x00007fff93eb3a75
>> _ZL14MenuSelectCoreP8MenuData5PointdjPP13OpaqueMenuRefPt + 600
>> 35 HIToolbox 0x00007fff93eb3034
>> _HandleMenuSelection2 + 585
>> 36 AppKit 0x00007fff8cc9dce1
>> _NSHandleCarbonMenuEvent + 250
>> 37 AppKit 0x00007fff8cc336c7
>> _DPSNextEvent + 1993
>> 38 AppKit 0x00007fff8cc32a95
>> -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
>> 39 AppKit 0x00007fff8cc2f3d6
>> -[NSApplication run] + 463
>> 40 QtGui 0x00000001000ef750
>> _ZN19QEventDispatcherMac13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE
>> + 1824
>> 41 QtCore 0x0000000100eb4664
>> _ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE + 68
>> 42 QtCore 0x0000000100eb4a14
>> _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE + 324
>> 43 QtCore 0x0000000100eb790c
>> _ZN16QCoreApplication4execEv + 188
>> 44 MyApp 0x0000000100005dfb main + 59
>> 45 MyApp 0x0000000100005644 start + 52
>> 46 ??? 0x0000000000000002 0x0 + 2
>> )
>>
>> Performing @selector(qtDispatcherToQAction:) from sender NSMenuItem
>> 0x1014ce060
>> terminate called throwing an exception
>> abort() called
>>
>> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
>> 0 libsystem_kernel.dylib 0x00007fff91aadce2 __pthread_kill + 10
>> 1 libsystem_c.dylib 0x00007fff8f5f57d2 pthread_kill + 95
>> 2 libsystem_c.dylib 0x00007fff8f5e6a7a abort + 143
>> 3 libc++abi.dylib 0x00007fff8a6667bc abort_message + 214
>> 4 libc++abi.dylib 0x00007fff8a663fcf
>> default_terminate() + 28
>> 5 libobjc.A.dylib 0x00007fff91b711b9 _objc_terminate + 94
>> 6 libc++abi.dylib 0x00007fff8a664001
>> safe_handler_caller(void (*)()) + 11
>> 7 libc++abi.dylib 0x00007fff8a663ff6
>> __cxxabiv1::__terminate(void (*)()) + 9
>> 8 libc++abi.dylib 0x00007fff8a664346
>> __cxa_call_terminate + 59
>> 9 libc++abi.dylib 0x00007fff8a6647c3
>> __gxx_personality_v0 + 207
>> 10 libunwind.dylib 0x00007fff8c6594c6 unwind_phase2 + 160
>> 11 libunwind.dylib 0x00007fff8c65896e
>> _Unwind_RaiseException + 218
>> 12 com.apple.Foundation 0x00007fff94202713
>> -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:] + 196
>> 13 com.apple.RemoteViewServices 0x00007fff8e426fe6
>> -[NSRemoteSavePanel dealloc] + 39
>> 14 libobjc.A.dylib 0x00007fff91b6903c (anonymous
>> namespace)::AutoreleasePoolPage::pop(void*) + 434
>> 15 com.apple.CoreFoundation 0x00007fff90ebe6a5
>> _CFAutoreleasePoolPop + 37
>> 16 com.apple.Foundation 0x00007fff941a0f01
>> -[NSAutoreleasePool release] + 154
>> 17 QtGui 0x000000010011dd1d
>> QFileDialogPrivate::showCocoaFilePanel() + 157
>> 18 QtGui 0x000000010011dd5c
>> QFileDialogPrivate::setVisible_sys(bool) + 44
>> 19 QtGui 0x00000001005dbe7d
>> QFileDialog::setVisible(bool) + 205
>> 20 QtGui 0x00000001005d6538 QDialog::open() + 136
>> 21 net.company.MyApp 0x0000000100007007
>> MainWindow::on_saveAsAction_triggered() + 359
>> 22 net.company.MyApp 0x000000010001352f
>> MainWindow::qt_metacall(QMetaObject::Call, int, void**) + 95
>> 23 QtCore 0x0000000100ecd446
>> QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2150
>> 24 QtGui 0x000000010012d581
>> QAction::triggered(bool) + 49
>> 25 QtGui 0x000000010012e914
>> QAction::activate(QAction::ActionEvent) + 180
>> 26 QtGui 0x00000001000e3d5a -[QCocoaMenuLoader
>> qtDispatcherToQAction:] + 106
>> 27 com.apple.CoreFoundation 0x00007fff90f2011d -[NSObject
>> performSelector:withObject:] + 61
>> 28 com.apple.AppKit 0x00007fff8cd37852 -[NSApplication
>> sendAction:to:from:] + 139
>> 29 com.apple.AppKit 0x00007fff8ce2434f -[NSMenuItem
>> _corePerformAction] + 399
>> 30 com.apple.AppKit 0x00007fff8ce24086 -[NSCarbonMenuImpl
>> performActionWithHighlightingForItemAtIndex:] + 125
>> 31 com.apple.AppKit 0x00007fff8d0bfe9c -[NSMenu
>> _internalPerformActionForItemAtIndex:] + 38
>> 32 com.apple.AppKit 0x00007fff8cf523f1 -[NSCarbonMenuImpl
>> _carbonCommandProcessEvent:handlerCallRef:] + 138
>> 33 com.apple.AppKit 0x00007fff8cd9e0bf
>> NSSLMMenuEventHandler + 339
>> 34 com.apple.HIToolbox 0x00007fff93e668ec
>> _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec
>> + 1263
>> 35 com.apple.HIToolbox 0x00007fff93e65ef8
>> _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec
>> + 446
>> 36 com.apple.HIToolbox 0x00007fff93e7cd03
>> SendEventToEventTarget + 76
>> 37 com.apple.HIToolbox 0x00007fff93ec3249
>> _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef
>> + 398
>> 38 com.apple.HIToolbox 0x00007fff93faa0f1
>> SendMenuCommandWithContextAndModifiers + 56
>> 39 com.apple.HIToolbox 0x00007fff93ff05e1
>> SendMenuItemSelectedEvent + 253
>> 40 com.apple.HIToolbox 0x00007fff93ebc32d
>> _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 101
>> 41 com.apple.HIToolbox 0x00007fff93eb3a75
>> _ZL14MenuSelectCoreP8MenuData5PointdjPP13OpaqueMenuRefPt + 600
>> 42 com.apple.HIToolbox 0x00007fff93eb3034
>> _HandleMenuSelection2 + 585
>> 43 com.apple.AppKit 0x00007fff8cc9dce1
>> _NSHandleCarbonMenuEvent + 250
>> 44 com.apple.AppKit 0x00007fff8cc336c7 _DPSNextEvent + 1993
>> 45 com.apple.AppKit 0x00007fff8cc32a95 -[NSApplication
>> nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
>> 46 com.apple.AppKit 0x00007fff8cc2f3d6 -[NSApplication
>> run] + 463
>> 47 QtGui 0x00000001000ef750
>> QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) +
>> 1824
>> 48 QtCore 0x0000000100eb4664
>> QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
>> 49 QtCore 0x0000000100eb4a14
>> QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 324
>> 50 QtCore 0x0000000100eb790c
>> QCoreApplication::exec() + 188
>> 51 net.company.MyApp 0x0000000100005dfb main + 59
>> 52 net.company.MyApp 0x0000000100005644 start + 52
>>
>>
>> _______________________________________________
>> Qt-interest mailing list
>> Qt-interest at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>
> -----------------------------------------------
> Israel Brewster
> Computer Support Technician II
> Era Alaska
> 5245 Airport Industrial Rd
> Fairbanks, AK 99709
> (907) 450-7250 x7293
> -----------------------------------------------
>
> <Israel Brewster.vcf>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
-----------------------------------------------
Israel Brewster
Computer Support Technician II
Era Alaska
5245 Airport Industrial Rd
Fairbanks, AK 99709
(907) 450-7250 x7293
-----------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Israel Brewster.vcf
Type: text/directory
Size: 417 bytes
Desc: not available
Url : http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20111006/3d405062/attachment.bin
-------------- next part --------------
More information about the Qt-interest-old
mailing list