I will give you more info in a while. I did some debugging, "peers->sync_task = NULL;" seems to be the culprit here, First, peers->sync_task is being set to NULL and then being deleted & freed which I think would obviously fail. I moved "peers->sync_task = NULL;" to after task_free call in the code below and it works as expected now. Let me know if this makes sense.
==== peers.c ==== static struct task *process_peer_sync(struct task * task) { struct peers *peers = (struct peers *)task->context; struct peer *ps; struct shared_table *st; task->expire = TICK_ETERNITY; if (!peers->peers_fe) { /* this one was never started, kill it */ signal_unregister_handler(peers->sighandler); peers->sync_task = NULL; task_delete(peers->sync_task); task_free(peers->sync_task); return NULL; } ==== peers.c ==== - Pradeep Jindal On Mon, Sep 21, 2015 at 6:15 PM, Willy Tarreau <w...@1wt.eu> wrote: > On Mon, Sep 21, 2015 at 11:50:27AM +0530, Pradeep Jindal wrote: > > Hi, > > > > Please find the attached core dumps & config file. I have tried dev4 too, > > same result. > > Please could you give a bit more context : > - does it crash during startup or while running ? > - in the latter case, how long does it run before crashing ? > - does it only crash when processing traffic or suddenly when > doing nothing ? > - is the other side accessible when you see the crash ? > - have you tried with a single process (just in case) ? > > Also could you please provide your haproxy binary with which you produced > the cores ? > > Thanks, > Willy > >