Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fast click crash while previewing sound presets. #2098

Closed
netpipe opened this issue Jun 13, 2015 · 10 comments
Closed

fast click crash while previewing sound presets. #2098

netpipe opened this issue Jun 13, 2015 · 10 comments

Comments

@netpipe
Copy link

netpipe commented Jun 13, 2015

if you click too fast while previewing sound preset xpm a crash occurs. a possible workaround could be to add a minimum play time to the previewing of xpm's

@musikBear
Copy link

sound preset xpm

could you be more specific 'xpm' is that presets for a vst?
I do not have any *.xpm file in default lmms at all?

@netpipe
Copy link
Author

netpipe commented Jun 13, 2015

xpf sorry https://lmms.io/lsp/?action=show&file=4211 here is a good example , happens more on complex sounds or when the system is thinking hard

@zonkmachine
Copy link
Member

I can confirm this on commit 979fa2f
@curlymorphic Your the go-to guy on everything that happens to the left, right? :D

QtXmlWrapper::loadXMLfile(): empty data
Segmentation fault (core dumped)

It either hangs or crashes with the above Qt comment.

@musikBear
Copy link

also confirmed on 1.1.3 win32
I have to click like insane, but then it does hang

@Wallacoloo
Copy link
Member

I seem to be getting a different error every time I try this on master w/ 64 bit Ubuntu 15.04. Half of the time it's a segfault in ~Engine() (see #2049), other times it's a segfault in another part of ZynAddSubFX, and sometimes it even hangs somewhere when trying to acquire a lock on something.

Here's one stacktrace for a segfault that occasionally occurs on the very first press (regardless of if I hold the mouse or just tap it):

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4306135 in malloc_consolidate (av=av@entry=0x7ffff464bc00 <main_arena>) at malloc.c:4150
4150    malloc.c: No such file or directory.
(gdb) bt
#0  0x00007ffff4306135 in malloc_consolidate (av=av@entry=0x7ffff464bc00 <main_arena>) at malloc.c:4150
#1  0x00007ffff4308a34 in _int_malloc (av=av@entry=0x7ffff464bc00 <main_arena>, bytes=bytes@entry=1008) at malloc.c:3417
#2  0x00007ffff430a42a in _int_memalign (av=av@entry=0x7ffff464bc00 <main_arena>, alignment=alignment@entry=32, bytes=bytes@entry=928) at malloc.c:4388
#3  0x00007ffff430be1d in _mid_memalign (address=<optimized out>, bytes=928, alignment=32) at malloc.c:3100
#4  __GI___libc_memalign (alignment=<optimized out>, bytes=928) at malloc.c:3049
#5  0x00007fffc5af5945 in fftwf_malloc_plain () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#6  0x00007fffc5af6ed7 in ?? () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#7  0x00007fffc5afee3d in fftwf_ct_genericbuf_register () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#8  0x00007fffc5af9a28 in fftwf_solvtab_exec () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#9  0x00007fffc5afcf13 in fftwf_dft_conf_standard () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#10 0x00007fffc5bbf1e9 in fftwf_configure_planner () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#11 0x00007fffc5bc36e8 in fftwf_the_planner () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#12 0x00007fffc5bbef7e in fftwf_mkapiplan () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#13 0x00007fffc5bc30fe in fftwf_plan_many_dft_r2c () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#14 0x00007fffc5bc25e5 in fftwf_plan_dft_r2c () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#15 0x00007fffc5bc2503 in fftwf_plan_dft_r2c_1d () from /usr/lib/x86_64-linux-gnu/libfftw3f.so.3
#16 0x00007fffc06964b9 in FFTwrapper::FFTwrapper (this=0x15cec50, fftsize_=<optimized out>) at /home/colin/proj/lmms/plugins/zynaddsubfx/zynaddsubfx/src/DSP/FFTwrapper.cpp:36
#17 0x00007fffc06a7cf4 in Master::Master (this=0x15df920) at /home/colin/proj/lmms/plugins/zynaddsubfx/zynaddsubfx/src/Misc/Master.cpp:60
#18 0x00007fffc0694b24 in LocalZynAddSubFx::LocalZynAddSubFx (this=0x15d9c20) at /home/colin/proj/lmms/plugins/zynaddsubfx/LocalZynAddSubFx.cpp:82
#19 0x00007fffc0230cf5 in ZynAddSubFxInstrument::initPlugin (this=this@entry=0x7fffea6aeea0) at /home/colin/proj/lmms/plugins/zynaddsubfx/ZynAddSubFx.cpp:459
#20 0x00007fffc0231b5b in ZynAddSubFxInstrument::ZynAddSubFxInstrument (this=0x7fffea6aeea0, _instrumentTrack=0x7fffea69e2a0) at /home/colin/proj/lmms/plugins/zynaddsubfx/ZynAddSubFx.cpp:121
#21 0x00007fffc0231d91 in lmms_plugin_main (_data=0x7fffea69e2a0) at /home/colin/proj/lmms/plugins/zynaddsubfx/ZynAddSubFx.cpp:664
#22 0x0000000000530922 in Plugin::instantiate (pluginName=..., parent=0x7fffea69e2a0, data=0x7fffea69e2a0) at /home/colin/proj/lmms/src/core/Plugin.cpp:125
#23 0x0000000000508590 in Instrument::instantiate (_plugin_name=..., _instrument_track=0x7fffea69e2a0) at /home/colin/proj/lmms/src/core/Instrument.cpp:75
#24 0x000000000060acd8 in InstrumentTrack::loadTrackSpecificSettings (this=0x7fffea69e2a0, thisElement=...) at /home/colin/proj/lmms/src/tracks/InstrumentTrack.cpp:779
#25 0x0000000000534d4d in PresetPreviewPlayHandle::PresetPreviewPlayHandle (this=0x168bfe0, _preset_file=..., _load_by_plugin=false, dataFile=0x7fffffffcec0)
    at /home/colin/proj/lmms/src/core/PresetPreviewPlayHandle.cpp:160
