OSTC3 import failure

Jef Driesen jef at libdivecomputer.org
Fri Oct 10 00:11:37 PDT 2014


On 2014-10-10 03:38, Dirk Hohndel wrote:
> On Thu, Oct 09, 2014 at 02:24:41PM -1000, Gaetan Bisson wrote:
>> If I also try to enable a dumpfile, then a popup says "Dive data 
>> import
>> error" and nothing is imported and no dumpfile is created.
> 
> The OSTC3 doesn't support memory dumps, IIRC.

The ostc3 protocol doesn't support memory dumps. As an alternative, you 
can run the pre-built universal app from the libdivecomputer. This has 
been patched to dump the raw dives to files named "dive_xxx.bin" if you 
run it with the -d option.

But I already extracted the raw dive from the logfile and attached it.

>> INFO: Read: size=538, 
>>
data=00000000001C00003A000900000000000000000035000037000900000000000000000016000020001F0D0100F043000000000000000000000000000000000000000000000000300019000019000900000000000000000017000010000900000000000000000009000009000D0D0100F00000000000000000000B00000A00090000000000000000000700000A00090000000000000000000A00000B001F0D0100F04500000000000000000000000000000000000000000000000030000900000B00090000000000000000000900000900090000000000000000000B00000B000D0D0100F00000000000000000000A00000B00090000000000000000000A00000A00090000000000000000000A00000A001F0D0100F04400000000000000000000000000000000000000000000000030000B00000A00090000000000000000000900000900090000000000000000000900000A000D0D0100F00000000000000000000C00000B00090000000000000000000700000B000900000000000000000009000008001F0D0100F04300000000000000000000000000000000000000000000000030000900000900090000000000000000000A00000900090000000000000000000B000009000D0D0100F00000000000000000000900000900090000000000000000000B00000C00090000000000000
000000B000009001F0D0100F0420000000000000000000000000000000000000000000000003000FDFD
>> INFO: Read: size=1, data=4D
>> ERROR: Buffer overflow detected! [in hw_ostc_parser.c:598 
>> (hw_ostc_parser_samples_foreach)]
> 
> Now I may be overly suspicious, but I think this pretty much points us 
> at
> the culprit...

Indeed.

> This is the code that triggers this (at least in my version of
> libdivecomputer which is pretty close to git master plus a few of my 
> own
> patches that haven't made it into libdivecomputer, yet, but those are
> unrelated to the OSTC)
> 
>                // Extended sample info.
>                 for (unsigned int i = 0; i < nconfig; ++i) {
>                         if (info[i].divisor && (nsamples %
> info[i].divisor) == 0) {
>                                 if (length < info[i].size) {
>                                         ERROR (abstract->context,
> "Buffer overflow detected!");
>                                         return DC_STATUS_DATAFORMAT;
>                                 }
> 
> So it looks like the last read (which returned 1 byte) was expected to
> deliver a lot more data. I haven't gone through the data stream to 
> analyze
> what exactly the OSTC3 was sending that confused libdivecomputer, but 
> it's
> pretty clear this is where the problem is.

It seems the data was downloaded correctly. I don't think it's 
truncated, because the end marker 0xFDFD is there. That 1 byte read 
which returns 0x4D is the ready byte. That's perfectly normal.

What happens during the parsing is that you have extended sample info 3 
set as follows:

info[3].type = 3
info[3].divisor = 2
info[3].size = 9

This corresponds to ppO2 sensor data. At the point where the parsing 
fails (10th sample at offset 0x160), the remaining length is only 8 
bytes. So that's not enough for the 9 byte large ppO2 sensor data. Now 
we only need to figure out the root of the problem :-)

Jef
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ostc3.bin
Type: application/octet-stream
Size: 31258 bytes
Desc: not available
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20141010/d931ffd3/attachment-0001.bin>


More information about the subsurface mailing list