In my playing with MusicXML importing, I'm getting a segfault with my
last set of changes when I import a specific file from the MusicXML test
suite. This isn't happening every time, but usualy at least once per
2-3 loads of the file. The file itself is testing microtone imports, so
it *appears* to be linked to inserting microtone accidentals.
Microtones are already defined in Rosegarden; they're the following
constants:
Accidentals::ThreeQuarterFlat
Accidentals::QuarterFlat
Accidentals::QuarterSharp
Accidentals::ThreeQuarterSharp
Although they're defined, they don't get mapped to anything in the
rendering.
I reran Rosegarden in gdb to try to get a bit more information. Here is
the last of the trace output (having purged the 3 million Jack
warnings/errors/etc) and the backtrace.
DataBlockRepository::clear()
Studio::getMetronomeFromDevice: Having a look at device 1000
Studio::getMetronomeFromDevice: Having a look at device 10000
Studio::getMetronomeFromDevice: Having a look at device 0
Studio::getMetronomeFromDevice(0): device is a MIDI device
Warning: Composition::~Composition() with 4 observers still extant
Observers are: 0x147e510 [N10Rosegarden19SegmentParameterBoxE] 0x14d6160
[N10Rosegarden17TrackParameterBoxE] 0x180cca0
[N10Rosegarden20CompositionModelImplE] 0x18193f8 [N10Rosegarden12TrackButtonsE]
Object::connect: No such signal Rosegarden::TrackButtons::modified() in
src/gui/editors/segment/TrackEditor.cpp:259
Object::connect: (sender name: 'TRACK_BUTTONS')
Object::connect: No such signal
Rosegarden::CompositionView::editSegmentNotation(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:151
Object::connect: (receiver name: 'View')
Object::connect: No such signal
Rosegarden::CompositionView::editSegmentPitchView(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:155
Object::connect: (receiver name: 'View')
Object::connect: No such signal
Rosegarden::CompositionView::editSegmentMatrix(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:159
Object::connect: (receiver name: 'View')
Object::connect: No such signal
Rosegarden::CompositionView::editSegmentAudio(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:163
Object::connect: (receiver name: 'View')
Object::connect: No such signal
Rosegarden::CompositionView::audioSegmentAutoSplit(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:167
Object::connect: (receiver name: 'View')
Object::connect: No such signal
Rosegarden::CompositionView::editSegmentEventList(Segment*) in
src/gui/application/RosegardenMainViewWidget.cpp:171
Object::connect: (receiver name: 'View')
Object::connect: No such signal Rosegarden::CompositionView::contentsMoving
(int, int) in src/gui/editors/segment/compositionview/SegmentSelector.cpp:75
Object::connect: No such signal Rosegarden::CompositionView::contentsMoving
(int, int) in src/gui/editors/segment/compositionview/SegmentMover.cpp:58
Object::disconnect: No such signal Rosegarden::CompositionView::contentsMoving
(int, int) in src/gui/editors/segment/compositionview/SegmentMover.cpp:65
Object::connect: No such signal Rosegarden::CompositionView::contentsMoving
(int, int) in src/gui/editors/segment/compositionview/SegmentSelector.cpp:75
[Thread 0x7fffe1755700 (LWP 3647) exited]
[New Thread 0x7fffe1755700 (LWP 3649)]
New Thread 0x7fffcef8c700 (LWP 3650)]
[Thread 0x7fffe1755700 (LWP 3649) exited]
[Thread 0x7fffcef8c700 (LWP 3650) exited]
Program received signal SIGSEGV, Segmentation fault.
0x0000000001415cf0 in ?? ()
Missing separate debuginfos, use: debuginfo-install [remove extremely long
line of debuginfo packages to install]
(gdb) bt
#0 0x0000000001415cf0 in ?? ()
#1 0x000000000056be0c in
Rosegarden::Composition::ReferenceSegment::find(Rosegarden::Event*) ()
#2 0x000000000056bec9 in
Rosegarden::Composition::ReferenceSegment::findTime(long) ()
#3 0x000000000056bfb4 in
Rosegarden::Composition::ReferenceSegment::findNearestTime(long) ()
#4 0x000000000056df8a in Rosegarden::Composition::getBarNumber(long) const ()
#5 0x000000000055050f in Rosegarden::SimpleRulerScale::getTimeForX(double)
const ()
#6 0x000000000072a364 in Rosegarden::TempoRuler::mouseMoveEvent(QMouseEvent*)
()
#7 0x00007ffff733d05e in QWidget::event(QEvent*) ()
from /usr/lib64/libQtGui.so.4
#8 0x00007ffff72ec994 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() from /usr/lib64/libQtGui.so.4
#9 0x00007ffff72f20e3 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib64/libQtGui.so.4
#10 0x00007ffff684904c in QCoreApplication::notifyInternal(QObject*, QEvent*)
() from /usr/lib64/libQtCore.so.4
#11 0x00007ffff72ed962 in QApplicationPrivate::sendMouseEvent(QWidget*,
QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
from /usr/lib64/libQtGui.so.4
#12 0x00007ffff73692e5 in ?? () from /usr/lib64/libQtGui.so.4
#13 0x00007ffff7367edb in QApplication::x11ProcessEvent(_XEvent*) ()
from /usr/lib64/libQtGui.so.4
#14 0x00007ffff738f97c in ?? () from /usr/lib64/libQtGui.so.4
#15 0x00007ffff36f0acd in g_main_context_dispatch ()
from /lib64/libglib-2.0.so.0
#16 0x00007ffff36f12c8 in ?? () from /lib64/libglib-2.0.so.0
#17 0x00007ffff36f149c in g_main_context_iteration ()
from /lib64/libglib-2.0.so.0
#18 0x00007ffff6877d5f in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib64/libQtCore.so.4
#19 0x00007ffff738f66e in ?? () from /usr/lib64/libQtGui.so.4
#20 0x00007ffff684cee9 in
QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>, int) ()
from /usr/lib64/libQtCore.so.4
#21 0x00000000007089b2 in Rosegarden::RosegardenMainWindow::initView() ()
#22 0x0000000000709226 in
Rosegarden::RosegardenMainWindow::setDocument(Rosegarden::RosegardenDocument*)
()
#23 0x000000000070c83f in Rosegarden::RosegardenMainWindow::openFile(QString,
Rosegarden::RosegardenMainWindow::ImportType) ()
#24 0x000000000070d364 in
Rosegarden::RosegardenMainWindow::slotImportMusicXML() ()
#25 0x0000000000713d3d in
Rosegarden::RosegardenMainWindow::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) ()
#26 0x00007ffff685cce1 in QMetaObject::activate(QObject*, QMetaObject const*,
int, void**) () from /usr/lib64/libQtCore.so.4
#27 0x00007ffff72e67b2 in QAction::triggered(bool) ()
from /usr/lib64/libQtGui.so.4
[snip]
There's another 20 levels of backtrace but I think everyone will have an
idea of where we are now :-)
Anyway, looking at Composition::ReferenceSegment::find() I see
Composition::ReferenceSegment::find(Event *e)
{
return std::lower_bound
(begin(), end(), e, ReferenceSegmentEventCmp());
}
And here I really hope someone can suggest what's gone wrong without me
having go into the standard library and work through the logic.
Ideas?
(Note, the relevant import code is in the trunk under src/doc/io/).
--
Peter Howard <[email protected]>
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel