I am trying to start a supervisor of type one_for_one with one child and am getting this error:
A = pl:start().
{error,{badarg,[{erlang,apply,[{state,[0|1]},init,[[]]],[]},
{supervisor,init,1,[{file,"supervisor.erl"},{line,295}]},
{gen_server,init_it,2,[{file,"gen_server.erl"},{line,374}]},
{gen_server,init_it,6,[{file,"gen_server.erl"},{line,342}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,249}]}]}}
=CRASH REPORT==== 1-Mar-2020::15:28:41.090000 ===
crasher:
pid: <0.215.0>
registered_name: []
exception error: bad argument
in function apply/3
called as apply({state,[0|1]},init,[[]])
in call from supervisor:init/1 (supervisor.erl, line 295)
in call from gen_server:init_it/2 (gen_server.erl, line 374)
in call from gen_server:init_it/6 (gen_server.erl, line 342)
ancestors: [<0.209.0>]
message_queue_len: 0
messages: []
links: [<0.209.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 376
stack_size: 25
reductions: 192
neighbours:
neighbour:
pid: <0.209.0>
registered_name: []
initial_call: {erlang,apply,2}
current_function: {io,execute_request,2}
ancestors: []
message_queue_len: 0
links: [<0.63.0>,<0.215.0>]
trap_exit: false
status: waiting
heap_size: 1598
stack_size: 25
reductions: 5867
current_stacktrace: [{io,execute_request,2,[{file,"io.erl"},{line,579}]},
{shell,exprs,7,[{file,"shell.erl"},{line,693}]},
{shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
{shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]
** exception exit: badarg
in function apply/3
called as apply({state,[0|1]},init,[[]])
in call from supervisor:init/1 (supervisor.erl, line 295)
in call from gen_server:init_it/2 (gen_server.erl, line 374)
in call from gen_server:init_it/6 (gen_server.erl, line 342)
in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 249)
Supervisor:
-module(pl).
-behaviour(supervisor).
-export([start/0,init/1]).
-record(state,{
data=[]
}).
%% {ChildId, StartFunc, Restart, Shutdown, Type, Modules}
start()->
supervisor:start_link({local,?MODULE},#state{data=[0|1]},[]).
init(State=#state{data=D})->
InitialChild={fchild,{serv,start_link,[-1]},temporary,3000,brutal_kill,worker},
MaxRestart=2,
MaxTime=600,
Strategy={one_for_one,MaxRestart,MaxTime},
{ok,{Strategy,[
InitialChild
]}}.
Worker:
-module(serv).
-behaviour(gen_server).
-compile(export_all).
-define(A,300).
-record(state,{
values=[],
id
}).
call(Pid,Message)->
gen_server:call(Pid,Message).
cast(Pid,Message)->
gen_server:cast(Pid,Message).
start_link(Id)->
{ok,Pid}=gen_server:start_link({local,xx},?MODULE,[Id],[]),
Pid.
stop(Ref)->
gen_server:stop(Ref).
init(Id)->
{ok,#state{values=[],id=Id}}.
handle_call(state,From,State=#state{values=V})->
Reply={reply,State,State},
Reply;
I am just trying to start a supervisor with only one child that gets a parameter in its init method. What is wrong in this code?
The second argument of start_link with 3 arguments is supposed to be the module name; it should be
start()->
supervisor:start_link({local,?MODULE}, ?MODULE, [#state{data=[0|1]}]).
Related
I am running some code written in F# with mono and I have seen that after some time running (weeks), some process are in sleep mode. Using strace as strace -p <pid> I get
Process 38756 attached - interrupt to quit
futex(0x272ee9c, FUTEX_WAIT_PRIVATE, 1, NULL
Which as far as I understand it means that some part is awaiting for something (other threads).
So I continued searching the problem with gdb attach <pid> in which I can see that there are 4 threads as:
(gdb) info threads
4 Thread 0x7ff06a3ff700 (LWP 38760) 0x0000003b3c80b5bc in pthread_cond_wait##GLIBC_2.3.2 () from /lib64/libpthread.so.0
3 Thread 0x7ff06aa17700 (LWP 38769) 0x0000003b3c80d930 in sem_wait () from /lib64/libpthread.so.0
2 Thread 0x7ff0677ff700 (LWP 38789) 0x0000003b3c80b5bc in pthread_cond_wait##GLIBC_2.3.2 () from /lib64/libpthread.so.0
* 1 Thread 0x7ff070a07760 (LWP 38756) 0x0000003b3c80b5bc in pthread_cond_wait##GLIBC_2.3.2 () from /lib64/libpthread.so.0
On thread 1 using where I can see that the place where it is not working is a Parallel.For().
From my part, the code where the process goes to sleep is:
let sinMod t (difRay:Vector) (fA:(float*Vector*float)[]) =
let duepi = 2.*PI
Array.fold(fun acc x -> let freq, amplitude, phase = fA.[x]
acc+sin(duepi*freq*t+phase)*(amplitude*difRay)) 0. [|0..fA.Length-1|]
let NextFunc (var1:type1,var2:type2,var3:type3) =
// do some stuff
...
// some context
let time = snd var3
let inputArray = var.SomeArray // float[]
// the function that doesn't works
Parallel.For(0, (inputArray .Length), fun i -> (inputArray .[i] <- inputArray .[i]+(ww*SINMOD time.[i])) ) |> ignore
inputArray // return from NextFunc
I really don't have any idea where is the problem. Sometimes the process goes to sleep and others this is not happening. I don't know if this can have any relation, but the length of the parallel.for is 40960
Why is the program going to sleep?
Thank you
EDIT:
I haven't specified why I believe the problem is happening in a function like I said. Using gdb I obtain:
(gdb) where
#0 0x0000003b3c80b5bc in pthread_cond_wait##GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x000000000060cd0d in mono_os_cond_wait (cond=0x272ee98, mutex=0x272ee70, timeout_ms=4294967295) at ../../mono/utils/mono-os-mutex.h:105
#2 mono_os_cond_timedwait (cond=0x272ee98, mutex=0x272ee70, timeout_ms=4294967295) at ../../mono/utils/mono-os-mutex.h:120
#3 0x000000000060f0c8 in _wapi_handle_timedwait_signal_handle (handle=0x410, timeout=4294967295, alertable=1, poll=0, alerted=0x7fff27d2a6cc)
at handles.c:1554
#4 0x00000000006245ea in wapi_WaitForSingleObjectEx (handle=0x410, timeout=4294967295, alertable=1) at wait.c:173
#5 0x00000000005b01f2 in ves_icall_System_Threading_Monitor_Monitor_wait (obj=0x7fed09df4cc0, ms=4294967295) at monitor.c:1294
#6 0x00007ff06806385e in System.Threading.Monitor:Wait (obj=<type 'exceptions.ValueError'>
zero length field name in format
140656049605824, millisecondsTimeout=-1) at /root/mono-4.3.2/mcs/class/corlib/System.Threading/Monitor.cs:148
#7 0x00007ff067e69dc2 in System.Threading.ManualResetEventSlim:Wait (this=..., millisecondsTimeout=-1, cancellationToken=0)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/ManualResetEventSlim.cs:669
#8 0x00007ff067e8544e in System.Threading.Tasks.Task:SpinThenBlockingWait (this=..., millisecondsTimeout=-1, cancellationToken=0)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:3326
#9 0x00007ff067e8255d in System.Threading.Tasks.Task:InternalRunSynchronously (this=..., scheduler=..., waitForCompletion=true)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:1231
#10 0x00007ff067e823c8 in System.Threading.Tasks.Task:RunSynchronously (this=..., scheduler=...)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:1169
#11 0x00007ff067e77c03 in System.Threading.Tasks.Parallel:ForWorker<TLocal_REF> (fromInclusive=0, toExclusive=40960, parallelOptions=..., body=...,
bodyWithState=..., bodyWithLocal=..., localInit=..., localFinally=...)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/Tasks/Parallel.cs:1273
#12 0x00007ff067e76b8a in System.Threading.Tasks.Parallel:For (fromInclusive=0, toExclusive=40960, body=...)
at /root/mono-4.3.2/external/referencesource/mscorlib/system/threading/Tasks/Parallel.cs:441
#13 0x00000000402c11ee in ?? ()
#14 0x00007fff27d2aec0 in ?? ()
#15 0x00007ff0167eab00 in ?? ()
#16 0x0000000000000016 in ?? ()
#17 0x00007fef394db070 in ?? ()
#18 0x0000000000000000 in ?? ()
(gdb) p mono_pmip(0x00000000402c11ee)
$1 =
0x29ae0f0 " ShadingNoise:PhaseModulation (Types.types/Ray,Types.types/Intersection,System.Tuple`2<System.Tuple`3<double, Types.Algebra/Vector, double>[], double[]>) + 0x27e (0x402c0f70 0x402c1238) [0x273b080 - m"...
(gdb)
Where to specify, ShadingNoise:PhaseModulation is the function that I have defined as NextFunc in a simplified way. just in case, the original function it's here
When I try to start the deployed app, I get this error:
initial_call: {supervisor,kernel,['Argument__1']}
pid: <0.1762.0>
registered_name: []
error_info: {exit,{on_load_function_failed,re2},[{gen_server,init_it,6,[{file,"gen_server.erl"},{line,352}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}
ancestors: [kernel_sup,<0.1738.0>]
messages: []
links: [<0.1739.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 376
stack_size: 27
reductions: 117
2017-06-19 11:51:18 supervisor_report
supervisor: {local,kernel_sup}
errorContext: start_error
reason: {on_load_function_failed,re2}
offender: [{pid,undefined},{id,kernel_safe_sup},{mfargs,{supervisor,start_link,[{local,kernel_safe_sup},kernel,safe]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]
2017-06-19 11:51:19 crash_report
initial_call: {application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}
pid: <0.1737.0>
registered_name: []
error_info: {exit,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,re2}}},{kernel,start,[normal,[]]}},[{application_master,init,4,[{file,"application_master.erl"},{line,134}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}
ancestors: [<0.1736.0>]
messages: [{'EXIT',<0.1738.0>,normal}]
links: [<0.1736.0>,<0.1735.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 376
stack_size: 27
reductions: 152
2017-06-19 11:51:19 std_info
application: kernel
exited: {{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,re2}}},{kernel,start,[normal,[]]}}
type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,re2}}},{kernel,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,re2}}},{kernel,start,[normal,[]]}}})
But I have no idea how to solve this error.. any idea?
Phoenix app start:
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
# Start the endpoint when the application starts
supervisor(MyApp.Endpoint, []),
# Start the endpoint for schools
supervisor(MyApp.Schools.Endpoint, []),
# Start the Ecto repository
supervisor(MyApp.Schools.Repo, []),
supervisor(MyApp.Repo, []),
]
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
I have wriiten a arithmetic snippet using TSUNG-Erlang function but unable to get through it successfully ; getting following error in my TSUNG controller's log ,
TSUNG-Erlang Snippet,
<setdynvars sourcetype="file" fileid="NBILM_testUsers" delimiter=";" order="iter">
<var name="minnum"/>
<var name="maxnum"/>
</setdynvars>
<setdynvars sourcetype="eval"
code='fun({Pid,DynVars})->
{ok,Maxfound}=ts_dynvars:lookup(maxnum,DynVars),
Maxstr = lists:flatten(io_lib:format("~p",[Maxfound])),
{MAX, _} = string:to_integer(Maxstr),
{ok,Minfound}=ts_dynvars:lookup(minnum,DynVars),
Minstr = lists:flatten(io_lib:format("~p",[Minfound])),
{MIN, _} = string:to_integer(Minstr),
{ok,Countern} = ts_dynvars:lookup(counter,DynVars,999),
Counternstr = lists:flatten(io_lib:format("~p",[Countern])),
{Counternum, _} = string:to_integer(Counternstr),
Mnum1 = MAX + Counternum rem ( 2 - 1 ),
Mnum1 end.
'>
<var name="mnum" />
</setdynvars>
Erroneous log events from TSUNG Controller,
=INFO REPORT==== 5-May-2017::11:42:40 ===
ts_client:(5:<0.134.0>) Stop in state think, reason= {badarith,
[{erlang,
'+',
[error,0],
[]},
{erl_eval,
do_apply,6,
[{file,
"erl_eval.erl"},
{line,
669}]},
{erl_eval,
expr,5,
[{file,
"erl_eval.erl"},
{line,
438}]},
{erl_eval,
exprs,5,
[{file,
"erl_eval.erl"},
{line,
122}]},
{ts_client,
handle_next_action,
1,
[{file,
"src/tsung/ts_client.erl"},
{line,
459}]},
{gen_fsm,
handle_msg,
7,
[{file,
"gen_fsm.erl"},
{line,
518}]},
{proc_lib,
init_p_do_apply,
3,
[{file,
"proc_lib.erl"},
{line,
239}]}]}
=ERROR REPORT==== 5-May-2017::11:42:40 ===
** State machine <0.134.0> terminating
** Last message in was {timeout,#Ref<0.0.8.22>,end_thinktime}
** When State == think
** Data == {state_rcv,none,
{{0,0,0,0},0},
undefined,0,10000,"xyz",80,ts_tcp,
{proto_opts,negociate,"/http-bind/",false,"/chat",
"binary",10,3,600000,infinity,infinity,32768,32768,
undefined,undefined,[],false,true},
false,1,undefined,true,undefined,
{1493,964755,255814},
18,18,false,undefined,0,[],<<>>,
{http,0,0,-1,
{none,none},
false,false,
{false,false},
[],"tsung",[]},
0,1,524288,524288,
[{tsung_userid,1}],
ts_http,[],undefined,full}
Reason for termination =
{badarith,[{erlang,'+',[error,0],[]},
{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,669}]},
{erl_eval,expr,5,[{file,"erl_eval.erl"},{line,438}]},
{erl_eval,exprs,5,[{file,"erl_eval.erl"},{line,122}]},
{ts_client,handle_next_action,1,
[{file,"src/tsung/ts_client.erl"},{line,459}]},
{gen_fsm,handle_msg,7,[{file,"gen_fsm.erl"},{line,518}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}
It would be really helpful, if someone can point what am doing incorrectly.
The message says that in the line Mnum1 = MAX + Counternum rem ( 2 - 1 ), you are trying to add error with 0 (by the way Counternum rem ( 2 - 1 ) is always equal to 0 so there must be an error here).
Max is the result of {MAX, _} = string:to_integer(Maxstr),, it is equal to error if Maxstr is not a string starting by an integer:
"123" will return {123,[]}
"123 ab" will return {123," ab"}
"a123" will return {error,no_integer}
an_atom will return {error,not_a_list}
To debug further verify the value of Maxfound and Maxstr
you can also shorten your code using the function io:fread/2 which will directly return an integer.
My Erlang applicaation processed crashed and then exited, but found that the erlang VM is still running.
I could recieve pong when ping this "suspended node"
Types regs() and the results show below, there is not my app process.
(hub#192.168.1.140)4> regs().
** Registered procs on node 'hub#192.168.1.140' **
Name Pid Initial Call Reds Msgs
application_controlle <0.7.0> erlang:apply/2 30258442 1390
auth <0.20.0> auth:init/1 189 0
code_server <0.26.0> erlang:apply/2 1194028 0
erl_epmd <0.19.0> erl_epmd:init/1 138 0
erl_prim_loader <0.3.0> erlang:apply/2 2914236 0
error_logger <0.6.0> gen_event:init_it/6 49983527 0
file_server_2 <0.25.0> file_server:init/1 16185407 0
global_group <0.24.0> global_group:init/1 107 0
global_name_server <0.13.0> global:init/1 1385 0
gr_counter_sup <0.43.0> supervisor:gr_counter_sup 253 0
gr_lager_default_trac <0.70.0> gr_counter:init/1 121 0
gr_lager_default_trac <0.72.0> gr_manager:init/1 46 0
gr_lager_default_trac <0.69.0> gr_param:init/1 117 0
gr_lager_default_trac <0.71.0> gr_manager:init/1 46 0
gr_manager_sup <0.45.0> supervisor:gr_manager_sup 484 0
gr_param_sup <0.44.0> supervisor:gr_param_sup/1 253 0
gr_sup <0.42.0> supervisor:gr_sup/1 237 0
inet_db <0.16.0> inet_db:init/1 749 0
inet_gethost_native <0.176.0> inet_gethost_native:serve 4698517 0
inet_gethost_native_s <0.175.0> supervisor_bridge:inet_ge 41 0
init <0.0.0> otp_ring0:start/2 30799457 0
kernel_safe_sup <0.35.0> supervisor:kernel/1 278 0
kernel_sup <0.11.0> supervisor:kernel/1 47618 0
lager_crash_log <0.52.0> lager_crash_log:init/1 97712230 0
lager_event <0.50.0> gen_event:init_it/6 1813660437 0
lager_handler_watcher <0.51.0> supervisor:lager_handler_ 358 0
lager_sup <0.49.0> supervisor:lager_sup/1 327 0
net_kernel <0.21.0> net_kernel:init/1 110769667 0
net_sup <0.18.0> supervisor:erl_distributi 313 0
os_cmd_port_creator <0.582.0> erlang:apply/2 81 0
rex <0.12.0> rpc:init/1 15653480 0
standard_error <0.28.0> erlang:apply/2 9 0
standard_error_sup <0.27.0> supervisor_bridge:standar 41 0
timer_server <0.100.0> timer:init/1 59356077 0
user <0.31.0> group:server/3 23837008 0
user_drv <0.30.0> user_drv:server/2 12239455 0
** Registered ports on node 'hub#192.168.1.140' **
Name Id Command
ok
It rarely occurs, but anyone explains it?
System: CentOS 5.8
Erlang: R15B03
i run hwclient:main(). or hwserver:main().
from zeromq example for erlang
https://github.com/zeromq/ezmq/blob/master/examples
from link
http://zeromq.org/bindings:erlang
and have error "exception exit"
crasher:
initial call: ezmq:init/1 pid: <0.42.0> registered_name: []
exception exit: {noproc,
{gen_server,call,
[ezmq_link_sup,{start_child,[]},infinity]}}
in function gen_server:terminate/6 (gen_server.erl, line 746)
ancestors: [<0.31.0>] messages: [] links: [] dictionary: [] trap_exit: true status: running heap_size: 376 stack_size: 27 reductions: 174
neighbours:
** exception exit: {{noproc,
{gen_server,call,
[ezmq_link_sup,{start_child,[]},infinity]}},
{gen_server,call,
[<0.42.0>,{connect,tcp,{127,0,0,1},5555,[]}]}}
in function gen_server:call/2 (gen_server.erl, line 182)
in call from hwclient:main/0 (/examples/hwclient.erl, line 15)
what's wrong?