Skip to content

cannot use sysrepo::Session from multiple threads #17

Description

@jktjkt

I just got this during a reboot. Here's the backtrace:

Thread 2 (Thread 0xb65d3020 (LWP 295)):
#0  0xb68017f8 in ?? () from /lib/libc.so.6
#1  0xb67f5268 in ?? () from /lib/libc.so.6
#2  0xb67f52c0 in ?? () from /lib/libc.so.6
#3  0xb686b380 in epoll_wait () from /lib/libc.so.6
#4  0xb6527a90 in ?? () from /lib/libnss_systemd.so.2
#5  0xb6529cc0 in ?? () from /lib/libnss_systemd.so.2
#6  0xb64c02a8 in ?? () from /lib/libnss_systemd.so.2
#7  0xb64c2110 in ?? () from /lib/libnss_systemd.so.2
#8  0xb64c39b8 in ?? () from /lib/libnss_systemd.so.2
#9  0xb6433628 in ?? () from /lib/libnss_systemd.so.2
#10 0xb642f5bc in _nss_systemd_getgrnam_r () from /lib/libnss_systemd.so.2
#11 0xb68909f0 in getgrnam_r () from /lib/libc.so.6
#12 0xb6ca4460 in sr_get_gid (gid=0xbeb1c31c, gid@entry=0xbeb1c314, group=0xb6d00d50 "sysrepo") at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-custom/src/common.c:783
#13 0xb6caa620 in sr_open (path=0x7cbc00 "/dev/shm/srsub_ietf-interfaces.oper.5db275bd", flags=557250, flags@entry=194, mode=432, mode@entry=438) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-custom/src/common.c:3802
#14 0xb6cdf274 in sr_shmsub_create (name=<optimized out>, suffix1=suffix1@entry=0xb6d00240 "oper", suffix2=<optimized out>, shm_struct_size=shm_struct_size@entry=144) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-custom/src/shm_sub.c:117
#15 0xb6cd3cb8 in sr_shmext_oper_get_sub_add (conn=conn@entry=0x5ffd98, shm_mod=shm_mod@entry=0xb5f3cfb0, sub_id=3199321224, sub_id@entry=16, path=0xbeb1c4d4 "`\006x", path@entry=0x7f4ec0 "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/neighbor", sub_type=SR_OPER_GET_SUB_STATE, sub_opts=sub_opts@entry=0, evpipe_num=11, prio=0xbeb1c488, prio@entry=0xbeb1c480) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-custom/src/shm_ext.c:952
#16 0xb6ca3364 in sr_oper_get_subscribe (session=0x6c7cb8, module_name=0x472010 <(anonymous namespace)::IETF_INTERFACES_MODULE_NAME+8> "ietf-interfaces", path=0x7f4ec0 "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/neighbor", callback=0xb6c7d178 <sysrepo::(anonymous namespace)::operGetItemsCb(sr_session_ctx_t*, uint32_t, char const*, char const*, char const*, uint32_t, lyd_node**, void*)>, private_data=0x7855e0, opts=0, subscription=0xbeb1c4d4) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-custom/src/sysrepo.c:8460
#17 0xb6c80adc in sysrepo::Subscription::onOperGet (this=this@entry=0xbeb1c9c8, moduleName=..., cb=..., path=..., opts=opts@entry=sysrepo::SubscribeOptions::Default) at /home/jkt/work/prog/_build/_br-cfb/per-package/sysrepo-cpp/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/basic_string.h:238
#18 0x0041bd08 in velia::network::IETFInterfaces::IETFInterfaces (this=this@entry=0xbeb1c9b0, srSess=...) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/network/IETFInterfaces.cpp:214
#19 0x00414e78 in velia::network::create (conn=..., persistentNetworkDirectory=..., runtimeNetworkDirectory=..., managedLinks=..., runningNetworkReloadCB=..., lldpCallback=..., lldpLocalData=...) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/network/Factory.h:36
#20 0x00412a64 in main (argc=<optimized out>, argv=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/main-network.cpp:111

Thread 1 (Thread 0xb5edf0c0 (LWP 342)):
#0  0xb67fa73c in ?? () from /lib/libc.so.6
#1  0xb67b0498 in raise () from /lib/libc.so.6
#2  0xb679b204 in abort () from /lib/libc.so.6
#3  0xb69f23c0 in __gnu_cxx::__verbose_terminate_handler() () from /lib/libstdc++.so.6
#4  0xb69efe48 in ?? () from /lib/libstdc++.so.6
#5  0xb69e42f8 in std::terminate() () from /lib/libstdc++.so.6
#6  0xb69f0238 in __cxa_throw () from /lib/libstdc++.so.6
#7  0xb6c6ebd8 in sysrepo::Session::mt_lock (mtx=...) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-cpp-custom/include/sysrepo-cpp/Session.hpp:206
#8  sysrepo::Session::activeDatastore (this=this@entry=0xb5ede010) at /home/jkt/work/prog/_build/_br-cfb/build/sysrepo-cpp-custom/src/Session.cpp:111
#9  0x004660d8 in velia::utils::ScopedDatastoreSwitch::ScopedDatastoreSwitch (this=0xb5ede010, session=..., ds=sysrepo::Datastore::Operational) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/utils/sysrepo.cpp:172
#10 velia::utils::valuesPush (session=..., values=..., foreignRemovals=..., ourRemovals=...) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/utils/sysrepo.cpp:126
#11 0x004227cc in velia::network::IETFInterfaces::onLinkUpdate (this=0xbeb1c9b0, link=<optimized out>, action=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/network/IETFInterfaces.cpp:259
#12 0x004510d8 in std::function<void(rtnl_link*, int)>::operator() (this=0x6017e8, __args#0=<optimized out>, __args#1=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/std_function.h:593
#13 (anonymous namespace)::nlCacheMngrCallbackWrapper (obj=warning: could not convert 'nl_object' from the host encoding (ANSI_X3.4-1968) to UTF-32.
This normally should not happen, please file a bug report.
0xb4d08b90, action=1, data=0x6017e8) at /home/jkt/work/prog/_build/_br-cfb/build/velia-custom/src/network/Rtnetlink.cpp:37
#14 0xb6b6ccc4 in nl_cache_include () from /lib/libnl-3.so.200
#15 0xb6ba9a0c in ?? () from /lib/libnl-route-3.so.200
#16 0xb6b6c294 in nl_cache_parse () from /lib/libnl-3.so.200
#17 0xb6b6d848 in ?? () from /lib/libnl-3.so.200
#18 0xb6b737b0 in nl_recvmsgs_report () from /lib/libnl-3.so.200
#19 0xb6b6e090 in nl_cache_mngr_data_ready () from /lib/libnl-3.so.200
#20 0xb6b6e1b8 in nl_cache_mngr_poll () from /lib/libnl-3.so.200
#21 0x004517fc in velia::network::impl::nlCacheMngrWatcher::run (this=0x7ede68, manager=...) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/shared_ptr_base.h:1672
#22 0x004533b4 in std::__invoke_impl<void, void (velia::network::impl::nlCacheMngrWatcher::*)(std::shared_ptr<nl_cache_mngr>), velia::network::impl::nlCacheMngrWatcher*, std::shared_ptr<nl_cache_mngr> > (__f=<optimized out>, __t=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/invoke.h:76
#23 std::__invoke<void (velia::network::impl::nlCacheMngrWatcher::*)(std::shared_ptr<nl_cache_mngr>), velia::network::impl::nlCacheMngrWatcher*, std::shared_ptr<nl_cache_mngr> > (__fn=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/invoke.h:98
#24 std::thread::_Invoker<std::tuple<void (velia::network::impl::nlCacheMngrWatcher::*)(std::shared_ptr<nl_cache_mngr>), velia::network::impl::nlCacheMngrWatcher*, std::shared_ptr<nl_cache_mngr> > >::_M_invoke<0u, 1u, 2u> (this=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/std_thread.h:303
#25 std::thread::_Invoker<std::tuple<void (velia::network::impl::nlCacheMngrWatcher::*)(std::shared_ptr<nl_cache_mngr>), velia::network::impl::nlCacheMngrWatcher*, std::shared_ptr<nl_cache_mngr> > >::operator() (this=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/std_thread.h:310
#26 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (velia::network::impl::nlCacheMngrWatcher::*)(std::shared_ptr<nl_cache_mngr>), velia::network::impl::nlCacheMngrWatcher*, std::shared_ptr<nl_cache_mngr> > > >::_M_run (this=<optimized out>) at /home/jkt/work/prog/_build/_br-cfb/per-package/velia/host/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/15.1.0/bits/std_thread.h:255
#27 0xb6a1df3c in ?? () from /lib/libstdc++.so.6
#28 0xb67f8694 in ?? () from /lib/libc.so.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions