[erlang-questions] crash dump at ejabberd startup

Fri Nov 19 00:59:02 CET 2010

Hello Michael,

> I've attached a patch that disables the check.

You're an angel, many thanks ! :-)

> I'll put together a better patch later. I can see a few ways of doing
> this:
> 1. have a configurable source IP address as you suggested
> 2. checking the source IP is the same as the destination IP
> 3. checking the connection came over the loopback interface (probably no
> portable way to do this)
> 4. have an option to disable the check (the old behaviour)
> Aside from jails, I'm not sure anyone else would be affected by this. So
> maybe option 4 is the way to go.

Regarding FreeBSD's Jail virtualizatioin:

Well, this is a grown sort of software virtualization which first appeared 
several years ago (probably long before the current Linux virtualization 
technologies popped up). Also, there's steady work to improve it's 

However it's a pretty solid thing and worth supporting it as there are huge 
amounts of people and companies (such as Yahoo) outside there using it to 
propperly isolate different services running on a host. And for countless 
further purposes. May be you also just want to honor the good and old and 
true and "real" Unix: BSD ;-)

I agree that your option #4 was good on the short run. As I don't know 
enough about other virtualization technologies outside the BSD world I just 
could guess that your option #1 or #2 might be best on the longer run. Also, 
I don't know for what purpose the Erlang community built in the check. There 
might have been good reasons to do so of course.

Ok, I'll try to apply your patch now but also will contact the Port 
maintainer from the FreeBSD universe to keep him posted. 
Will CC you on this.

Many thanks again !
kind regards

> diff --git a/erts/epmd/src/epmd_srv.c b/erts/epmd/src/epmd_srv.c
> index ef471a4..e2cc2dc 100644
> --- a/erts/epmd/src/epmd_srv.c
> +++ b/erts/epmd/src/epmd_srv.c
> @@ -766,6 +766,9 @@ static int conn_open(EpmdVars *g,int fd)
>        dbg_tty_printf(g,2,(s->local_peer) ? "Local peer connected" :
>  		     "Non-local peer connected");
> +      /* XXX allow local messages from all clients */
> +      s->local_peer = EPMD_TRUE;
> +
>        s->want = 0;		/* Currently unknown */
>        s->got  = 0;
>        s->mod_time = current_time(g); /* Note activity */

More information about the erlang-questions mailing list