И это всё МОЁ

Тут хитрый контекст: я почти не контролирую сборку кода. Программа пишется для Android на Qt.
Более того: ошибка не воспроизводится на моём оборудовании.
Плей Маркет сообщает мне вот что:

backtrace:

#00 pc 000000000001d75e /system/lib/libc.so (abort+58)

#01 pc 000000000001d9c7 /system/lib/libc.so (__assert2+22)

#02 pc 0000000000016149 /data/app/org.asciigames.fillfield--qxeEjn8vGLqekL2bnvZTg==/lib/arm/libFillField.so (Game::makeMove(int, int)+256)

#03 pc 0000000000017d9f /data/app/org.asciigames.fillfield--qxeEjn8vGLqekL2bnvZTg==/lib/arm/libFillField.so (ViewGame::tapProcessing(int, int, int)+346)

#04 pc 0000000000126ad7 /data/app/org.asciigames.fillfield--qxeEjn8vGLqekL2bnvZTg==/lib/arm/libQt5Widgets.so (QWidget::event(QEvent*)+322)


А вот кусочки важного кода:
1) tapProcessing(int, int, int)
if (x_field < 0 || x_field > 7)	return;
if (y_field < 0 || y_field > 7) return;

_game->makeMove(x_field, y_field);


2) makeMove(int, int)
assert(x >= 0 && x <= 7 && y >= 0 && y <= 7);


Да, assert стоит первой же строкой и я ума не могу приложить при каких обстоятельствах он даже теоретически может сработать.

Как вообще пользователям попал код с ассертами? Знамо как: сначала я провтыкал их отключить, а теперь вот оказалось что не зря я его впихнул.

«Методом тыка» я ничего проверить не могу. У меня проблема не воспроизводится, с пользователями я пообщаться тоже не могу. Так что решать нужно лишь созерцая код.








 , ,