View Issue Details

IDProjectCategoryView StatusLast Update
0001972ardourbugspublic2008-11-21 00:04
Reportergellyfish Assigned Topaul  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product VersionSVN/2.0-ongoing 
Summary0001972: segfault on creating or opening session @2713
Descriptionlatest svn (revision 2713) segfaults "immediately" after pressing "ok" on the session control dialogue when both creating or opening an existing session. The "starting audio engine" splash is displayed.

Following is the backtrace:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47356039644976 (LWP 24233)]
0x00002b11ee15fd08 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string () from /usr/lib64/libstdc++.so.6
(gdb) thread apply all bt

Thread 14 (Thread 1099418208 (LWP 24250)):
#0 0x00002b11edda3901 in __nanosleep_nocancel () from /lib64/libpthread.so.0
0000001 0x00002b11eb34e2c8 in g_usleep () from /usr/lib64/libglib-2.0.so.0
#2 0x00002b11ea63d09f in ARDOUR::AudioEngine::meter_thread ()
   from libs/ardour/libardour.so
#3 0x00002b11ecfa62cf in call_thread_entry_slot ()
   from libs/glibmm2/libglibmm2.so
0000004 0x00002b11eb34c374 in g_thread_create_full ()
   from /usr/lib64/libglib-2.0.so.0
0000005 0x00002b11edd9d37e in start_thread () from /lib64/libpthread.so.0
#6 0x00002b11ee49e53d in clone () from /lib64/libc.so.6
#7 0x0000000000000000 in ?? ()

Thread 3 (Thread 1090525504 (LWP 24237)):
#0 0x00002b11edda0886 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib64/libpthread.so.0
0000001 0x00002b11ea7c1f0b in peak_thread_work () from libs/ardour/libardour.so
#2 0x00002b11ecfa62cf in call_thread_entry_slot ()
   from libs/glibmm2/libglibmm2.so
#3 0x00002b11eb34c374 in g_thread_create_full ()
   from /usr/lib64/libglib-2.0.so.0
0000004 0x00002b11edd9d37e in start_thread () from /lib64/libpthread.so.0
0000005 0x00002b11ee49e53d in clone () from /lib64/libc.so.6
#6 0x0000000000000000 in ?? ()

Thread 2 (Thread 1082132800 (LWP 24236)):
#0 0x00002b11edda0886 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib64/libpthread.so.0
0000001 0x00002b11ea7c1f0b in peak_thread_work () from libs/ardour/libardour.so
#2 0x00002b11ecfa62cf in call_thread_entry_slot ()
   from libs/glibmm2/libglibmm2.so
#3 0x00002b11eb34c374 in g_thread_create_full ()
   from /usr/lib64/libglib-2.0.so.0
0000004 0x00002b11edd9d37e in start_thread () from /lib64/libpthread.so.0
0000005 0x00002b11ee49e53d in clone () from /lib64/libc.so.6
#6 0x0000000000000000 in ?? ()

Thread 1 (Thread 47356039644976 (LWP 24233)):
#0 0x00002b11ee15fd08 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string () from /usr/lib64/libstdc++.so.6
0000001 0x000000000059ee7e in Editor::set_snap_to ()
#2 0x000000000059e35c in Editor::set_state ()
#3 0x00000000005cb932 in Editor::Editor ()
0000004 0x0000000000519d40 in ARDOUR_UI::create_editor ()
0000005 0x0000000000515552 in ARDOUR_UI::setup_windows ()
#6 0x00000000004f7bae in ARDOUR_UI::post_engine ()
#7 0x00000000004f83a6 in ARDOUR_UI::create_engine ()
0000008 0x0000000000500486 in ARDOUR_UI::get_session_parameters ()
0000009 0x0000000000501df9 in ARDOUR_UI::startup ()
0000010 0x00002b11eaab2e68 in Gtkmm2ext::UI::run ()
   from libs/gtkmm2ext/libgtkmm2ext.so
0000011 0x000000000070d4ba in main ()

Let me know if any further information is required.
TagsNo tags attached.

Activities

gellyfish

2007-11-25 11:44

reporter   ~0004574

On further investigation, it will start with a new session after moving away the $HOME/.ardour2 directory and that session will load successfully subsequently, however it will always crash with a session created previously (the session I am testing with was last edited 11/11/2007 ).

I'm guessing therefore that there is some problem with session and config "upgrade" here.

gellyfish

2007-11-25 13:27

reporter   ~0004575

Got it!

Some entries (specifically "None" , "Edit Cursor" ) have been removed from the array _snap_type_strings[] in gtk2_ardour/editor.cc, so a session which was created with an ardour before that change may have "snap-to" out of bounds.

Editor::set_snap_to() needs to guard against the out of range value before doing

   string str = snap_type_strings[(int) st];

The work-around prior to a fix is to edit the session's instant.xml and set the snap-to attribute to a suitable lower value before loading the session.

2007-11-26 20:36

 

editor.patch (585 bytes)   
--- ../2.0-ongoing.bak/gtk2_ardour/editor.cc	2007-11-26 19:25:09.000000000 +0000
+++ gtk2_ardour/editor.cc	2007-11-26 20:31:35.000000000 +0000
@@ -2068,8 +2068,15 @@
 void
 Editor::set_snap_to (SnapType st)
 {
+   unsigned int snap_ind = (unsigned int)st;
 	snap_type = st;
-	string str = snap_type_strings[(int) st];
+
+   if ( snap_ind > snap_type_strings.size() - 1 ) {
+      snap_ind = 0;
+      snap_type = (SnapType)snap_ind;
+   }
+
+	string str = snap_type_strings[snap_ind];
 
 	if (str != snap_type_selector.get_active_text()) {
 		snap_type_selector.set_active_text (str);
editor.patch (585 bytes)   

gellyfish

2007-11-26 20:37

reporter   ~0004579

The patch is just a suggestion. I'm not sure it fits with the "house style" :-)

paul

2007-11-27 17:36

administrator   ~0004584

patch applied and commit to 2.0-ongoing (wll merge into trunk in the future)

Issue History

Date Modified Username Field Change
2007-11-25 11:34 gellyfish New Issue
2007-11-25 11:44 gellyfish Note Added: 0004574
2007-11-25 13:27 gellyfish Note Added: 0004575
2007-11-26 20:36 gellyfish File Added: editor.patch
2007-11-26 20:37 gellyfish Note Added: 0004579
2007-11-27 17:36 paul Status new => resolved
2007-11-27 17:36 paul Resolution open => fixed
2007-11-27 17:36 paul Assigned To => paul
2007-11-27 17:36 paul Note Added: 0004584
2008-11-21 00:04 seablade Status resolved => closed