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

SurferJeff <>
Thu Jan 3 05:53:30 CET 2013


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 
> 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 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130102/34e6a630/attachment.html>


More information about the erlang-questions mailing list