View Issue Details

IDProjectCategoryView StatusLast Update
0003242Slicer4Core: Base Codepublic2017-06-07 23:27
Reporterlassoan Assigned Tojcfr  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.3.0Fixed in VersionSlicer 4.3.0 
Summary0003242: Slicer crashes if attempting to save an mrb file to a read-only directory
Description
  • Start Slicer
  • Attempt to save the scene as an .mrb file to C:\Program Files (or any other read-only directory)
    => Slicer crashes

It happens quite often, as C:\Program Files\Slicer 4.2.0-2013-07-20 is the default saving directory, which is read-only.

Tested on Slicer 4.2.0-2013-07-20 (Win64)

TagsNo tags attached.

Relationships

related to 0003366 closedjcfr Save dialog should filter out readonly directory 

Activities

pieper

pieper

2013-08-27 11:52

administrator   ~0009638

I could reproduce this on mac by trying to write to a read-only directory. Looks like a bug in libarchive (see stack trace). We should check that directory is writable before zipping.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_c.dylib 0x00007fff984a5b75 bzero$VARIANT$sse42 + 149
1 libarchive.dylib 0x000000011328e9cc __inline_memset_chk + 76 (_string.h:83)
2 libarchive.dylib 0x000000011328f72a archive_write_client_close + 394 (archive_write.c:428)
3 libarchive.dylib 0x000000011328ee1b __archive_write_close_filter + 43 (archive_write.c:258)
4 libarchive.dylib 0x000000011328fa94 _archive_write_close + 260 (archive_write.c:513)
5 libarchive.dylib 0x000000011328e300 archive_write_close + 32 (archive_virtual.c:60)
6 libMRMLLogic.dylib 0x000000011313317e zip + 2654 (vtkArchive.cxx:432)
7 libMRMLLogic.dylib 0x000000011307ece7 vtkMRMLApplicationLogic::Zip(char const, char const) + 53 (vtkMRMLApplicationLogic.cxx:339)
8 libqSlicerDataModule.dylib 0x00000001386e0ee1 qSlicerSceneWriter::writeToMRB(QMap<QString, QVariant> const&) + 5431 (qSlicerSceneWriter.cxx:237)
9 libqSlicerDataModule.dylib 0x00000001386e4174 qSlicerSceneWriter::write(QMap<QString, QVariant> const&) + 1488 (qSlicerSceneWriter.cxx:102)
10 libqSlicerBaseQTCore.dylib 0x000000011083f348 qSlicerCoreIOManager::saveNodes(QString, QMap<QString, QVariant> const&) + 590 (qSlicerCoreIOManager.cxx:477)
11 libqSlicerBaseQTGUI.dylib 0x000000010f8144be qSlicerSaveDataDialogPrivate::saveScene() + 1246 (qSlicerSaveDataDialog.cxx:1003)
12 libqSlicerBaseQTGUI.dylib 0x000000010f819644 qSlicerSaveDataDialogPrivate::save() + 158 (qSlicerSaveDataDialog.cxx:679)
13 libqSlicerBaseQTGUI.dylib 0x000000010f8196d2 qSlicerSaveDataDialogPrivate::accept() + 38 (qSlicerSaveDataDialog.cxx:653)
14 libqSlicerBaseQTGUI.dylib 0x000000010f8a157a qSlicerSaveDataDialogPrivate::qt_metacall(QMetaObject::Call, int, void) + 278 (moc_qSlicerSaveDataDialog_p.cxx:100)
15 QtCore 0x000000011ad4ee26 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
16 QtGui 0x000000011a448662 QDialogButtonBox::qt_metacall(QMetaObject::Call, int, void) + 306
17 QtCore 0x000000011ad4ee26 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
18 QtGui 0x000000011a6ed831 QAbstractButton::clicked(bool) + 49
19 QtGui 0x000000011a4187d0 QAbstractButtonPrivate::emitClicked() + 64
20 QtGui 0x000000011a419a0a QAbstractButtonPrivate::click() + 154
21 QtGui 0x000000011a419c61 QAbstractButton::mouseReleaseEvent(QMouseEvent) + 113
22 QtGui 0x000000011a0e8133 QWidget::event(QEvent
) + 2371
23 QtGui 0x000000011a418b08 QAbstractButton::event(QEvent) + 40
24 QtGui 0x000000011a4b3645 QPushButton::event(QEvent
) + 69
25 QtGui 0x000000011a08d15d QApplicationPrivate::notify_helper(QObject, QEvent) + 189
26 QtGui 0x000000011a094e90 QApplication::notify(QObject, QEvent) + 7776
27 libqSlicerBaseQTGUI.dylib 0x000000010f7a86b0 qSlicerApplication::notify(QObject, QEvent) + 74 (qSlicerApplication.cxx:299)
28 QtCore 0x000000011ad484dc QCoreApplication::notifyInternal(QObject, QEvent) + 124
29 QtGui 0x000000011a08d1fc qt_sendSpontaneousEvent(QObject, QEvent) + 44
30 QtGui 0x000000011a0432ed qt_mac_handleMouseEvent(void, void, QEvent::Type, Qt::MouseButton) + 2269
31 QtGui 0x000000011a033a66 -[QCocoaView mouseUp:] + 22
32 com.apple.AppKit 0x00007fff903c8d5e -[NSWindow sendEvent:] + 6504
33 QtGui 0x000000011a031b21 -[QCocoaPanel sendEvent:] + 241
34 com.apple.AppKit 0x00007fff903623a5 -[NSApplication sendEvent:] + 5593
35 QtGui 0x000000011a03e47a -[QNSApplication sendEvent:] + 74
36 com.apple.AppKit 0x00007fff905b0797 -[NSApplication _realDoModalLoop:peek:] + 708
37 com.apple.AppKit 0x00007fff905a9f4c -[NSApplication runModalSession:] + 48
38 QtGui 0x000000011a04804e QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1294
39 QtCore 0x000000011ae34a34 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
40 QtCore 0x000000011ae34d54 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180
41 QtGui 0x000000011a51b2c5 QDialog::exec() + 229
42 libqSlicerBaseQTGUI.dylib 0x000000010f8224b1 qSlicerSaveDataDialog::exec(QMap<QString, QVariant> const&) + 201 (qSlicerSaveDataDialog.cxx:1230)
43 libqSlicerBaseQTGUI.dylib 0x000000010f7d0569 qSlicerIOManager::openDialog(QString, qSlicerFileDialog::IOAction, QMap<QString, QVariant>, vtkCollection*) + 1519 (qSlicerIOManager.cxx:253)
44 libqSlicerApp.dylib 0x000000010f401e5c qSlicerIOManager::openSaveDataDialog() + 108 (qSlicerIOManager.h:185)
45 libqSlicerApp.dylib 0x000000010f3fe789 qSlicerAppMainWindowCore::onFileSaveSceneActionTriggered() + 47 (qSlicerAppMainWindowCore.cxx:179)
46 libqSlicerApp.dylib 0x000000010f4030f4 qSlicerAppMainWindowCore::qt_metacall(QMetaObject::Call, int, void) + 260 (moc_qSlicerAppMainWindowCore.cxx:130)
47 QtCore 0x000000011ad4ee26 QMetaObject::activate(QObject, QMetaObject const, int, void
) + 710
48 QtGui 0x000000011a086ab1 QAction::triggered(bool) + 49
49 QtGui 0x000000011a087e44 QAction::activate(QAction::ActionEvent) + 180
50 QtGui 0x000000011a4199c9 QAbstractButtonPrivate::click() + 89
51 QtGui 0x000000011a419c61 QAbstractButton::mouseReleaseEvent(QMouseEvent) + 113
52 QtGui 0x000000011a4e6bc2 QToolButton::mouseReleaseEvent(QMouseEvent
) + 18
53 QtGui 0x000000011a0e8133 QWidget::event(QEvent) + 2371
54 QtGui 0x000000011a418b08 QAbstractButton::event(QEvent
) + 40
55 QtGui 0x000000011a4e89cf QToolButton::event(QEvent) + 63
56 QtGui 0x000000011a08d15d QApplicationPrivate::notify_helper(QObject
, QEvent) + 189
57 QtGui 0x000000011a094e90 QApplication::notify(QObject
, QEvent) + 7776
58 libqSlicerBaseQTGUI.dylib 0x000000010f7a86b0 qSlicerApplication::notify(QObject
, QEvent) + 74 (qSlicerApplication.cxx:299)
59 QtCore 0x000000011ad484dc QCoreApplication::notifyInternal(QObject
, QEvent) + 124
60 QtGui 0x000000011a08d1fc qt_sendSpontaneousEvent(QObject
, QEvent) + 44
61 QtGui 0x000000011a0432ed qt_mac_handleMouseEvent(void
, void*, QEvent::Type, Qt::MouseButton) + 2269
62 QtGui 0x000000011a033a66 -[QCocoaView mouseUp:] + 22
63 com.apple.AppKit 0x00007fff903c8d5e -[NSWindow sendEvent:] + 6504
64 QtGui 0x000000011a03ae01 -[QCocoaWindow sendEvent:] + 241
65 com.apple.AppKit 0x00007fff903623a5 -[NSApplication sendEvent:] + 5593
66 QtGui 0x000000011a03e47a -[QNSApplication sendEvent:] + 74
67 com.apple.AppKit 0x00007fff902f8a0e -[NSApplication run] + 555
68 QtGui 0x000000011a048174 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1588
69 QtCore 0x000000011ae34a34 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
70 QtCore 0x000000011ae34d54 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180
71 QtCore 0x000000011ae3637c QCoreApplication::exec() + 188
72 0x000000010f37df6f (anonymous namespace)::SlicerAppMain(int, char**) + 6047 (Main.cxx:193)
73 0x000000010f37c30e main + 46 (Main.cxx:225)
74 0x000000010f37c2d4 start + 52

