[erlang-questions] open_port returns enoent even when driver init function executes correctly.

Robert Raschke <>
Thu Jan 3 09:36:58 CET 2013


You can try running erl.exe with sasl enabled to get better error messages.

The messages you see at the moment are coming out interleaved, like in the
old joke "When faced with a problem you decide to use threading, ..."  :-)

Robby
 On Jan 3, 2013 4:53 AM, "SurferJeff" <> wrote:

> I found the recipe to build debug:
>
> $ cd $ERL_TOP
> $ rm bin/win32/erlexec.dll
> $ cd erts/emulator
> $ make debug
> $ cd ../etc
> $ make debug
>
>
> And it succeeded.  However, the next command in the recipe fails:
>  /cygdrive/c/Users/jeff/GitHub/otp
> $ make local_setup
> make[1]: Entering directory `/cygdrive/c/Users/jeff/GitHub/otp/erts'
> make[2]: Entering directory
> `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_script
> s'
> make[2]: Nothing to be done for `debug'.
> make[2]: Leaving directory
> `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_scripts
> '
> ct_run.exe dialyzer.exe erl.ini erl_crash.dump escript.exe run_test.exe
> typer.ex
> e werl.exe win32
> make[2]: Entering directory
> `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_script
> s'
> /usr/bin/install -c -d
> /cygdrive/c/users/jeff/github/otp/erts/start_scripts/tmp
> ( cd /cygdrive/c/users/jeff/github/otp/erts/start_scripts/tmp && \
>   erlc -W  -I/cygdrive/c/users/jeff/github/otp/lib/kernel/ebin
> -I/cygdrive/c/use
> rs/jeff/github/otp/lib/stdlib/ebin
> -I/cygdrive/c/users/jeff/github/otp/lib/sasl/
> ebin +no_warn_sasl +otp_build -o
> /cygdrive/c/users/jeff/github/otp/bin/start.scr
> ipt /cygdrive/c/users/jeff/github/otp/erts/start_scripts/start_clean.rel )
> File not found:
> "c:/cygdrive/c/users/jeff/github/otp/erts/start_scripts/start_cl
> ean.rel"
> Makefile:129: recipe for target
> `/cygdrive/c/users/jeff/github/otp/bin/start.scr
> ipt' failed
> make[2]: *** [/cygdrive/c/users/jeff/github/otp/bin/start.script] Error 1
> make[2]: Leaving directory
> `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_scripts
> '
> Makefile:69: recipe for target `local_setup' failed
> make[1]: *** [local_setup] Error 2
> make[1]: Leaving directory `/cygdrive/c/Users/jeff/GitHub/otp/erts'
> Makefile:883: recipe for target `local_setup' failed
> make: *** [local_setup] Error 2
>
>
> And now my erl.exe is completely hosed:
>  /cygdrive/c/Users/jeff/GitHub/otp/bin/win32
> $ ./erl.exe
> {(no error logger present"i)n ietr rtoerr: m"iEnrartoirn gi ni np
> rdooc_ebsoost
> "<,0{.b2a.d0a>r wgi,t[h{ eerxli_tp rviaml_uleo:a
> d{ebra,dcahregc,k[_{feirlle__pr
>
> reismu_llto,a3d,e[r{,fcihleec,k"_efrill_ep_rriems_ullota,d3er,[.{efrill"e},,\{"l
>
> eirnle_,p28r3i}m]_}l,o{aidneirt.,egrelt\_"b}o,o{tl,i1n,e[,{2f8i3l}e,]"}i,n{iitn.
>
> ite,rgle"t},_{bloionte,,178,5[}{]f}i,l{ei,n\i"ti,ngiett._ebrolo\t",}2,,{[l{ifnie
>
> l,e7,8"5i}n]i}t,.{eirnli"t},,g{elti_nbeo,o77t2,}2]},,[{{ifniilte,,d\o"_ibnoiott.
> ,e3r,l[\{"f}i,l{el,i"nien,i7t7.2e}r]l}",}{,i{nliitn,ed,o73_9b}o]o}t],}3},
> [{file,\"init.erl\"},{line,739}]}]}\n"
> Crash dump was written to: erl_crash.dump
> init terminating in do_boot ()
>
>
> On Wednesday, January 2, 2013 7:26:09 PM UTC-8, SurferJeff wrote:
>
>> I'm working through the example here:
>> http://www.erlang.org/doc/**tutorial/c_portdriver.html<http://www.erlang.org/doc/tutorial/c_portdriver.html>
>> And I'm trying to get it to run on Windows.  I reordered the code in the
>> C
>> source so that it compiles, and added a module.def file so that erlang
>> actually finds and executes the driver init function.
>>
>> I attached a debugger.  Walking back up the stack, I observe that:
>> The driver init function returns correctly.
>> erts_sys_ddll_call_init() returns correctly.
>> do_load_driver_entry() returns ERL_DE_NO_ERROR.
>> load_driver_entry() returns ERL_DE_NO_ERROR.
>> erl_ddll_try_load_3 returns t = TUPLE2(hp, am_ok, ok_term); on line 417
>> of
>> erl_bif_ddl.c.
>> But the next higher call on the stack is _process_main(), which was
>> compiled
>> with gcc and has no debug symbols so I can't step through and figure out
>> why
>> the end result is:
>>
>> =ERROR REPORT==== 2-Jan-2013::19:14:22 ===
>> Error in process <0.31.0> with exit value:
>> {enoent,[{erlang,open_port,[{**spawn,"example_drv"},[]],[]},{**complex5,init,1,[
>>
>> {file,"c:/Users/jeff/code/**code/port_driver/complex5.erl"**},{line,19}]}]}
>>
>>
>> Has anyone seen this before?
>>
>> If not, how do I recompile erl.exe purely with cl.exe (no gcc) so that it
>> generates debug symbols?  And while I'm recompiling, how do I turn off
>> all
>> optimizations?  I can read basic make files, but I get lost in the
>> configure
>> scripts and .in and .mk files.  Please take pity on a Windows programmer
>> ;-)
>>
>>
>> ______________________________**_________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130103/5d08ce16/attachment.html>


More information about the erlang-questions mailing list