ardour2 crash by SIGSEV in freeaddrinfo (from liblo)

Bug #493181 reported by Yvon TANGUY on 2009-12-06
This bug affects 1 person
Affects Status Importance Assigned to Milestone
liblo (Ubuntu)

Bug Description

Description: Ubuntu 9.10
Release: 9.10

Arch: AMD64 (Intel i7 920)

uname -a:
Linux vono-fixe 2.6.31-16-generic #52-Ubuntu SMP Thu Dec 3 22:07:16 UTC 2009 x86_64 GNU/Linux

root@vono-fixe:~# apt-cache policy ardour
  Installé : 1:2.8.2-0ubuntu1
  Candidat : 1:2.8.2-0ubuntu1
 Table de version :
 *** 1:2.8.2-0ubuntu1 0
        500 karmic/universe Packages
        100 /var/lib/dpkg/status

root@vono-fixe:~# apt-cache policy liblo0ldbl
  Installé : 0.23-2.2
  Candidat : 0.23-2.2
 Table de version :
 *** 0.23-2.2 0
        500 karmic/universe Packages
        100 /var/lib/dpkg/status


I've install ardour2 to test it, but it always crash with a Segmentation fault (SIGSEV).

here the reproduction step:
- launch ardour2
- in the session manager dialog box, type a session name, eventualy chosse a directory.
- Click on the new button
--> Crash

vono@vono-fixe:~/.dbus/session-bus$ export LANG=C
vono@vono-fixe:~/.dbus/session-bus$ ardour2


ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
SSE2 detected
loading bindings from /etc/ardour2/mnemonic-us.bindings
Loading session /home/vono/tmp/test using snapshot test (1)
Segmentation fault
vono@vono-fixe:~/.dbus/session-bus$ subgraph starting at ardour timed out (subgraph_wait_fd=12, status = 0, state = Triggered, pollret = 0 revents = 0x0)

**** alsa_pcm: xrun of at least 480.649 msecs


Since I've not the traditional ubuntu bug reporting launch when it crash, i tried to manually discover what's wrong.

After installing debugs packages, I've this stacktrace in gdb:

(gdb) backtrace
#0 *__GI_freeaddrinfo (ai=0x5) at ../sysdeps/posix/getaddrinfo.c:2392
#1 0x00007fffef71cca5 in ?? () from /usr/lib/
#2 0x00007fffef71cf2a in lo_send_message_from () from /usr/lib/
#3 0x00007fffef71d053 in lo_send_internal () from /usr/lib/
#4 0x00007ffff7b02313 in ARDOUR::OSC::session_loaded (this=0x13a12b0, s=...) at libs/ardour/
#5 0x00007ffff7b02191 in ARDOUR::OSC::set_session (this=0x13a12b0, s=...) at libs/ardour/
#6 0x00007ffff7a5cae1 in ARDOUR::Session::when_engine_running (this=0x7fffe00a0d90) at libs/ardour/
#7 0x00007ffff7abae4f in ARDOUR::Session::second_stage_init (this=0x7fffe00a0d90, new_session=false)
    at libs/ardour/
#8 0x00007ffff7a5175f in Session (this=0x7fffe00a0d90, eng=..., fullpath=..., snapshot_name=..., mix_template=...)
    at libs/ardour/
#9 0x000000000082c734 in ARDOUR_UI::load_session (this=0x10ff540, path=..., snap_name=..., mix_template=...)
    at gtk2_ardour/
#10 0x000000000082c17e in ARDOUR_UI::get_session_parameters (this=0x10ff540, backend_audio_is_running=true,
    should_be_new=true) at gtk2_ardour/
#11 0x000000000082383c in ARDOUR_UI::startup (this=0x10ff540) at gtk2_ardour/
#12 0x000000000084426a in sigc::bound_mem_functor0<void, ARDOUR_UI>::operator() (this=0x131fe88)
    at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#13 0x0000000000842d1c in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator() (this=0x131fe80)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#14 0x0000000000840bb4 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, ARDOUR_UI>, void>::call_it (
    rep=0x131fe50) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#15 0x00000000008336ac in sigc::internal::signal_emit0<void, sigc::nil>::emit (impl=0x131ce90)
    at /usr/include/sigc++-2.0/sigc++/signal.h:548
#16 0x0000000000839f4c in sigc::signal0<void, sigc::nil>::emit (this=0x10ff5c8)
    at /usr/include/sigc++-2.0/sigc++/signal.h:1706
#17 0x0000000000837322 in sigc::signal0<void, sigc::nil>::operator() (this=0x10ff5c8)
    at /usr/include/sigc++-2.0/sigc++/signal.h:1710
#18 0x00007ffff2b6ff84 in Gtkmm2ext::UI::run (this=0x10ff540, old_receiver=...) at libs/gtkmm2ext/
#19 0x0000000000b2055b in main (argc=1, argv=0x7fffffffe338) at gtk2_ardour/

The problem seems to come from "liblo-0.23/src/send.c" source file.
The "static int resolve_address(lo_address a)" does not initialize the "ai" pointer:
  struct addrinfo *ai; // line 362

then when calling "ret = getaddrinfo(a->host, a->port, &hints, &ai)" // line 373, the getaddrinfo call the function freeaddrinfo, with maybe an uninitialized pointer.

I've juste replace the line 362 with;
   struct addrinfo *ai = NULL;

recompile, update my LD_LIBRARY_PATH env var, and relaunch ardour. It work !

Note: I hope it is a valid bug report, since i do not know really how to do it.
I've not provide a patch/diff file, but I can if you prefer.

Yvon TANGUY (vono22) on 2009-12-06
description: updated
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers