ImageProcessing-ElectronicPublications / scantailor-experimental

Scan Tailor Experimental is an interactive post-processing tool for scanned pages.
https://github.com/Tulon/scantailor/tree/experimental
GNU General Public License v3.0
39 stars 1 forks source link

setMetricsOptions VS crash #46

Closed zvezdochiot closed 2 weeks ago

zvezdochiot commented 3 weeks ago

Hi @plzombie , @noobie-iv .

Ситуёвина следующая: после добавления: https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/blob/611b4c4384872a61586cc31ec9aa181c82de4cab/src/stages/output/Task.cpp#L343-L348 для обновления метрик по завершению process в OutputGenerator иногда наблюдаются падения.

Как это происходит?

На первой странице назначаю все значения фильтров, порогов и т.д. Применяю их ко всем страницам. Запускаю поточную обработку. Обработка проходит по всем страницам и возвращает на первую. Прикасаюсь к GUI мышью -> падение (не всегда, скорее иногда).

Что за нах?

На oomkiller не похоже (ИМХО). В момент прикосновения память не пользуется. Больше похоже на то, что какой то объект не инициализирован и при обращении к нему -> бац, "приходите в следующий раз".

PS: В самом OutputGenerator metrics - это публичный структура (объект), без использования функций присвоения. Почему? Ну не хотелось мне возиться с функциями присвоения и переносить metrics в private. Сделал public для прямого доступа.

Коммиты - участники:

noobie-iv commented 3 weeks ago

Под виндами уронить не удается ни релиз, ни дебаг. Зато под виндами не работает выбор дополнительного фильтра из списка - на него нет абсолютно никакой реакции. Список неактивен с самого первого релиза - 0.2024.05.18 (filters).

zvezdochiot commented 3 weeks ago

@noobie-iv say:

не работает выбор дополнительного фильтра

Всё правильно. Выбор ничего не меняет, ибо это всего лишь ГУИ списка. Фильтров немало и применяются они независимо от того, видишь ты их или нет. Ты не просто выбери, а коеффициент измени. Тестить влияние изменения коэффициентов фильтров желательно в цветном моде, а уже после смотреть их влияние на ЧБ. Радиусы при этом менять с дефолтных особого смысла нет, потому как специально и нарочно подобраны значения. Обратить внимание на Balance (0.25), Despeckle (0.25), Sigma (0.50), Blur (0.50), unPaper (~ 0.05 - 0.25).

PS: Может реально oomkiller? Но почему падение только после прикосновения? Иллюзия?

noobie-iv commented 3 weeks ago

На виртуалке тоже не ловится: g++ (Debian 12.2.0-14) 12.2.0

zvezdochiot commented 3 weeks ago

@noobie-iv , понял тебя. Значит ложная "паника"? Буду разбираться. Закрою позже.

noobie-iv commented 3 weeks ago

Может, конкретная версия линукса/компилятора или конкретный проект?

zvezdochiot commented 3 weeks ago
$ g++ --version
g++ (Debian 12.2.0-14) 12.2.0

Скорее всё-таки oom-killer.

zvezdochiot commented 2 weeks ago

После многократного тестирования склоняюсь к тому, что это oom-killer срабатывал.