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
>
>

Reply via email to