2011-05-08 5 views
1

sasl 크래시의 messages 필드가 메시지 사서함의 현재 내용, 즉 복구되지 않은 메시지를보고합니까?Erlang SASL 크래시 보고서에서 "messages :"필드의 의미는 정확히 무엇입니까?

또는 메시지 기록, 마지막 수신 메시지입니까?

수신 된 메시지가 표시되는 순서대로 표시되면 어떻게됩니까?

=CRASH REPORT==== 8-May-2011::09:00:38 === 
    crasher: 
    initial call: most_msgs:-connect/4-fun-0-/0 
    pid: <0.181.0> 
    registered_name: [] 
    exception exit: {tx_succ_timeout,mcm} 
     in function most_msgs:wait_tx_succ/4 
    ancestors: [<0.178.0>,<0.177.0>,<0.175.0>,<0.174.0>,<0.173.0>,<0.172.0>] 
    messages: [{send,{most_mcm,{most_fdh,mcm,undefined,undefined,968,6,255}, 
            80,set,undefined,undefined, 
            <<244,239,62,2>>}}, 
        {recv,{most_icm,768,status,<<2>>}}, 
        {recv,{most_fifo_status,mcm,0,net_off,1}}, 
        {send,{most_mcm,{most_fdh,mcm,undefined,undefined,968,6,255}, 
            80,set,undefined,undefined, 
            <<244,223,62,128>>}}, 
+0

이 "erlang : process_info (list_to_pid (PID), message_queue_len)"를 사용하십시오. 런타임에 메일 박스에 수신되지 않은 메시지가 과부하되고 있는지 확인하십시오. 나는 그들이 충돌 전에 메일 박스에있는 내용이라고 생각합니다. – Arunmu

답변

2

http://www.erlang.org/doc/man/erlang.html#process_info-2

{메시지 MessageQueue가}

MessageQueue가 아직 처리되지 않은 프로세스에 대한 메시지의 목록이다.


대부분의 정보는 process_info (lib/stdlib/src/proc_lib.erl)에서 가져옵니다. 메시지 순서에 대해서는 잘 모르겠다.

0

프로세스가 충돌 한 시점의 메시지 대기열에있는 메시지입니다.

+0

모든 참조는 무엇입니까? 나도 직감을 가졌지 만, 그것이 실제로 어떻게되어 있는지 발견하지 못했습니다. –

+0

경험과 논리만으로는 다른 어떤 것도 될 수 없습니다. 처리 된 메시지가 모든 프로세스에 대해 보관되는 경우 심각한 메모리 변형이 발생할 수 있습니다. – Lukas