[erlang-questions] Getting more info from crash dump file
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 写道：
> 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.
> Gustav Simonsson
> On Thu, Dec 13, 2012 at 10:21 AM, cao xu <cao.xu@REDACTED> wrote:
> 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").
> 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)
> 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?
> erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions