> On Aug 14, 2020, at 12:20 PM, Salvador Cuñat <[email protected]> wrote:
>> That's frustrating and shouldn't happen. But the meta data on the cloud 
>> server
>> show me that Manfred successfully stored data in the cloud from a Windows
>> machine earlier today - so I'm not sure that statement is correct, either.
>> 
> I've finally been able to sync Manfred's cloud log in my laptop and
> reproduce the segfault.

> This is the backtrace I'm getting:
> 
> Thread 1 "subsurface" received signal SIGSEGV, Segmentation fault.
> event_renumber (mapping=0x5555592a3400, ev=0x55555906a9b0) at
> /home/boret/src/subsurface/core/dive.c:2139
> 2139        ev->gas.index = mapping[ev->gas.index];
> (gdb) bt
> 
> #0  event_renumber (mapping=0x5555592a3400, ev=0x55555906a9b0) at
> /home/boret/src/subsurface/core/dive.c:2139
> #1  event_renumber (mapping=0x5555592a3400, ev=0x55555906a9b0) at
> /home/boret/src/subsurface/core/dive.c:2133

So we are merging dives and are renumbering cylinders, and then things go 
kaboom here:

static void event_renumber(struct event *ev, const int mapping[])
{
        if (!event_is_gaschange(ev))
                return;
        if (ev->gas.index < 0)
                return;
        ev->gas.index = mapping[ev->gas.index];
}

Line 2139 is that last assignment.
Since you are compiling from source, Salvador, could you insert an fprintf 
there that prints out the value of and ev->gas.index ?
My guess is that that's a bogus value and we are accessing memory we should 
access here.

Linus, any other guesses?

/D
_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to