The SpectroSERVER running on Linux crashed. The following is the gdb output of the core file:
Core was generated by `/local1/CA/Spectrum/SS/SpectroSERVER'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007f47d8684666 in CsGNode::add(CsGNode*, CsGList*) () from /opt/SPECTRUM/lib/libGlobl.so.1
#1 0x00007f47de48e4b3 in IcmpRangeRequest::processResponse(CsError::CsError_e) () from /opt/SPECTRUM/lib/../SS/libicmpserv.so.1
#2 0x00007f47de48c681 in IcmpServer::process_response(char const*, int, InternetAddress const&) ()
#3 0x00007f47de48e7e1 in IcmpListener::Listen() () from /opt/SPECTRUM/lib/../SS/libicmpserv.so.1
#4 0x00007f47de48e9bb in IcmpListener::threadRun(void*) () from /opt/SPECTRUM/lib/../SS/libicmpserv.so.1
#5 0x00007f47d43ceea5 in start_thread () from /lib64/libpthread.so.0
#6 0x00007f47d40f79fd in clone () from /lib64/libc.so.6
Possible root cause is a large ip boundary range in an AutoDiscovery configuration
Also due to ICMP discovery threads race condition i.e. multiple threads (default 10 threads) are trying to access the same Response List and adding the new discovered IP nodes leading to the corruption/crash.
Release : Any version of Spectrum running on Linux
Component : Spectrum Core / SpectroSERVER
- Set max_icmp_native_threads=1 in $SPECROOT/SS/.vnmrc file, restart SpectroSERVER process.
Also could be:
- Decrease the size of the ip boundary range in the AutoDiscovery configurations
- Add the following entry into the $SPECROOT/SS/.vnmrc file and restart the SpectroSERVER process for the change to take affect: