<div dir="ltr">There is a currently a Pull Request that deals with this: <a href="https://github.com/erlang/otp/pull/359">https://github.com/erlang/otp/pull/359</a><div><br></div><div>I believe that PR will make into master in one form or another.</div><div><br></div><div>Why is the error truncated in the first place? If I had to guess, and sadly I have to, I think it has to do with memory and copying.</div><div><br></div><div>When a process terminates with an error, it could potentially have a very large message (state and stacktrace) which is then sent to the error logger.</div><div>Currently, before the error message is sent by the dying process it will truncate the message to 200 (default) characters. This means  we have less to copy and we are less likely to kill the system, i.e. we have more control.</div><div>So, if not truncated it could in the worst case kill the system. See my last entry in the PR for an example.</div><div><br></div><div>I think the heart of the matter is that we have less control when a process dies and thus have no control over what the error message is or  more importantly how large it is. So we truncate it to have some control.</div><div>The problem is compounded by the lack of sharing of terms.</div><div><br></div><div>Aside: In this particular case of error message propagation it should be possible to just give the heap of the dying process as a heap fragment to the receiving process. The dying process should't need it anyway. No copy should be needed.</div><div><br></div><div>// Björn-Egil</div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-10-25 0:41 GMT+02:00 Ransom Richardson <span dir="ltr"><<a href="mailto:ransomr@talko.com" target="_blank">ransomr@talko.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr" style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>I've been trying to get useful information (the full stack) from Cowboy error reports. But all of our reports are truncated. I found this
<a href="http://stackoverflow.com/questions/17596686/truncated-error-report-in-erlang" target="_blank">
http://stackoverflow.com/questions/17596686/truncated-error-report-in-erlang</a>​, but the solution didn't work for me.<br>
</p>
<p><br>
</p>
<p>I looked at the emulator source code and found the undocumented +# switch which controls precision. Using this switch, I verified that the errors are being truncated by the emulator itself (see below).<br>
</p>
<p><br>
</p>
<p>Is this truncation intentional or a bug? Is there a better way around it than the +# switch?<br>
</p>
<p><br>
</p>
<p>At a higher level, is there a better way to get error/crash information from a process than going through error_logger? We're using lager and erlbrake and both add error_logger handlers that parse the text error reports. I would much rather deal with the
 reason term directly. Is there a way to be notified of process termination other than error_logger?<br>
</p>
<p>​<br>
</p>
<p><br>
</p>
<p><br>
</p>
<div>talko@ubuntu:~/talko_service/erl/session$ erl</div>
<div>Erlang/OTP 17 [erts-6.1.2] [source] [64-bit] [smp:6:6] [async-threads:10] [hipe] [kernel-poll:false]</div>
<div><br>
</div>
<div>Eshell V6.1.2  (abort with ^G)</div>
<div>1> spawn(fun() -> erlang:error([$x || _ <- lists:seq(0,5000)]) end).</div>
<div><0.35.0></div>
<div><br>
</div>
<div>=ERROR REPORT==== 24-Oct-2014::22:23:21 ===</div>
<div>Error in process <0.35.0> with exit value: {"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... </div>
<div><br>
<br>
</div>
<div>talko@ubuntu:~/talko_service/erl/session$ erl +#10</div>
<div>Erlang/OTP 17 [erts-6.1.2] [source] [64-bit] [smp:6:6] [async-threads:10] [hipe] [kernel-poll:false]</div>
<div><br>
</div>
<div>Eshell V6.1.2  (abort with ^G)</div>
<div>1> spawn(fun() -> erlang:error([$x || _ <- lists:seq(0,5000)]) end).</div>
<div><0.35.0></div>
<div>2> </div>
<div>=ERROR REPORT==== 24-Oct-2014::22:23:34 ===</div>
<div>Error in process <0.35.0> with exit value: {"xxxxxxxx... </div>
<div><br>
</div>
<div><span style="font-size:12pt"><br>
</span></div>
<div><span style="font-size:12pt">talko@ubuntu:~/talko_service/erl/session$ erl +#400</span><br>
</div>
<div>Erlang/OTP 17 [erts-6.1.2] [source] [64-bit] [smp:6:6] [async-threads:10] [hipe] [kernel-poll:false]</div>
<div><br>
</div>
<div>Eshell V6.1.2  (abort with ^G)</div>
<div>1> spawn(fun() -> erlang:error([$x || _ <- lists:seq(0,5000)]) end).</div>
<div><0.35.0></div>
<div>2> </div>
<div>=ERROR REPORT==== 24-Oct-2014::22:23:49 ===</div>
<div>Error in process <0.35.0> with exit value: {"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... </div>
<div><br>
<br>
</div>
<p><br>
</p>
</div>

<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>