Opened 6 years ago

Closed 6 years ago

#1022 closed Bug Report (fixed)

Ingen crashes when saving (using separate server/client)

Reported by: falkTX Owned by: David Robillard
Priority: major Component: Ingen
Keywords: ingen, save, separate, client, server Cc:

Description

If you start ingen server and client separately, the client (gtk2-ui) will crash when you save.

steps to reproduce:

  1. start "ingen -e" in a terminal
  2. start "ingen -g" in a different terminal
  3. try to save via gui, crash happens.

here's a trace:

0x00007ffff7b3b028 in std::_Rb_tree<Raul::Path const, std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> >, std::_Select1st<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > >, std::less<Raul::Path const>, std::allocator<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > > >::_M_begin() const () from /usr/lib/libingen.so.0
(gdb) bt
#0  0x00007ffff7b3b028 in std::_Rb_tree<Raul::Path const, std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> >, std::_Select1st<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > >, std::less<Raul::Path const>, std::allocator<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > > >::_M_begin() const () from /usr/lib/libingen.so.0
#1  0x00007ffff7b3a50e in std::_Rb_tree<Raul::Path const, std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> >, std::_Select1st<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > >, std::less<Raul::Path const>, std::allocator<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > > >::find(Raul::Path const&) const () from /usr/lib/libingen.so.0
#2  0x00007ffff7b39f39 in std::map<Raul::Path const, std::shared_ptr<Ingen::Node>, std::less<Raul::Path const>, std::allocator<std::pair<Raul::Path const, std::shared_ptr<Ingen::Node> > > >::find(Raul::Path const&) const () from /usr/lib/libingen.so.0
#3  0x00007ffff7b63812 in Ingen::Store::children_range(std::shared_ptr<Ingen::Node const>) const () from /usr/lib/libingen.so.0
#4  0x00007ffff7b5f2a3 in Ingen::Serialiser::Impl::serialise_graph(std::shared_ptr<Ingen::Node const>, Sord::Node const&) () from /usr/lib/libingen.so.0
#5  0x00007ffff7b5db5f in Ingen::Serialiser::Impl::write_bundle(std::shared_ptr<Ingen::Node const>, std::string const&) () from /usr/lib/libingen.so.0
#6  0x00007ffff7b5d7c1 in Ingen::Serialiser::write_bundle(std::shared_ptr<Ingen::Node const>, std::string const&) () from /usr/lib/libingen.so.0
#7  0x00007ffff48726d3 in Ingen::GUI::ThreadedLoader::save_graph_event(std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&) () from /usr/lib/libingen_gui.so
#8  0x00007ffff4875d72 in sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&>::operator()(std::shared_ptr<Ingen::Client::GraphModel const> const&, std::string const&) const () from /usr/lib/libingen_gui.so
#9  0x00007ffff4875707 in sigc::adaptor_functor<sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&> >::deduce_result_type<std::shared_ptr<Ingen::Client::GraphModel const>&, std::string&, void, void, void, void, void>::type sigc::adaptor_functor<sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&> >::operator()<std::shared_ptr<Ingen::Client::GraphModel const>&, std::string&>(std::shared_ptr<Ingen::Client::GraphModel const>&, std::string&) const ()
   from /usr/lib/libingen_gui.so
#10 0x00007ffff48751e2 in sigc::bind_functor<-1, sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&>, std::shared_ptr<Ingen::Client::GraphModel const>, std::string, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()() () from /usr/lib/libingen_gui.so
#11 0x00007ffff4874ed2 in sigc::retype_return_functor<void, sigc::bind_functor<-1, sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&>, std::shared_ptr<Ingen::Client::GraphModel const>, std::string, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> >::operator()() () from /usr/lib/libingen_gui.so
#12 0x00007ffff4874b61 in sigc::internal::slot_call0<sigc::retype_return_functor<void, sigc::bind_functor<-1, sigc::bound_mem_functor2<void, Ingen::GUI::ThreadedLoader, std::shared_ptr<Ingen::Client::GraphModel const>, std::string const&>, std::shared_ptr<Ingen::Client::GraphModel const>, std::string, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> >, void>::call_it(sigc::internal::slot_rep*) ()
   from /usr/lib/libingen_gui.so
#13 0x00007ffff47e3dbb in sigc::slot0<void>::operator()() const () from /usr/lib/libingen_gui.so
#14 0x00007ffff4871f0c in Ingen::GUI::ThreadedLoader::run() () from /usr/lib/libingen_gui.so
#15 0x00007ffff4876c99 in void std::_Mem_fn<void (Ingen::GUI::ThreadedLoader::*)()>::operator()<, void>(Ingen::GUI::ThreadedLoader*) const () from /usr/lib/libingen_gui.so
#16 0x00007ffff4876be9 in void std::_Bind_simple<std::_Mem_fn<void (Ingen::GUI::ThreadedLoader::*)()> (Ingen::GUI::ThreadedLoader*)>::_M_invoke<0ul>(std::_Index_tuple<0ul>) ()
   from /usr/lib/libingen_gui.so
#17 0x00007ffff4876ae7 in std::_Bind_simple<std::_Mem_fn<void (Ingen::GUI::ThreadedLoader::*)()> (Ingen::GUI::ThreadedLoader*)>::operator()() () from /usr/lib/libingen_gui.so
#18 0x00007ffff4876a80 in std::thread::_Impl<std::_Bind_simple<std::_Mem_fn<void (Ingen::GUI::ThreadedLoader::*)()> (Ingen::GUI::ThreadedLoader*)> >::_M_run() () from /usr/lib/libingen_gui.so
#19 0x00007ffff6551970 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#20 0x00007ffff60700a4 in start_thread (arg=0x7fffe5acf700) at pthread_create.c:309
#21 0x00007ffff5da504d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Change History (2)

comment:1 Changed 6 years ago by falkTX

On a debug build I just saw this:

#3  0x00007ffff7b63812 in Ingen::Store::children_range (this=0x0, o=std::shared_ptr (count 16, weak 0) 0xb81940) at ../src/Store.cpp:77
#4  0x00007ffff7b5f2a3 in Ingen::Serialiser::Impl::serialise_graph (this=0x80eec0, graph=std::shared_ptr (count 16, weak 0) 0xb81940, graph_id=...) at ../src/Serialiser.cpp:331

Note the "this=0x0", meaning _world.store() returns null.

This is probably related to #1021.

comment:2 Changed 6 years ago by David Robillard

Resolution: fixed
Status: newclosed

Fixed in r5628.

... until client side save goes the way of the Dodo.

Note: See TracTickets for help on using tickets.