ALERT: Some images may not load properly within the Knowledge Base Article. If you see a broken image, please right-click and select 'Open image in a new tab'. We apologize for this inconvenience.

SpectroSERVER crash on Linux in IcmpRangeReques code

book

Article ID: 224269

calendar_today

Updated On:

Products

CA Spectrum DX NetOps

Issue/Introduction

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
#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&) ()
   from /opt/SPECTRUM/lib/../SS/libicmpserv.so.1
#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

Cause

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.

Environment

Release : Any version of Spectrum running on Linux

Component : Spectrum Core / SpectroSERVER

Resolution

Possible resolutions:

 - 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:

stack_size_modifier=4