Supercollider


(kny) #1

Hi!

For the first after a long time, I had to reboot my computer.
Now, when I want to launch supercollider, the software crashes.

The first time, I got this message:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-kny'
*** Error in '/usr/bin/sclang': free(): invalid pointer: 0x000055e07d536f00 ***
The second time:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-kny'
*** Error in 'scide': munmap_chunk(): invalid pointer: 0x000055fa51b3b0c0 ***
Abandon

Any idea ?

It is a really important software for my work, so it is a bit embarassing :slight_smile:

It tried to remove the package and reinstall it, but it changes anything.
Same errors…


#2

How do you run the application?
Which command do you run?


(kny) #3

the command is:
scide
I use dmenu as launcher.
Because nothing worked after a reboot (I had a huge uptime), I tried in a term to get more infos.
(the error messages)


(oliver) #4

Are you doing partial upgrades? I.E. add a pkg with -Su… then wait a few weeks… then add another


#5

There’s a ticket for this: https://github.com/voidlinux/void-packages/issues/12328

Most likely an ABI issue.


(kny) #6

Thanks @mvf , for a moment I thought I messed somewhere :slight_smile:
I hope it will be resolved soon. Just have to wait.
I opened an issue ticket on the supercollider github.


(kny) #7

Hi @mvf,

in the ticket in the supercollider github, you said that the issue could be resolved.
But I didn’t understand how.
Can you explain me ?


#8

Sure @kny . Basically, the issue is not in their code but in the way it is compiled and/or linked on the Void side. The resulting Supercollider programs call into the C++ runtime library in an incompatible manner, causing the crashes. I did some digging around and here’s what I found so far:

  • Version 3.8.0 (the version previously in the Void repos and the one you likely upgraded from) has the same issue when built in the current environment
  • Version 3.9.1 built for x86_64-musl starts up fine

If you urgently need this software and don’t mind a bit of tinkering, the x86_64-musl version can be started from a chroot. It’s basically the opposite of what https://wiki.voidlinux.eu/Musl describes in the “glibc chroot” section. I’d be happy to assist if you want to try this.


#9

Hi @kny. If you’re still interested, I looked into this a bit again lately and prepared a crude workaround (GitHub comment).

To just fix the sclang binary in the current version 3.9.1_3 of supercollider (MD5: 9e7d08d06b1da1280d74a9b5987fdd96), this one-liner can be used instead:

$ printf '\x01' | sudo dd of=/usr/bin/sclang bs=1 seek=191582 count=1 conv=notrunc

scide should no longer be crashing in this version since it’s now linked differently.


#10

I have had this same issue and just applied the fix that mvf posted. Now, the scide launches fine and everything, but the program crashes with a segmentation fault immediately after typing a few characters of something. I suspect it has something to do with the autocompletion system, as copy-pasted statements work okay, and the crash happens immediately after typing a dot which should trigger some autocomplete function. I will try to build from the source on the supercollider github now and see how that goes.


#11

Your suspicion is correct, scide dies trying to copy-construct a QVector from garbage while assembling the completion menu:

#0  QVector<ScIDE::ScLanguage::Method*>::QVector (this=0x7fffffffda10, v=...) at /usr/include/qt5/QtCore/qvector.h:354
#1  0x000055555562f38e in QtPrivate::QForeachContainer<QVector<ScIDE::ScLanguage::Method*> >::QForeachContainer (t=..., this=0x7fffffffda10) at /usr/include/qt5/QtCore/qglobal.h:957
#2  QtPrivate::qMakeForeachContainer<QVector<ScIDE::ScLanguage::Method*> const&> (t=...) at /usr/include/qt5/QtCore/qglobal.h:985
#3  ScIDE::AutoCompleter::menuForClassMethodCompletion (completion=..., editor=<optimized out>) at editors/sc-ide/widgets/code_editor/autocompleter.cpp:585
#4  0x0000555555631f52 in ScIDE::AutoCompleter::showCompletionMenu (this=this@entry=0x555555d5b640, forceShow=forceShow@entry=true) at editors/sc-ide/widgets/code_editor/autocompleter.cpp:495
#5  0x00005555556322ba in ScIDE::AutoCompleter::triggerCompletion (this=this@entry=0x555555d5b640, forceShow=forceShow@entry=true) at editors/sc-ide/widgets/code_editor/autocompleter.cpp:456
#6  0x00005555556325fc in ScIDE::AutoCompleter::keyPress (this=0x555555d5b640, e=0x7fffffffe3d0) at editors/sc-ide/widgets/code_editor/autocompleter.cpp:230
#7  0x0000555555624387 in ScIDE::ScCodeEditor::keyPressEvent (this=0x555555d42850, e=0x7fffffffe3d0) at editors/sc-ide/widgets/code_editor/sc_editor.cpp:210
#8  0x00007ffff41b4ba7 in QWidget::event (this=this@entry=0x555555d42850, event=event@entry=0x7fffffffe3d0) at kernel/qwidget.cpp:8930
#9  0x00007ffff42553de in QFrame::event (this=this@entry=0x555555d42850, e=e@entry=0x7fffffffe3d0) at widgets/qframe.cpp:550
#10 0x00007ffff425e4f3 in QAbstractScrollArea::event (this=this@entry=0x555555d42850, e=e@entry=0x7fffffffe3d0) at widgets/qabstractscrollarea.cpp:1168
#11 0x00007ffff43358d5 in QPlainTextEdit::event (this=0x555555d42850, e=0x7fffffffe3d0) at widgets/qplaintextedit.cpp:1567
#12 0x0000555555624b89 in ScIDE::ScCodeEditor::event (this=0x555555d42850, e=0x7fffffffe3d0) at editors/sc-ide/widgets/code_editor/sc_editor.cpp:99
#13 0x00007ffff41756cc in QApplicationPrivate::notify_helper (this=this@entry=0x55555591c0d0, receiver=receiver@entry=0x555555d42850, e=e@entry=0x7fffffffe3d0) at kernel/qapplication.cpp:3732
#14 0x00007ffff417e3c2 in QApplication::notify (this=<optimized out>, receiver=0x555555d42850, e=0x7fffffffe3d0) at kernel/qapplication.cpp:3126
#15 0x00007ffff308a5d8 in QCoreApplication::notifyInternal2 (receiver=0x555555d42850, event=0x7fffffffe3d0) at kernel/qcoreapplication.cpp:1050
#16 0x00007ffff41d1af4 in QWidgetWindow::event (this=0x555555a73840, event=0x7fffffffe3d0) at kernel/qwidgetwindow.cpp:273
#17 0x00007ffff41756cc in QApplicationPrivate::notify_helper (this=this@entry=0x55555591c0d0, receiver=receiver@entry=0x555555a73840, e=e@entry=0x7fffffffe3d0) at kernel/qapplication.cpp:3732
#18 0x00007ffff417ce84 in QApplication::notify (this=0x7fffffffe690, receiver=0x555555a73840, e=0x7fffffffe3d0) at kernel/qapplication.cpp:3491
#19 0x00007ffff308a5d8 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0x555555a73840, event=event@entry=0x7fffffffe3d0) at kernel/qcoreapplication.cpp:1050
#20 0x00007ffff35f6fd0 in QCoreApplication::sendSpontaneousEvent (event=0x7fffffffe3d0, receiver=0x555555a73840) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:237
#21 QGuiApplicationPrivate::processKeyEvent (e=0x7fffdc0166e0) at kernel/qguiapplication.cpp:2086
#22 0x00007ffff35fbff5 in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0x7fffdc0166e0) at kernel/qguiapplication.cpp:1747
#23 0x00007ffff35d3f7b in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:984
#24 0x00007fffe571f26b in QPAEventDispatcherGlib::processEvents (this=0x555555951480, flags=...) at qeventdispatcher_glib.cpp:70
#25 0x00007ffff308880a in QEventLoop::exec (this=this@entry=0x7fffffffe5a0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#26 0x00007ffff3091b74 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1338
#27 0x000055555559e951 in main (argc=<optimized out>, argv=<optimized out>) at editors/sc-ide/core/main.cpp:129

This also occurs with version 3.9.3 and also on x86_64-musl.


(kny) #12

I had not really understood which side the problem come from.
Do you think it is an issue from the software ? Or does it is an issue from the package version ?


(kny) #13

Hi @mvf,

I saw on the stellarium ticket that you proposed a way to solve the problem with supercollider (and stellarium of course), using on of your script (void-qt5-anticrash).

So I tried it, and scide doesn’t crash anymore when launching.
So everything seems perfect…

… but, and I do not know if it is relative to this script, or if it another issue, but sometimes, when I try to write some code in supercollider, it crashes with an segmentation fault error.
Usually it happens when writing dot ( . ).
For example NetAddr.<something>, it crashes at the dot.

Thank you for your help, it is really kind and so helpful !


#14

Hi @kny, sorry for the delay, I’m a bit busy lately.

The scide crash you are seeing is the one risset reported, with the callstack posted above. It isn’t the same link issue also seen in stellaris, so the crash can’t be caused by void-qt5-anticrash. But it could be a similar one. After all, we know we have a linking problem.

I haven’t gotten around to debug this, but it’s probably a Void issue. I don’t think upstream could have missed this.