Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001998 [Slicer3] Base Code major always 2012-05-08 16:14 2012-05-14 10:44
Reporter kentwilliams View Status public  
Assigned To
Priority normal Resolution open  
Status new  
Summary 0001998: Rewrite DicomToNrddConverter
Description I have re-written DicomToNrrdConverter to solve several problems.

1. The old version was dependent on GDCM 1. I use DCMTK instead of GDCM to access the private tags that hold DWI data -- the B-Value & Gradient Directions.

2. Removed dead code and code that made no sense.

3. Restructured the code to be easier to understand and maintain.

4. Fix bugs.

5. Convert a wider variety of Dicom datasets.
Additional Information
Tags No tags attached.
Attached Files

- Relationships

-  Notes
(0004336)
pieper (administrator)
2012-05-11 17:13

Hi Kent -

I did a test with your pull request for the dicom to nrrd converter - I found that in order to compile I also needed to merge in Jc's branch that expose dcmtk and I also rebased to the current svn since there were some changes I wanted to test against with the slicer dicom database. Here's my integration branch:

https://github.com/pieper/Slicer/commits/1998-mergeTest [^]

However when I run it I get the crash below. I tested with the SiemensTrioTimB17-DWI dataset I got from you guys.

Can you try this on your end?

-Steve

Program received signal SIGSEGV, Segmentation fault.
0x00007fffb3284f1c in ModuleEntryPoint (argc=11, argv=0x5885d10) at /home/pieper/slicer4/latest/Slicer/Modules/CLI/DicomToNrrdConverter/DicomToNrrdConverter.cxx:1240
1240 std::cout << " Directions 0: " << valueArray[0] << std::endl;
(gdb) where
#0 0x00007fffb3284f1c in ModuleEntryPoint (argc=11, argv=0x5885d10) at /home/pieper/slicer4/latest/Slicer/Modules/CLI/DicomToNrrdConverter/DicomToNrrdConverter.cxx:1240
0000001 0x00007ffff7441326 in vtkSlicerCLIModuleLogic::ApplyTask (this=0x2d120c0, clientdata=0x57ee740) at /home/pieper/slicer4/latest/Slicer/Base/QTCLI/vtkSlicerCLIModuleLogic.cxx:1607
0000002 0x00007ffff74390f2 in vtkSlicerCLIModuleLogic::ApplyAndWait (this=0x2d120c0, node=0x57ee740, updateDisplay=true) at /home/pieper/slicer4/latest/Slicer/Base/QTCLI/vtkSlicerCLIModuleLogic.cxx:340
0000003 0x00007fffcc727db6 in PyvtkSlicerCLIModuleLogic_ApplyAndWait (self=0x16b10a8, args=0x16cac90) at /home/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/Base/QTCLI/vtkSlicerCLIModuleLogicPython.cxx:510
0000004 0x00007fffeff95ff4 in call_function (f=0x57ecdd0, throwflag=<value optimized out>) at Python/ceval.c:3750
0000005 PyEval_EvalFrameEx (f=0x57ecdd0, throwflag=<value optimized out>) at Python/ceval.c:2412
0000006 0x00007fffeff97d20 in PyEval_EvalCodeEx (co=0xfc1558, globals=<value optimized out>, locals=<value optimized out>, args=0x4, argcount=<value optimized out>, kws=<value optimized out>, kwcount=1,
    defs=0x106bb08, defcount=3, closure=0x0) at Python/ceval.c:3000
0000007 0x00007fffeff9606f in fast_function (f=0x57ed8b0, throwflag=<value optimized out>) at Python/ceval.c:3846
0000008 call_function (f=0x57ed8b0, throwflag=<value optimized out>) at Python/ceval.c:3771
0000009 PyEval_EvalFrameEx (f=0x57ed8b0, throwflag=<value optimized out>) at Python/ceval.c:2412
0000010 0x00007fffeff968e8 in fast_function (f=0x57ea180, throwflag=<value optimized out>) at Python/ceval.c:3836
0000011 call_function (f=0x57ea180, throwflag=<value optimized out>) at Python/ceval.c:3771
0000012 PyEval_EvalFrameEx (f=0x57ea180, throwflag=<value optimized out>) at Python/ceval.c:2412
0000013 0x00007fffeff97d20 in PyEval_EvalCodeEx (co=0x1506210, globals=<value optimized out>, locals=<value optimized out>, args=0x1, argcount=<value optimized out>, kws=<value optimized out>, kwcount=0, defs=0x0,
    defcount=0, closure=0x0) at Python/ceval.c:3000
0000014 0x00007fffeff1e0d0 in function_call (func=0x150c500, arg=0x159f4d0, kw=0x0) at Objects/funcobject.c:524
0000015 0x00007fffefef10d3 in PyObject_Call (func=0x150c500, arg=0x0, kw=0x0) at Objects/abstract.c:2492
0000016 0x00007fffeff02aef in instancemethod_call (func=0x150c500, arg=0x159f4d0, kw=0x0) at Objects/classobject.c:2579
0000017 0x00007fffefef10d3 in PyObject_Call (func=0x16a77d0, arg=0x0, kw=0x0) at Objects/abstract.c:2492
0000018 0x00007fffeff90153 in PyEval_CallObjectWithKeywords (func=0x16a77d0, arg=0x7fffd62c1050, kw=0x0) at Python/ceval.c:3619
0000019 0x00007fffef3fa6d5 in PythonQtSignalTarget::call (callable=0x16a77d0, methodInfos=0x865f20, arguments=0x7fffffffc5b0, skipFirstArgumentOfMethodInfo=false)
    at /home/pieper/slicer4/latest/Slicer-superbuild/CTK-build/PythonQt/src/PythonQtSignalReceiver.cpp:118
0000020 0x00007fffef3fa478 in PythonQtSignalTarget::call (this=0x54b3a50, arguments=0x7fffffffc5b0) at /home/pieper/slicer4/latest/Slicer-superbuild/CTK-build/PythonQt/src/PythonQtSignalReceiver.cpp:51
0000021 0x00007fffef3fafff in PythonQtSignalReceiver::qt_metacall (this=0x54b3800, c=QMetaObject::InvokeMetaMethod, id=4, arguments=0x7fffffffc5b0)
    at /home/pieper/slicer4/latest/Slicer-superbuild/CTK-build/PythonQt/src/PythonQtSignalReceiver.cpp:220
0000022 0x00007fffec665cf7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
0000023 0x00007fffed826ef2 in QAbstractButton::clicked(bool) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000024 0x00007fffed533cdb in ?? () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000025 0x00007fffed5353ab in ?? () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000026 0x00007fffed53561c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000027 0x00007fffef642d56 in PythonQtShell_QPushButton::mouseReleaseEvent (this=0x54b3100, e=0x7fffffffcf80)
    at /home/pieper/slicer4/latest/Slicer-superbuild/CTK-build/PythonQt/generated_cpp/com_trolltech_qt_gui/com_trolltech_qt_gui6.cpp:6235
0000028 0x00007fffed169ede in QWidget::event(QEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000029 0x00007fffef640b30 in PythonQtShell_QPushButton::event (this=0x54b3100, e=0x7fffffffcf80)
    at /home/pieper/slicer4/latest/Slicer-superbuild/CTK-build/PythonQt/generated_cpp/com_trolltech_qt_gui/com_trolltech_qt_gui6.cpp:5863
0000030 0x00007fffed113d4c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000031 0x00007fffed11ad8e in QApplication::notify(QObject*, QEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000032 0x00007fffec64decc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
0000033 0x00007fffed1182de in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000034 0x00007fffed19b9c5 in ?? () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000035 0x00007fffed19a67b in QApplication::x11ProcessEvent(_XEvent*) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000036 0x00007fffed1c267f in ?? () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
0000037 0x00007fffec64cbf2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
0000038 0x00007fffec64cfdc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
0000039 0x00007fffec650609 in QCoreApplication::exec() () from /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
0000040 0x0000000000408172 in SlicerAppMain (argc=1, argv=0x7fffffffdce8) at /home/pieper/slicer4/latest/Slicer/Applications/SlicerApp/Main.cxx:311
0000041 0x0000000000408256 in main (argc=1, argv=0x7fffffffdce8) at /home/pieper/slicer4/latest/Slicer/Applications/SlicerApp/Main.cxx:343
(gdb)
(0004369)
kentwilliams (reporter)
2012-05-14 10:33

Steve, the pull request is out of date and needs to be deleted. My understanding is that isn't how we're supposed to proceed, according to instructions you e-mailed me AFTER I made the pull request.

A current version is here: https://github.com/Chaircrusher/Slicer/tree/0001998-NewDicomToNrrdConverter [^]

The topic branch is 0001998-NewDicomToNrrdConverter

I have a stopgap solution to finding the DCMTK libraries (it sets DCMTK_DIR to where they live in the slicer build tree), so it's not dependent on JCF's patch.

I've done numerous changes since then, to the point that the line number for that crashing statement is completely different.

On the other hand, I saw how a crash could happen at that print statement and fixed it.
(0004370)
pieper (administrator)
2012-05-14 10:44

Okay - good. Is it ready to test for merging or are you still working on it?

- Issue History
Date Modified Username Field Change
2012-05-08 16:14 kentwilliams New Issue
2012-05-11 17:13 pieper Note Added: 0004336
2012-05-14 10:33 kentwilliams Note Added: 0004369
2012-05-14 10:44 pieper Note Added: 0004370


Mantis 1.1.4[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker