Segfault when trying to edit cylinder information

Lubomir I. Ivanov neolit123 at
Tue Jun 13 14:43:14 PDT 2017

On 14 June 2017 at 00:30, Pedro Neves <nevesdiver at> wrote:
> Lubomir:
> On 13-06-2017 21:16, Lubomir I. Ivanov wrote:
>> random questions:
>> - are you running from an app-image or is this your build?
> It happens both with my build and with the appimage

it's good that you are building yourself.

please, open the file qt-models/tankinfomodel.cpp and find the method:
QVariant TankInfoModel::data(const QModelIndex &index, int role) const

inside the method find this line:
struct tank_info_t *info = &tank_info[index.row()];

replace it with the following:
const int test_row = index.row();
fprintf(stderr, "TEST_ROW: %d\n", test_row); // include <stdio.h> if needed
struct tank_info_t *info = &tank_info[test_row];

rebuild subsurface and reproduce the crash, while looking for the
TEST_ROW output in the terminal.

something else you can do add the same fprintf() snippet for the
index.row() in this method:
bool TankInfoModel::setData(const QModelIndex &index, const QVariant
&value, int role)

if the row values are negative or larger than 99 (?) something went wrong.

>> - which OS / subsurface version?
> Arch Linux / Latest from master or with 4.6.4 appimage
>> - does it happen if you plan a dive and insert a new cylinder?
> Yes.

even if you start subsurface with a blank logbook?

>> - can you send a file where it happens consistently + plus exact steps
>> to reproduce it?
> I've made a few more tests with other logbooks and It seems that it happens
> only with my log... There must me something wrong with it. However, I'll
> have to place it on a Dropbox as it's 42 Mb... Does anyone have any ideas
> where I should start looking?

that's a big logfile. the size itself might contribute to the problem
- e.g. memory corruption that we need to prevent.


More information about the subsurface mailing list