jcfr

jcfr

2013-09-03 12:00

administrator   ~0009855

Fixed in r22395
See http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;revision=22395

jcfr

jcfr

2014-03-06 05:00

administrator   ~0010862

Closing resolved issues that have not been updated in more than 3 months

jcfr

jcfr

2017-06-07 23:27

administrator   ~0014593

Fix committed to 2145-support-for-installing-extension-from-file branch.

Related Changesets

Slicer: 2145-support-for-installing-extension-from-file b75926b2

2013-09-03 16:00:23

jcfr

Details Diff
BUG: Prevent crash when attempting to save a *.mrb in a readonly folder.

Fixes 0003242

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22395 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Data/qSlicerSceneWriter.cxx Diff File

Issue History

Date Modified Username Field Change
2013-07-23 16:05 lassoan New Issue
2013-07-23 16:05 lassoan Status new => assigned
2013-07-23 16:05 lassoan Assigned To => jcfr
2013-08-27 11:52 pieper Note Added: 0009638
2013-08-27 11:52 pieper Status assigned => acknowledged
2013-09-03 11:38 jcfr Status acknowledged => assigned
2013-09-03 11:38 jcfr Target Version => Slicer 4.3.0
2013-09-03 11:59 jcfr Relationship added related to 0003366
2013-09-03 12:00 jcfr Note Added: 0009855
2013-09-03 12:00 jcfr Status assigned => resolved
2013-09-03 12:00 jcfr Fixed in Version => Slicer 4.3.0
2013-09-03 12:00 jcfr Resolution open => fixed
2014-03-06 05:00 jcfr Note Added: 0010862
2014-03-06 05:02 jcfr Status resolved => closed
2017-06-07 23:27 jcfr Changeset attached => Slicer 2145-support-for-installing-extension-from-file b75926b2
2017-06-07 23:27 jcfr Note Added: 0014593