#26 0x0000000000582875 in FileBrowserTreeWidget::mousePressEvent (this=0xc1ed40, me=0x7fffffffd5c0) at /home/colin/proj/lmms/src/gui/FileBrowser.cpp:494
#27 0x00007ffff70dd947 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#28 0x00007ffff74a364e in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#29 0x00007ffff75c11a3 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#30 0x00007ffff7603990 in QTreeView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#31 0x00007ffff6910336 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#32 0x00007ffff708999c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#33 0x00007ffff709063f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#34 0x00007ffff69101cd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#35 0x00007ffff708fc9f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#36 0x00007ffff71099a2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#37 0x00007ffff710924c in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#38 0x00007ffff7131ba2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#39 0x00007ffff3b6ac3d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007ffff3b6af20 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007ffff3b6afcc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007ffff693f87e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#43 0x00007ffff7131c66 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#44 0x00007ffff690ed21 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#45 0x00007ffff690f085 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#46 0x00007ffff6914b09 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#47 0x00000000004d3cf0 in main (argc=1, argv=0x7fffffffe1d8) at /home/colin/proj/lmms/src/core/main.cpp:542

Here's one where it hangs instead of crashing. This seems to reliably happen if I can tap Fusion Bell I.xpf and get it to keep playing after I release it, and then click it again:

Program received signal SIGINT, Interrupt.
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38  ../sysdeps/unix/sysv/linux/x86_64/syscall.S: No such file or directory.
(gdb) info threads
  Id   Target Id         Frame 
  5    Thread 0x7fffe1d7d700 (LWP 4293) "QThread" pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  4    Thread 0x7fffe0b6f700 (LWP 4295) "lmms" pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  3    Thread 0x7fffd7ffe700 (LWP 4296) "MidiAlsaSeq" 0x00007ffff43828dd in poll () at ../sysdeps/unix/syscall-template.S:81
  2    Thread 0x7fffd77fd700 (LWP 4297) "QThread" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
* 1    Thread 0x7ffff7fa77c0 (LWP 4292) "lmms" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff6804062 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007ffff68002f5 in QMutex::lockInternal() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x00000000004ee44b in PresetPreviewPlayHandle::~PresetPreviewPlayHandle() ()
#4  0x00000000004ee499 in PresetPreviewPlayHandle::~PresetPreviewPlayHandle() ()
#5  0x00000000004dc011 in Mixer::removePlayHandles(Track*, bool) ()
#6  0x00000000005a8af6 in InstrumentTrack::silenceAllNotes(bool) ()
#7  0x00000000005ad60c in InstrumentTrack::loadTrackSpecificSettings(QDomElement const&) ()
#8  0x00000000004ee9c6 in PresetPreviewPlayHandle::PresetPreviewPlayHandle(QString const&, bool, DataFile*) ()
#9  0x00000000005379bc in FileBrowserTreeWidget::mousePressEvent(QMouseEvent*) [clone .part.38] ()
#10 0x00007ffff70dd947 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#11 0x00007ffff74a364e in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#12 0x00007ffff75c11a3 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#13 0x00007ffff7603990 in QTreeView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#14 0x00007ffff6910336 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#15 0x00007ffff708999c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#16 0x00007ffff709063f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#17 0x00007ffff69101cd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#18 0x00007ffff708fc9f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#19 0x00007ffff71099a2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#20 0x00007ffff710924c in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#21 0x00007ffff7131ba2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#22 0x00007ffff3b6ac3d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007ffff3b6af20 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007ffff3b6afcc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007ffff693f85e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#26 0x00007ffff7131c66 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#27 0x00007ffff690ed21 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#28 0x00007ffff690f085 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#29 0x00007ffff6914b09 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#30 0x0000000000485943 in main ()

And stack-traces for the rest of the threads, if useful:

(gdb) thread 2
[Switching to thread 2 (Thread 0x7fffd77fd700 (LWP 4297))]
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38  in ../sysdeps/unix/sysv/linux/x86_64/syscall.S
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff6804062 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007ffff68002f5 in QMutex::lockInternal() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x00000000004ddc05 in Mixer::renderNextBuffer() ()
#4  0x00000000004de4f4 in Mixer::fifoWriter::run() ()
#5  0x00007ffff68056ff in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007ffff7bc26aa in start_thread (arg=0x7fffd77fd700) at pthread_create.c:333
#7  0x00007ffff438deed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) thread 3
[Switching to thread 3 (Thread 0x7fffd7ffe700 (LWP 4296))]
#0  0x00007ffff43828dd in poll () at ../sysdeps/unix/syscall-template.S:81
81  ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) bt
#0  0x00007ffff43828dd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x000000000051c39c in MidiAlsaSeq::run() ()
#2  0x00007ffff68056ff in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x00007ffff7bc26aa in start_thread (arg=0x7fffd7ffe700) at pthread_create.c:333
#4  0x00007ffff438deed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) thread 4
[Switching to thread 4 (Thread 0x7fffe0b6f700 (LWP 4295))]
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: No such file or directory.
(gdb) bt
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff6805c56 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007ffff6801a7b in QSemaphore::acquire(int) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x000000000050fa3e in AudioDevice::getNextBuffer(float (*) [2]) ()
#4  0x0000000000518503 in AudioSdl::sdlAudioCallback(unsigned char*, int) ()
#5  0x00007ffff620b9b9 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#6  0x00007ffff6213ad8 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#7  0x00007ffff6253139 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#8  0x00007ffff7bc26aa in start_thread (arg=0x7fffe0b6f700) at pthread_create.c:333
#9  0x00007ffff438deed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) thread 5
[Switching to thread 5 (Thread 0x7fffe1d7d700 (LWP 4293))]
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185 in ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
(gdb) bt
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff6805c56 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00000000004e01b3 in MixerWorkerThread::run() ()
#3  0x00007ffff68056ff in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#4  0x00007ffff7bc26aa in start_thread (arg=0x7fffe1d7d700) at pthread_create.c:333
#5  0x00007ffff438deed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

I'm gonna fiddle around with Valgrind and see if it reveals anything trivial for the first case.

@Wallacoloo
Copy link
Member

Here's the Valgrind log that I get when I click the .xpf file for the first time (it plays ok and does not crash - but that's probably just thanks to Valgrind): https://gist.github.com/Wallacoloo/f28e905edea6cb0102b1

All of the errors Valgrind catches point to essentially the same piece of code. Let's take this one:

==15808== Invalid write of size 4
==15808==    at 0x8373870: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==15808==    by 0x8373DBD: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
==15808==    by 0x2D50FD0D: assign (basic_string.h:1149)
==15808==    by 0x2D50FD0D: operator= (basic_string.h:563)
==15808==    by 0x2D50FD0D: NulEngine::NulEngine() (NulEngine.cpp:34)

[...]
==15808==  Address 0x2e912838 is 8 bytes before a block of size 136 alloc'd
==15808==    at 0x4C2C0D7: operator new(unsigned long) (vg_replace_malloc.c:324)
==15808==    by 0x6137741: QObject::QObject(QObject*) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6)
==15808==    by 0x4FDE22: Engine::Engine() (Engine.h:45)
==15808==    by 0x2D50FCBC: NulEngine::NulEngine() (NulEngine.cpp:32)
==15808==    by 0x2D4BFB07: LocalZynAddSubFx::LocalZynAddSubFx() (LocalZynAddSubFx.cpp:80)
==15808==    by 0x2D95DCF4: ZynAddSubFxInstrument::initPlugin() (ZynAddSubFx.cpp:459)
==15808==    by 0x2D95EB5A: ZynAddSubFxInstrument::ZynAddSubFxInstrument(InstrumentTrack*) (ZynAddSubFx.cpp:121)
[...]

If you'll notice, it looks like we're experiencing a similar name-conflict error in which Zyn's NulEngine constructor is calling the wrong Engine base class (LMMS' Engine instead of Zyn's own Engine).

Indeed, gdb confirms this is the case:

$ gdb ./lmms
(gdb) b Engine.h:45
(gdb) run
Breakpoint 1, Engine::Engine (this=0xa891c0) at /home/colin/proj/lmms/include/Engine.h:45
45  class EXPORT Engine : public QObject
(gdb) continue
[the first breakpoint is the actual LMMS engine loading]
Breakpoint 1, Engine::Engine (this=0x15cb030) at /home/colin/proj/lmms/include/Engine.h:45
45  class EXPORT Engine : public QObject
(gdb) bt
#0  Engine::Engine (this=0x15cb030) at /home/colin/proj/lmms/include/Engine.h:45
#1  0x00007fffc06e4cbd in NulEngine::NulEngine (this=0x15cb000, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
    at /home/colin/proj/lmms/plugins/zynaddsubfx/zynaddsubfx/src/Nio/NulEngine.cpp:32
#2  0x00007fffc0694b08 in LocalZynAddSubFx::LocalZynAddSubFx (this=0x15c5840) at /home/colin/proj/lmms/plugins/zynaddsubfx/LocalZynAddSubFx.cpp:80
[...]

Also, the offending line is this one, in NulEngine::NulEngine():

name = "NULL";

Notably, name is a std::string field that NulEngine inherits from Engine. It is quite possible then that because the wrong Engine constructor is being called, std::string is never being initialized and so the assignment operator tries to do something illegal.

There could still be more at play than this classname conflict, but it potentially explains all the segfaults I saw - we definitely need to figure out the whole Engine name conflict.

@curlymorphic
Copy link
Contributor

@Wallacoloo nice research

As far as the engine name clash goes. In the ZSAF 2.5 upgrade, I moved the engine class to the Zyn namespace during my tidying up of the pull request over the weekend.

@Wallacoloo Wallacoloo added the bug label Jun 20, 2015
@musikBear
Copy link

@Umcaruje -where are we with this ?
Your Master (1.1.3.1.7.15) crashes almost emediately if pre-veiw in 'MyPresets' is attempted, but this pre-view ticket is also still open, so i guess this is already known about Master (?)

@Umcaruje
Copy link
Member

Umcaruje commented Jul 3, 2015

@musikBear this issue will be solved by either #1991 or #2064 or #2118. I can't quite understand your question though. If an issue is fixed, it will be closed. If its not fixed its open. This issue is open, which means its not fixed.

@Umcaruje Umcaruje added the core label Jul 3, 2015
@tresf tresf added the duplicate label Nov 2, 2015
@tresf
Copy link
Member

tresf commented Nov 2, 2015

Duplicate of #2269.

@tresf tresf closed this as completed Nov 2, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants