[erlang-bugs] proc_lib relies on immutable dictionary

mats cronqvist <>
Thu Nov 27 14:30:33 CET 2008

  an excellent one-liner in R12-3 (and earlier);

1> proc_lib:spawn_link(fun()->erase(),a=b end).
** exception exit: {badmatch,b}

  and in R12B-5;

1> proc_lib:spawn_link(fun()->erase(),a=b end).
=ERROR REPORT==== 27-Nov-2008::14:25:41 ===
Error in process <0.192.0> on node '' with exit value: {{badmatch,undefined},[{proc_lib,exit_p,2}]}
** exception error: no match of right hand side value undefined
     in function  proc_lib:exit_p/2

  the relevant function in R12B-4;

exit_p(Class, Reason, StartF) ->
    _ = crash_report(Class, Reason, StartF),

  and in R12B-5;

exit_p(Class, Reason) ->
    {M,F,A} = get('$initial_call'),
    MFA = {M,F,make_dummy_args(A, [])},
    crash_report(Class, Reason, MFA),

  exit_p now (for no apparent reason) relies on the user not clearing
  the dictionary.


More information about the erlang-bugs mailing list