I have jiffy in my src directory but it my Cowboy server crashes when I run

298 views Asked by At

I tried cloning Jiffy to validate it as a JSON encoder. I had to copy the priv folder into /src, then I could cd src && erl > jiffy:encode... fine.

So I copied that src including the priv folder to my cowboy app. When I try to access it just like I would any other module, I get this error

~/erlapp:.gmake run
gmake[1]: Entering directory '/Users/quantum/erlapp/deps/cowboy'
gmake[2]: Entering directory '/Users/quantum/erlapp/deps/cowlib'
gmake[2]: Leaving directory '/Users/quantum/erlapp/deps/cowlib'
gmake[2]: Entering directory '/Users/quantum/erlapp/deps/ranch'
gmake[2]: Leaving directory '/Users/quantum/erlapp/deps/ranch'
 GEN    rebar.config
gmake[1]: Leaving directory '/Users/quantum/erlapp/deps/cowboy'
===> Starting relx build process ...
===> Resolving OTP Applications from directories:
          /Users/quantum/erlapp/ebin
          /Users/quantum/erlapp/deps
          /usr/local/Cellar/erlang/19.1/lib/erlang/lib
          /Users/quantum/erlapp/apps
          /Users/quantum/erlapp/_rel
===> Resolved erlapp_release-1
===> Including Erts from /usr/local/Cellar/erlang/19.1/lib/erlang
===> release successfully created!
===> tarball /Users/quantum/erlapp/_rel/erlapp_release/erlapp_release-1.tar.gz successfully created!
Exec: /Users/quantum/erlapp/_rel/erlapp_release/erts-8.1/bin/erlexec -boot /Users/quantum/erlapp/_rel/erlapp_release/releases/1/erlapp_release -mode embedded -boot_var ERTS_LIB_DIR /Users/quantum/erlapp/_rel/erlapp_release/erts-8.1/../lib -config /Users/quantum/erlapp/_rel/erlapp_release/releases/1/sys.config -args_file /Users/quantum/erlapp/_rel/erlapp_release/releases/1/vm.args -- console
Root: /Users/quantum/erlapp/_rel/erlapp_release
/Users/quantum/erlapp/_rel/erlapp_release
heart_beat_kill_pid = 78636
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

2017-01-01 23:36:36 crash_report
    initial_call: {supervisor,kernel,['Argument__1']}
    pid: <0.281.0>
    registered_name: []
    error_info: {exit,{on_load_function_failed,jiffy},[{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.256.0>]
    messages: []
    links: [<0.257.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 376
    stack_size: 27
    reductions: 117
2017-01-01 23:36:36 supervisor_report
    supervisor: {local,kernel_sup}
    errorContext: start_error
    reason: {on_load_function_failed,jiffy}
    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-01-01 23:36:37 crash_report
    initial_call: {application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}
    pid: <0.255.0>
    registered_name: []
    error_info: {exit,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,jiffy}}},{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.254.0>]
    messages: [{'EXIT',<0.256.0>,normal}]
    links: [<0.254.0>,<0.253.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 376
    stack_size: 27
    reductions: 152
2017-01-01 23:36:37 std_info
    application: kernel
    exited: {{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,jiffy}}},{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,jiffy}}},{kernel,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,jiffy}}},{kernel,start,[normal,[]]}}})
heart: Sun Jan  1 23:36:37 2017: Erlang is crashing .. (waiting for crash dump file)
heart: Sun Jan  1 23:36:37 2017: Would reboot. Terminating.
gmake: *** [erlang.mk:6448: run] Error 1
1

There are 1 answers

0
Marfeyh On

The reason why this is happening is you are running on a different version of erlang than the one you compiled with.

If you delete the compiled version of jiffy and recompile it should work to run on the same system you compiled on:

rm -rf deps/

Also, note that you need to have gcc, so you can compile C code.