Erlang Port Drivers and Erl functions

Casper <>
Wed Dec 22 07:13:47 CET 2004

Hi All,


I'm developing a Erlang <-> C port using Port Drivers. As per the
communication message, I try to use Erl_Interface functions for easy message
encoding/decoding. But the program generates a segmentation fault.


Below are the details I do.


Start Port Driver:

            Port = open_port({spawn, './'}, []),                %%
inside a spawned process


Send a message to the C Port:

            Port ! {self(), {command, term_to_binary(Msg)}},  %% binary
encode the message


Receive the message in the C Port:

            static void nmslib_drv_output(ErlDrvData handle, char *buff, int
bufflen) {

                        ETERM *tuple;

                        tuple = erl_decode(buff);


As soon as I do the erl_decode, the program gets segmentation fault. As I
suspect, the buff doesn't have the correct message format that erl_decode
expect. Could anybody kindly advice me what's that difference.


If I don't use erl_decode, inside the C Port, the Port Driver works without
any problems.


Thanks in advance!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list