[erlang-questions] Getting more info from crash dump file

cao xu cao.xu@REDACTED
Thu Dec 13 11:26:06 CET 2012


The app was a web server based on yaws, so most processes were spawned by yaws_server(<0.48.0>), and they were doing the same kind of work:

1, parse the http request 
2, request remote server
3, parse the returned xml
...

When the VM crashed, there were about  1,000 this kind of processes but only this one  seemed abnormal. Do you mean this process was definitely  the one who caused the allocation of 78362800  bytes' memory. If it's true, it will help me add error locater in the app.

在 2012-12-13,下午5:34, Gustav Simonsson 写道:

> Hi,
> 
> In the crashdump viewer, you can click on the process that spawned this process (the "Spawned by" field) several times to go up the process hierarchy of your application to see where in the process tree it was spawned. 
> Also, you can see it was executing a call to xmerl, and is linked to a Erlang port, which should help you narrow down which process it was in your application.
> 
> Cheers,
> Gustav Simonsson
> 
> 
> On Thu, Dec 13, 2012 at 10:21 AM, cao xu <cao.xu@REDACTED> wrote:
> Hi,
> 
> 	I got an erlang crash dump file on a 2G memory linux with following info:
> 
> eheap_alloc: Cannot allocate 78362800 bytes of memory (of type "heap").
> 
> =memory
> total: 1510245164
> processes: 1360838774
> processes_used: 1360720438
> 
> 	The total memory consumed by the VM was about 1.5G and most of them were used by  process. According to the process info in the dump file, the biggest Stack+Heap was 15672560 and the owner's state was garbing. I am not sure whether the process was the killer of the whole VM. 
> 
> Name	 	Spawned as	proc_lib:init_p/5
> State	Garbing (limited info)	Last scheduled in for	xmerl_scan:'-initial_state0/2-fun-1-'/2
> Started	Tue Nov 6 17:00:39 2012	Spawned by	<0.48.0>
> Reductions	20600887
> Stack+heap	15672560	OldHeap	8024355
> Heap unused	 202	OldHeap unused	8024355
> Number of heap fragments	1	Heap fragment data	119
> Program counter	0x02ea24dc (xmerl_scan:'-initial_state0/2-fun-1-'/2 + 4)
> Continuation pointer	0x02e8a254 (xmerl_scan:scan_char_data/5 + 2408)
> Arity	 
> Link list	[#Port<0.16239279>, <0.48.0>]
> Msg queue length	0
> 
> 
> Is there a way to find out  which process  or function call was the reason of the allocating action, and how can I get more info from the dump file to help locating the error?
> 
> Thanks.
> 
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121213/9c4c9b9e/attachment.htm>


More information about the erlang-questions mailing list