I couldn't reproduce the issue on the old revision with a fresh checkout/make. Too many variables changed anyway so I'm just going to test using head on bitshares branch.
I finally caught a cli_wallet crash!
new >>> Server has disconnected us.
9 canceled_exception: Canceled
{}
th_a thread_d.hpp:461 start_next_fiber
192877ms th_a wallet.cpp:787 save_wallet_file ] saving wallet to file wallet.json
193528ms th_a http_api.cpp:118 on_request ] e.to_detail_string(): 9 canceled_exception: Canceled
{}
th_a thread_d.hpp:461 start_next_fiber
193619ms th_a http_api.cpp:118 on_request ] e.to_detail_string(): 9 canceled_exception: Canceled
{}
th_a thread_d.hpp:461 start_next_fiber
pure virtual method called
terminate called without an active exception
Program received signal SIGABRT, Aborted.
0x00007ffff67a2cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff67a2cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff67a60d8 in __GI_abort () at abort.c:89
#2 0x00007ffff70ad535 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff70ab6d6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff70ab703 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff70ac1bf in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x0000000000b27f87 in fc::rpc::websocket_api_connection::send_call(unsigned int, std::string, std::vector<fc::variant, std::allocator<fc::variant> >) ()
#7 0x00000000008d0a51 in void fc::api_connection::api_visitor::operator()<>(char const*, std::function<void ()>&) const::{lambda()#1}::operator()() const ()
#8 0x0000000000a38671 in graphene::wallet::detail::wallet_api_impl::~wallet_api_impl() ()
#9 0x0000000000a387a9 in graphene::wallet::detail::wallet_api_impl::~wallet_api_impl() ()
#10 0x00000000008af3b9 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() ()
#11 0x00000000009dc199 in graphene::wallet::wallet_api::~wallet_api() ()
#12 0x00000000008af3b9 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() ()
#13 0x00000000008af4f9 in boost::any::holder<std::shared_ptr<graphene::wallet::wallet_api> >::~holder() ()
#14 0x00000000008af3b9 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() ()
#15 0x00000000008af442 in fc::api<graphene::wallet::wallet_api, fc::identity_member>::~api() ()
#16 0x00000000008af494 in boost::any::holder<fc::api<graphene::wallet::wallet_api, fc::identity_member> >::~holder() ()
#17 0x00000000008977de in std::default_delete<fc::generic_api>::operator()(fc::generic_api*) const [clone .isra.726] ()
#18 0x00000000008c0745 in std::vector<std::unique_ptr<fc::generic_api, std::default_delete<fc::generic_api> >, std::allocator<std::unique_ptr<fc::generic_api, std::default_delete<fc::generic_api> > > >::~vector() ()
#19 0x00000000008c07aa in fc::api_connection::~api_connection() ()
#20 0x0000000000b20a36 in fc::rpc::cli::~cli() ()
#21 0x00000000008af3b9 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() ()
#22 0x00000000008b0e4a in boost::function0<void>::clear() ()
#23 0x00000000008b5a3d in boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex>::~connection_body() ()
#24 0x00000000008b5a69 in boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex>::~connection_body() ()
#25 0x00000000008ad5ee in boost::detail::sp_counted_base::release() ()
#26 0x00000000008b6e7c in std::_List_base<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex> >, std::allocator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex> > > >::_M_clear() ()
#27 0x00000000008b6f1f in boost::detail::sp_counted_impl_p<boost::signals2::detail::grouped_list<int, std::less<int>, boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex> > > >::dispose() ()
#28 0x00000000008ad5ee in boost::detail::sp_counted_base::release() ()
#29 0x00000000008ad716 in boost::detail::sp_counted_impl_p<boost::signals2::detail::signal_impl<void (), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void ()>, boost::function<void (boost::signals2::connection const&)>, boost::signals2::mutex>::invocation_state>::dispose() ()
#30 0x00000000008ad5ee in boost::detail::sp_counted_base::release() ()
#31 0x00000000008ad691 in boost::detail::sp_counted_impl_p<boost::signals2::detail::signal_impl<void (), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void ()>, boost::function<void (boost::signals2::connection const&)>, boost::signals2::mutex> >::dispose() ()
#32 0x00000000008ad5ee in boost::detail::sp_counted_base::release() ()
---Type <return> to continue, or q <return> to quit---
#33 0x0000000000b6465e in fc::http::websocket_connection::~websocket_connection() ()
#34 0x00000000008af3b9 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() ()
#35 0x0000000000892352 in main ()
witness_node still running fine. Is it worth pursuing this further or should I switch to testing with the latest?