[erlang-questions] picky dialyzer

Ulf Wiger <>
Fri Jan 14 15:56:34 CET 2011


Ouch! What say you, Kostis? Waiting for the comeback from Dialyzer. :)

Of course now I'm also curious what leads to such a weird limit as 256
arguments… obviously, 0 args is allowed, so the range 0..256 does at
least make my eyebrow twitch a little. Björn?

BR,
Ulf

On 14 Jan 2011, at 15:40, Björn Gustavsson wrote:

> On Thu, Jan 13, 2011 at 2:09 PM, Kostis Sagonas <> wrote:
>> Ulf Wiger wrote:
>>> 
>>> On 13 Jan 2011, at 12:09, Kostis Sagonas wrote:
>>> ....
>>>> 
>>>> mfa() is an alias for {atom(),atom(),byte()}.
>>> 
>>> Ahh, as in {Module, Function, Arity}?
>>> 
>>> In the System Limits of the Efficiency Guide, it says that you can have
>>> 256 arguments in a function or fun. Since dialyzer is never wrong, I will
>>> assume that the Efficiency Guide is? :)
>> 
>> Let's see...
>> 
>> %%=========================================================
>> -module(f_256).
>> 
>> -export([f/256]).
>> 
>> f(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_)
>> -> ok.
>> %%==========================================================
>> 
>> 
>> % erlc f_256.erl
>> % ~/HiPE/otp/bin/erl
>> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
>> [hipe] [kernel-poll:false]
>> 
>> Eshell V5.8.3  (abort with ^G)
>> 1> l(f_256).
>> {"Kernel pid
>> terminated",application_controller,"{application_terminated,kernel,shutdown}"}
>> 
>> Crash dump was written to: erl_crash.dump
>> Kernel pid terminated (application_controller)
>> ({application_terminated,kernel,shutdown})
>> 
> 
> Works fine for me:
> 
> $ erlc f_256.erl
> $ /ldisk/bjorn/otp/bin/erl
> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
> [kernel-poll:false]
> 
> Eshell V5.8.3  (abort with ^G)
> 1> l(f_256).
> {module,f_256}
> 2>
> 
> 
> If I try to load a function with 257 arguments, the loader will
> refuse to load the file:
> 
> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
> [kernel-poll:false]
> 
> Eshell V5.8.3  (abort with ^G)
> 1> c(f_257).
> 
> =ERROR REPORT==== 14-Jan-2011::15:34:45 ===
> beam/beam_load.c(2115): Error loading function f_257:f/257: op
> i_func_info: IaaI:
>  too many arguments: 257
> 
> {error,badfile}
> 
> =ERROR REPORT==== 14-Jan-2011::15:34:45 ===
> Loading of /home/bjorn/test/f_257.beam failed: badfile
> 2>
> 
> 
> (Hint: Note that HiPE is not enabled in the
> emulator I used.)
> 
> -- 
> Björn Gustavsson, Erlang/OTP, Ericsson AB

Ulf Wiger, CTO, Erlang Solutions, Ltd.
http://erlang-solutions.com





More information about the erlang-bugs mailing list