The VCS engine (had) died due to malloc() returning a NULL pointer as memory could not be allocated.

book

Article ID: 100022109

calendar_today

Updated On:

Resolution

From the 'pmap' of the had coredump it could be seen that the heap size of had is appropriately sized at ~28MB and so there was no suspicion of a memory leak issue with had.
 
core 'core' of 26159:/opt/VRTSvcs/bin/had -restart
00010000 3688K r-x--/opt/VRTSvcs/bin/had
003B8000 344K rwx--/opt/VRTSvcs/bin/had
0040E000 28392K rwx-- [heap ]
FE980000 680K r-x--/lib/libm.so.2
FEA38000 32K rwx--/lib/libm.so.2
..
..
total 39488K
 
 
 
Looking at the system itself:
 
# echo "::memstat" |/usr/bin/mdb -k
Page Summary Pages MB %Tot
---------------------------- ---------------- ----
Kernel 364060 2844 9%
Anon 3120697 24380 76%
Exec and libs 66268 517 2%
Page cache 183903 1436 4%
Free (cachelist) 230243 17986%
Free (freelist) 152404 11904%
 
Total 4117575 32168
Physical 4108479 32097
 
The Anon row represents Anonymous memory pages which are used for a processes heap space, stack, shared memory etc. Thus heap space is taken from anonymous memory.
 
From the above it can be safely assumed that the had coredump was not due to a VCS memory leak related issue and instead was possibly due to one process (or multiple) using excessive anonymous memory pages. Potentially due to a memory leak or some other abnormality.
 

 

Issue/Introduction

The VCS engine (had) died due to malloc() returning a NULL pointer as memory could not be allocated.