View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001972 | ardour | bugs | public | 2007-11-25 11:34 | 2008-11-21 00:04 |
| Reporter | gellyfish | Assigned To | paul | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | SVN/2.0-ongoing | ||||
| Summary | 0001972: segfault on creating or opening session @2713 | ||||
| Description | latest 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. | ||||
| Tags | No tags attached. | ||||
|
|
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. |
|
|
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);
|
|
|
The patch is just a suggestion. I'm not sure it fits with the "house style" :-) |
|
|
patch applied and commit to 2.0-ongoing (wll merge into trunk in the future) |
| 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 |