You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sometimes I found CSubscriber create stucked,the stack is
Thread 20 (Thread 0xffff5cff5900 (LWP 4756)):
#0 futex_abstimed_wait (private=0, abstime=0x0, clockid=0, expected=2, futex_word=<optimized out>) at ../sysdeps/nptl/futex-internal.h:284#1 __pthread_rwlock_wrlock_full (abstime=0x0, clockid=0, rwlock=0xffff74001d30) at pthread_rwlock_common.c:830#2 __GI___pthread_rwlock_wrlock (rwlock=0xffff74001d30) at pthread_rwlock_wrlock.c:27#3 0x0000ffffa8303da4 in eCAL::CSubGate::Register(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared
_ptr<eCAL::CDataReader>const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#4 0x0000ffffa8306b80 in eCAL::CSubscriber::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eCAL::SDat
aTypeInformation const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#5 0x0000ffffa8307540 in eCAL::CSubscriber::CSubscriber(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eCAL:
:SDataTypeInformation const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#6 0x0000ffffa83075b8 in eCAL::CSubscriber::CSubscriber(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () fr
om /lib/aarch64-linux-gnu/libecal_core.so.5
#7 0x0000ffffaa94bf28 in ?? ()#8 0x0000ffff50001030 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 13 (Thread 0xffff90f8b900 (LWP 4749)):
#0 __lll_lock_wait (futex=futex@entry=0xffff984b2000, private=128) at lowlevellock.c:52#1 0x0000ffffa9fd9cd8 in __GI___pthread_mutex_lock (mutex=0xffff984b2000) at pthread_mutex_lock.c:80#2 0x0000ffffa82b59e4 in eCAL::CNamedMutexImpl::Lock(long) () from /lib/aarch64-linux-gnu/libecal_core.so.5#3 0x0000ffffa82b69b0 in eCAL::CMemoryFile::Create(char const*, bool, unsigned long, bool) () from /lib/aarch64-linux-gnu/libecal_core.so.5#4 0x0000ffffa82bacc8 in eCAL::CMemFileObserver::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::
__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#5 0x0000ffffa82bbf10 in eCAL::CMemFileThreadPool::ObserveFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std
::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, std::function<unsigned long (
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::
allocator<char>> const&, char const*, unsigned long, long long, long long, long long, unsigned long)>const&) () from /lib/aarch64-linux-gnu/libecal_
core.so.5
#6 0x0000ffffa831d888 in eCAL::CSHMReaderLayer::SetConnectionParameter(eCAL::SReaderLayerPar&) () from /lib/aarch64-linux-gnu/libecal_core.so.5#7 0x0000ffffa830b608 in eCAL::CDataReader::ApplyLocLayerParameter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > co
nst&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, eCAL::pb::eTLayerType, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char>>const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#8 0x0000ffffa8302d40 in eCAL::CSubGate::ApplyLocPubRegistration(eCAL::pb::Sample const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5#9 0x0000ffffa832f9f0 in eCAL::CRegistrationReceiver::ApplySample(eCAL::pb::Sample const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5#10 0x0000ffffa82d153c in eCAL::UDP::CSampleReceiver::Process(char const*, unsigned long) () from /lib/aarch64-linux-gnu/libecal_core.so.5#11 0x0000ffffa82d05a0 in void eCAL::CCallbackThread::callbackFunction<std::chrono::duration<long, std::ratio<1l, 1000l> > >(std::chrono::duration<lon
g, std::ratio<1l, 1000l>>) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#12 0x0000ffffa86d8f9c in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6#13 0x0000ffffa9fd7624 in start_thread (arg=0xffffa86d8f80) at pthread_create.c:477#14 0x0000ffffa854662c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
How to reproduce
I have no way to manually reproduce it.
How did you get eCAL?
Ubuntu PPA (apt-get)
Environment
eCAL Version: 5.13.0
eCAL System Information
; --------------------------------------------------
; NETWORK SETTINGS
; --------------------------------------------------
; network_enabled = true / false true = all eCAL components communicate over network boundaries
; false = local host only communication
;
; multicast_config_version = v1 / v2 UDP configuration version (Since eCAL 5.12.)
; v1: default behavior
; v2: new behavior, comes with a bit more intuitive handling regarding masking of the groups
; multicast_group = 239.0.0.1 UDP multicast group base
; All registration and logging is sent on this address
; multicast_mask = 0.0.0.1-0.0.0.255 v1: Mask maximum number of dynamic multicast group
; 255.0.0.0-255.255.255.255 v2: masks are now considered like routes masking
;
; multicast_port = 14000 + x UDP multicast port number (eCAL will use at least the 2 following port
; numbers too, so please modify in steps of 10 (e.g. 1010, 1020 ...)
;
; multicast_ttl = 0 + x UDP ttl value, also known as hop limit, is used in determining
; the intermediate routers being traversed towards the destination
;
; multicast_sndbuf = 1024 * x UDP send buffer in bytes
;
; multicast_rcvbuf = 1024 * x UDP receive buffer in bytes
;
; multicast_join_all_if = false Linux specific setting to enable joining multicast groups on all network interfacs
; independent of their link state. Enabling this makes sure that eCAL processes
; receive data if they are started before network devices are up and running.
;
; bandwidth_max_udp = -1 UDP bandwidth limit for eCAL udp layer (-1 == unlimited)
;
; inproc_rec_enabled = true Enable to receive on eCAL inner process layer
; shm_rec_enabled = true Enable to receive on eCAL shared memory layer
; udp_mc_rec_enabled = true Enable to receive on eCAL udp multicast layer
;
; npcap_enabled = false Enable to receive UDP traffic with the Npcap based receiver
;
; tcp_pubsub_num_executor_reader = 4 Tcp_pubsub reader amount of threads that shall execute workload
; tcp_pubsub_num_executor_writer = 4 Tcp_pubsub writer amount of threads that shall execute workload
; tcp_pubsub_max_reconnections = 5 Tcp_pubsub reconnection attemps the session will try to reconnect in
; case of an issue (a negative value means infinite reconnection attemps)
;
; host_group_name = Common host group name that enables interprocess mechanisms across
; (virtual) host borders (e.g, Docker); by default equivalent to local host name
; --------------------------------------------------
[network]
network_enabled = false
multicast_config_version = v1
multicast_group = 239.0.0.1
multicast_mask = 0.0.0.15
multicast_port = 14000
multicast_ttl = 2
multicast_sndbuf = 5242880
multicast_rcvbuf = 5242880
multicast_join_all_if = false
bandwidth_max_udp = -1
inproc_rec_enabled = true
shm_rec_enabled = true
tcp_rec_enabled = true
udp_mc_rec_enabled = true
npcap_enabled = false
tcp_pubsub_num_executor_reader = 4
tcp_pubsub_num_executor_writer = 4
tcp_pubsub_max_reconnections = 5
host_group_name =
; --------------------------------------------------
; COMMON SETTINGS
; --------------------------------------------------
; registration_timeout = 60000 Timeout for topic registration in ms (internal)
; registration_refresh = 1000 Topic registration refresh cylce (has to be smaller then registration timeout !)
; --------------------------------------------------
[common]
registration_timeout = 60000
registration_refresh = 10
; --------------------------------------------------
; TIME SETTINGS
; --------------------------------------------------
; timesync_module_rt = "ecaltime-localtime" Time synchronisation interface name (dynamic library)
; The name will be extended with platform suffix (32|64), debug suffix (d) and platform extension (.dll|.so)
;
; Available modules are:
; - ecaltime-localtime local system time without synchronization
; - ecaltime-linuxptp For PTP / gPTP synchronization over ethernet on Linux
; (device configuration in ecaltime.ini)
; - ecaltime-simtime Simulation time as published by the eCAL Player.
; --------------------------------------------------
[time]
timesync_module_rt = "ecaltime-localtime"
; ---------------------------------------------
; PROCESS SETTINGS
; ---------------------------------------------
;
; terminal_emulator = /usr/bin/x-terminal-emulator -e command for starting applications with an external terminal emulator. If empty, the command will be ignored. Ignored on Windows.
; e.g. /usr/bin/x-terminal-emulator -e
; /usr/bin/gnome-terminal -x
; /usr/bin/xterm -e
;
; ---------------------------------------------
[process]
terminal_emulator =
; --------------------------------------------------
; PUBLISHER SETTINGS
; --------------------------------------------------
; use_inproc = 0, 1, 2 Use inner process transport layer (0 = off, 1 = on, 2 = auto, default = 0)
; use_shm = 0, 1, 2 Use shared memory transport layer (0 = off, 1 = on, 2 = auto, default = 2)
; use_tcp = 0, 1, 2 Use tcp transport layer (0 = off, 1 = on, 2 = auto, default = 0)
; use_udp_mc = 0, 1, 2 Use udp multicast transport layer (0 = off, 1 = on, 2 = auto, default = 2)
;
; memfile_minsize = x * 4096 kB Default memory file size for new publisher
;
; memfile_reserve = 50 .. x % Dynamic file size reserve before recreating memory file if topic size changes
;
; memfile_ack_timeout = 0 .. x ms Publisher timeout for ack event from subscriber that memory file content is processed
;
; memfile_buffer_count = 1 .. x Number of parallel used memory file buffers for 1:n publish/subscribe ipc connections (default = 1)
; memfile_zero_copy = 0, 1 Allow matching subscriber to access memory file without copying its content in advance (blocking mode)
;
; share_ttype = 0, 1 Share topic type via registration layer
; share_tdesc = 0, 1 Share topic description via registration layer (switch off to disable reflection)
; --------------------------------------------------
[publisher]
use_inproc = 0
use_shm = 2
use_tcp = 0
use_udp_mc = 2
memfile_minsize = 4096
memfile_reserve = 50
memfile_ack_timeout = 0
memfile_buffer_count = 1
memfile_zero_copy = 0
share_ttype = 1
share_tdesc = 1
; --------------------------------------------------
; SERVICE SETTINGS
; --------------------------------------------------
; protocol_v0 = 0, 1 Support service protocol v0, eCAL 5.11 and older (0 = off, 1 = on)
; protocol_v1 = 0, 1 Support service protocol v1, eCAL 5.12 and newer (0 = off, 1 = on)
; --------------------------------------------------
[service]
protocol_v0 = 1
protocol_v1 = 1
; --------------------------------------------------
; MONITORING SETTINGS
; --------------------------------------------------
; timeout = 1000 + (x * 1000) Timeout for topic monitoring in ms
; filter_excl = ^__.*$ Topics blacklist as regular expression (will not be monitored)
; filter_incl = Topics whitelist as regular expression (will be monitored only)
; filter_log_con = info, warning, error, fatal Log messages logged to console (all, info, warning, error, fatal, debug1, debug2, debug3, debug4)
; filter_log_file = Log messages to logged into file system
; filter_log_udp = info, warning, error, fatal Log messages logged via udp network
; --------------------------------------------------
[monitoring]
timeout = 1000
filter_excl = ^__.*$
filter_incl =
filter_log_con = info, warning, error, fatal
filter_log_file =
filter_log_udp = info, warning, error, fatal
; --------------------------------------------------
; SYS SETTINGS
; --------------------------------------------------
; filter_excl = App1,App2 Apps blacklist to be excluded when importing tasks from cloud
; --------------------------------------------------
[sys]
filter_excl = ^eCALSysClient$|^eCALSysGUI$|^eCALSys$
; --------------------------------------------------
; EXPERIMENTAL SETTINGS
; --------------------------------------------------
; shm_monitoring_enabled = false Enable distribution of monitoring/registration information via shared memory
; shm_monitoring_domain = ecal_monitoring Domain name for shared memory based monitoring/registration
; shm_monitoring_queue_size = 1024 Queue size of monitoring/registration events
; network_monitoring_disabled = false Disable distribution of monitoring/registration information via network
;
; drop_out_of_order_messages = false Enable dropping of payload messages that arrive out of order
; --------------------------------------------------
[experimental]
shm_monitoring_enabled = false
shm_monitoring_domain = ecal_mon
shm_monitoring_queue_size = 1024
network_monitoring_disabled = false
drop_out_of_order_messages = false
The text was updated successfully, but these errors were encountered:
kubbo
changed the title
CSubscriber create stucked
CSubscriber create dead lock
Jun 13, 2024
Hi @kubbo, sorry, somehow we missed your issue.
What programm are you running exactly? Do you have a reproducible sample?
Which eCAL version? We have recently released eCAL 5.12.6 and 5.13.2.
Problem Description
sometimes I found CSubscriber create stucked,the stack is
How to reproduce
I have no way to manually reproduce it.
How did you get eCAL?
Ubuntu PPA (apt-get)
Environment
eCAL Version: 5.13.0
eCAL System Information
The text was updated successfully, but these errors were encountered: