Re: BEAST "contitous integration" packages fail to start



   Hi!

On Thu, Nov 05, 2015 at 05:30:33PM +0100, Tim Janik wrote:
On 05.11.2015 15:17, Stefan Westerfeld wrote:
I've tried to use the new "continous integration" packages: I added

## RAPICORN & BEAST
deb https://dl.bintray.com/beast-team/deb vivid main

to /etc/apt/sources.list (on kubuntu vivid), and installed beast using

$ aptitude install beast libbse-dev

finally, starting beast results in a crash, so here is the gdb stacktrace.

$ gdb --args beast
GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from beast...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/bin/beast 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
process 960 is executing new program: /usr/bin/beast-0.9.3
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fa42855d700 (LWP 967)]
[New Thread 0x7fa41ffff700 (LWP 969)]
[New Thread 0x7fa4274e4700 (LWP 968)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fa42855d700 (LWP 967)]
0x00007fa43301a12b in bse_categories_register () from /usr/lib/x86_64-linux-gnu/libbse-0.so.9
(gdb) bt
#0  0x00007fa43301a12b in bse_categories_register () at /usr/lib/x86_64-linux-gnu/libbse-0.so.9
#1  0x00007fa43303c497 in bse_ladspa_plugin_check_load () at /usr/lib/x86_64-linux-gnu/libbse-0.so.9
#2  0x00007fa433074afe in  () at /usr/lib/x86_64-linux-gnu/libbse-0.so.9
#3  0x00007fa43193ab4d in g_main_context_dispatch (context=0x7fa420001600) at 
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3122
#4  0x00007fa43193ab4d in g_main_context_dispatch (context=context entry=0x7fa420001600) at 
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3737
#5  0x00007fa43193af20 in g_main_context_iterate (context=context entry=0x7fa420001600, block=block 
entry=1, dispatch=dispatch entry=1, self=<optimized out>) at 
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3808
#6  0x00007fa43193afcc in g_main_context_iteration (context=0x7fa420001600, may_block=1) at 
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3869
#7  0x00007fa4330373b4 in  () at /usr/lib/x86_64-linux-gnu/libbse-0.so.9
#8  0x00007fa43169ce30 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#9  0x00007fa4324e46aa in start_thread (arg=0x7fa42855d700) at pthread_create.c:333
#10 0x00007fa430e00eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb)

BseCategories is currently undergoing ABI changes and will eventually be replaced like all sfidl based APIs.

Since I'm not seeing the crash here, I suspect that you installed beast and libbse-dev from very recent 
master, but still have a binary plugin like specmorph around that was compiled against Beast from say 
yesterday or the day before that.
ATM, due to the migrations (described in HACKING.md) most branch merges into master will break ABI and API, 
and the next release version number is going to reflect that of course.

For external plugins that means, those must be frequently recompiled.

Right, I already thought that recompiling for every new rapicorn and/or beast
version is necessary. But that's not the problem here.

The function bse_categories_register from bse/bsecategories.cc (as mentioned in
the stack trace) is the location of the code that causes the crashes. Why? To
see this, I added the line

  fprintf (stderr, "cat_register (category=%s, i18n_category=%s)\n", category, i18n_category);

to the function, and restarted BEAST. Result:

cat_register (category=/Modules//Input & Output/MIDI Control Input, i18n_category=/Modules//Ein- und 
Ausgabe/MIDI-Steuerungseingabe)
cat_register (category=/Modules//Misc/Snooper, i18n_category=/Modules//Verschiedenes/Schnüffler)
cat_register (category=/Modules//Virtualization/Virtual Output, 
i18n_category=/Modules//Virtualisierung/Virtuelle Ausgabe)
cat_register (category=/Modules//Virtualization/Virtual Input, 
i18n_category=/Modules//Virtualisierung/Virtuelle Eingabe)
cat_register (category=/Modules//Input & Output/MIDI Voice Input, i18n_category=/Modules//Ein- und 
Ausgabe/MIDI-Stimmeingabe)
cat_register (category=/Modules//Input & Output/Instrument Voice Input, i18n_category=/Modules//Input & 
Output/Instrument Voice Input)
cat_register (category=/Modules//Input & Output/Instrument Output, i18n_category=/Modules//Ein- und 
Ausgabe/Instrumentenausgabe)
cat_register (category=/Modules//Audio Sources/Standard Oscillator, 
i18n_category=/Modules//Audio-Quellen/Standard-Oszillator)
cat_register (category=/Modules//Input & Output/PCM Input, i18n_category=/Modules//Ein- und 
Ausgabe/PCM-Eingabe)
cat_register (category=/Modules//Virtualization/Virtual Sub Synth, 
i18n_category=/Modules//Virtualisierung/Virtuelle Subsynthese)
cat_register (category=/Modules//Filters/Biquad Types, i18n_category=/Modules//Filters/Biquad-Typen)
cat_register (category=/Modules//Audio Sources/Wave Oscillator, 
i18n_category=/Modules//Audio-Quellen/Wellenform-Oszillator)
cat_register (category=/Modules//Other Sources/Constant, i18n_category=/Modules//Andere Quellen/Konstant)
cat_register (category=/Modules//Input & Output/PCM Output, i18n_category=/Modules//Ein- und 
Ausgabe/PCM-Ausgabe)
cat_register (category=/Proc/Categories/Match, i18n_category=(null))
cat_register (category=/Proc/Categories/Match Typed, i18n_category=(null))
cat_register (category=/Methods/BseContainer/General/Get Item, i18n_category=(null))
cat_register (category=/Methods/BseContainer/General/List Children, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Collect Stats, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Get Osc Freq, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Get N Channels, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Get Length, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Close, i18n_category=(null))
cat_register (category=/Methods/BseEditableSample/General/Open, i18n_category=(null))
cat_register (category=/Proc/Script/Quit, i18n_category=(null))
cat_register (category=/Proc/Script/Message, i18n_category=(null))
cat_register (category=/Proc/Script/Progress, i18n_category=(null))
cat_register (category=/Proc/Script/Set Status, i18n_category=(null))
cat_register (category=/Proc/Script/Remove Action, i18n_category=(null))
cat_register (category=/Proc/Script/Add Action, i18n_category=(null))
cat_register (category=/Proc/Script/Get Janitor, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Kill, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Get Action Blurb, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Get Action Name, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Get Action, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/N Actions, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Get Proc Name, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Get Script Name, i18n_category=(null))
cat_register (category=/Methods/BseJanitor/General/Trigger Action, i18n_category=(null))
cat_register (category=/Proc/String Extract Number, i18n_category=(null))
cat_register (category=/Proc/Type License, i18n_category=(null))
cat_register (category=/Proc/Type Authors, i18n_category=(null))
cat_register (category=/Proc/Type Blurb, i18n_category=(null))
cat_register (category=/Proc/Type Options, i18n_category=(null))
cat_register (category=/Proc/Note Construction, i18n_category=(null))
cat_register (category=/Proc/Note From String, i18n_category=(null))
cat_register (category=/Proc/Describe Note From Freq, i18n_category=(null))
cat_register (category=/Proc/Describe Note, i18n_category=(null))
cat_register (category=/Proc/Note from Freq, i18n_category=(null))
cat_register (category=/Proc/Note to Freq, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Get State, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Get Supers, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Remove Snet, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Create Midi Synth, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Create Csynth, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Get Wave Repo, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Create Song, i18n_category=(null))
cat_register (category=/Methods/BseProject/File/Store, i18n_category=(null))
cat_register (category=/Methods/BseProject/General/Get Midi Notifier, i18n_category=(null))
cat_register (category=/Methods/BseSong/General/Synthesize Note, i18n_category=(null))
cat_register (category=/Methods/BseSong/General/Find Track For Part, i18n_category=(null))
cat_register (category=/Methods/BseSong/General/Ensure Track Links, i18n_category=(null))
cat_register (category=/Methods/BseSong/General/Get Master Bus, i18n_category=(null))
cat_register (category=/Methods/BseSong/General/Ensure Master Bus, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Is Prepared, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Get Automation Control, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Get Automation Channel, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Set Automation, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Set Pos, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ochannel Blurb, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ochannel Ident, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ochannel Label, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/N Ochannels, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ichannel Get Ochannel, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ichannel Get N Joints, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Is Joint Ichannel, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Is Joint Ichannel By Id, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ichannel Blurb, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ichannel Ident, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Ichannel Label, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/N Ichannels, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Has Outputs, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Has Output, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Clear Outputs, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Clear Inputs, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Unset Input, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Unset Input By Id, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Set Input, i18n_category=(null))
cat_register (category=/Methods/BseSource/General/Set Input By Id, i18n_category=(null))
cat_register (category=/Methods/BseTrack/General/List Parts Uniq, i18n_category=(null))
cat_register (category=/Methods/BseTrack/General/List Parts, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Clear Undo, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Redo, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Undo, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Ungroup Undo, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Group Undo, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Editable Property, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Property Candidates, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Check Is A, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Seqid, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Name Or Type, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Name, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Set Name, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Unuse, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Use, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Internal, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Uname Path, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Project, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Parent, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Type License, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Type Authors, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Type Blurb, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Type Name, i18n_category=(null))
cat_register (category=/Methods/BseItem/General/Get Type, i18n_category=(null))
cat_register (category=/Methods/BseWave/General/Chunk Get Mix Freq, i18n_category=(null))
cat_register (category=/Methods/BseWave/General/Chunk Get Osc Freq, i18n_category=(null))
cat_register (category=/Methods/BseWave/General/Use Editable, i18n_category=(null))
cat_register (category=/Methods/BseWave/General/N Wave Chunks, i18n_category=(null))
cat_register (category=/Methods/BseWaveOsc/General/Set From Editable Sample, i18n_category=(null))
cat_register (category=/Proc/Seek Wave Oscillators, i18n_category=(null))
cat_register (category=/Methods/BseWaveOsc/General/Request Pcm Position, i18n_category=(null))
cat_register (category=/Methods/BseWaveRepo/General/Remove Wave, i18n_category=(null))
cat_register (category=/Methods/BseWaveRepo/General/Load File, i18n_category=(null))
cat_register (category=/Modules//Audio Sources/Organ, i18n_category=/Modules//Audio Sources/Organ)
cat_register (category=/Modules//Enhance/Chorus, i18n_category=/Modules//Aufbessern/Chor)
cat_register (category=/Modules//Filters/Bass Filter, i18n_category=/Modules//Filter/Bass-Filter)
cat_register (category=/Modules//Routing/Sample and Hold, i18n_category=/Modules//Routing/Sample and Hold)
cat_register (category=/Modules//Misc/StandardGusPatchEnvelope, 
i18n_category=/Modules//Misc/StandardGusPatchEnvelope)
cat_register (category=/Modules//Distortion/Saturate, i18n_category=/Modules//Distortion/Saturate)
cat_register (category=/Modules//Routing/Summation, i18n_category=/Modules//Routing/Summation)
cat_register (category=/Modules//Distortion/Quantizer, i18n_category=/Modules//Distortion/Quantizer)
cat_register (category=/Modules//Audio Sources/Noise, i18n_category=/Modules//Audio-Quellen/Rauschen)
cat_register (category=/Modules//Spatial/Balance, i18n_category=/Modules//Raumklang/Abgleich)
cat_register (category=/Modules//Routing/Amplifier, i18n_category=/Modules//Routing/Verstärker)
cat_register (category=/Modules//Enhance/ArtsCompressor, i18n_category=/Modules//Enhance/ArtsCompressor)
cat_register (category=/Modules/Routing/Adder, i18n_category=/Modules/Routing/Adder)
cat_register (category=/Modules/Distortion/Atan Distort, i18n_category=/Modules/Distortion/Atan Distort)
cat_register (category=/Modules/Other Sources/Simple ADSR, i18n_category=/Modules/Other Sources/Simple ADSR)
cat_register (category=/Modules/Routing/Mixer, i18n_category=/Modules/Routing/Mixer)
cat_register (category=/Modules/Routing/Multiply, i18n_category=/Modules/Routing/Multiply)
cat_register (category=/Modules/Other Sources/Sequencer, i18n_category=/Modules/Other Sources/Sequencer)
cat_register (category=/Modules/Filters/IIR Filter, i18n_category=/Modules/Filters/IIR Filter)
cat_register (category=/Modules/Enhance/CanyonDelay, i18n_category=/Modules/Enhance/CanyonDelay)
cat_register (category=/Modules/Audio Sources/Synthetic Drum, i18n_category=/Modules/Audio Sources/Synthetic 
Drum)
cat_register (category=/Modules/Audio Sources/XtalStrings, i18n_category=/Modules/Audio Sources/XtalStrings)
cat_register (category=/Modules/Filters/Free Verb, i18n_category=/Modules/Filters/Free Verb)
cat_register (category=/Modules/LADSPA/Aliasing, i18n_category=(null))
[*** crash here ***]

As you can see, on my machine the first ladspa plugin being registered causes
the crash. But why didn't it crash before? To see this, here is the difference
of last known stable version and master.

$ git diff 6b12eafccc8a1091bde8878a2329e3205427f098 master bse/bsecategories.cc
diff --git a/bse/bsecategories.cc b/bse/bsecategories.cc
index 68338d4..79984b5 100644
--- a/bse/bsecategories.cc
+++ b/bse/bsecategories.cc
@@ -1,7 +1,7 @@
 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
 #include "bsecategories.hh"
-
 #include "bseutils.hh"
+#include "bseserver.hh"
 #include <string.h>
 
 
@@ -192,6 +192,25 @@ bse_categories_register (const gchar  *category,
       else
         centry->icon = NULL;
     }
+  if (g_type_is_a (centry->type, BSE_TYPE_SOURCE))
+    {
+      // parse "/Modules////tag1/tag2/tag3///Title" into tags and title
+      const char *name = i18n_category;
+      if (strncmp (name, "/Modules/", 9) == 0)
+        name += 9;
+      while (name[0] == '/')
+        ++name;
+      const char *title = strrchr (name, '/'), *end = title ? title : name;
+      title = title ? title + 1 : name;
+      while (end > name && end[-1] == '/')
+        --end;
+      Rapicorn::StringVector tags;
+      if (name < end)
+        tags = Rapicorn::string_split (String (name, end - name), "/");
+      Bse::ServerImpl::register_source_module (g_type_name (centry->type), title,
+                                               Rapicorn::string_join (";", tags),
+                                               pixstream);
+    }
 }
 
 void

So it looks like for /Modules/LADSPA/Aliasing, name will point to NULL and
string operations on name will fail (crash).

   Cu... Stefan
-- 
Stefan Westerfeld, http://space.twc.de/~stefan


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]