Okno "Crash QGIS" podczas wywalenia programu

Witam.

Mam pytanie.

Czy można w jakiś opcjach włączyć okno “Crasha QGIS-a”, gdzie można dokładnie podejrzeć jaka była przyczyna wywalenia programu? Coś takiego poniżej:

Zdarza mi się, że jeśli chce wyeksportować atlas wydruków map to za każdym razem mi wywala QGIS bez żadnego komunikatu przy dużych zbiorach danych (wcześniej nie było tego problemu).

Pozdrawiam.

Z moich doświadczeń wynika, że takie zamykanie programu bez żadnego komunikatu wynika najczęściej z braku pamięci. Zwłaszcza, przy dużych zbiorach danych. Indeksy przestrzenne na danych mogą pomóc, ale jeśli pamięci dalej będzie za mało, to może nie obejść się bez dołożenia RAM-u.

Jak miałem 32GB RAM to też mi się to zdarzało, teraz na Linuksie z 128GB QGIS jest praktycznie niewykrzaczalny :slightly_smiling_face:

Zakładam (bo nie wiem “na pewno”), że włączyć się nie da, bo to okno pewnie wyskakuje jako obsłużony błąd/wyjątek w kodzie. A jak jest nieobsłużony, to wywala w ciszy…

Co bym zrobił (część rzeczy to truizmy, wiem, ale może komuś pomoże w innych przypadkach taka ścieżka zdrowia):

  1. Odinstalowałbym wszystkie wtyczki
  2. Zrobił nowy/świeży profil
  3. Tam odpalił to, co wywala obserwując ilość wolnego RAMu podczas pracy w menadżerze zadań (trop Tomka może być dobry, choć program nie powinien się co do zasady wywalać z racji braku ramu, tylko korzystać z pliku wymiany SWAP systemowego)
  4. Jeśli RAMu zjada dużo to obniżyć DPI - jak to pomoże, to mamy bingo, jak nie to szukamy dalej
  5. Może przy pomocy tego Class: QgsLogger uda Ci się znaleźć winowajcę. Nigdy z tego nie korzystałem, ale wygląda na to że da się skonfigurować logowanie do pliku QGIS_LOG_FILE i gadatliwość loggera przez QGIS_DEBUG
  6. Pod Windows można poczytać co się dzieje w eventvwr.msc
  7. Jak masz dostęp do jakiegoś Linuxa, to odpaliłbym QGIS z linii komend, wtedy tam widać komunikaty od programu, a jak się wywali to terminal zostanie otwarty i może tam coś będzie napisane co da trop.

Jak najdziesz co to było, to podziel się tu tym koniecznie :slightly_smiling_face:

I to jeszcze mam:

Python Stack Trace
Windows fatal exception: access violation

Current thread 0x000050c0 (most recent call first):
  


Stack Trace


QRasterPaintEngine::init :
QRasterPaintEngine::drawImage :
QPainter::drawImage :
QgsMapRendererJob::composeSecondPass :
QgsMapRendererCustomPainterJob::doRender :
QgsMapRendererCustomPainterJob::startPrivate :
QgsMapRendererCustomPainterJob::renderSynchronously :
QgsLayoutItemMap::drawMap :
QgsLayoutItemMap::paint :
QGraphicsScene::dragMoveEvent :
QGraphicsScene::drawItems :
QGraphicsScene::drawItems :
QGraphicsScene::render :
QgsLayoutExporter::renderRegion :
QgsLayoutExporter::renderRegionToImage :
QgsLayoutExporter::renderPageToImage :
QgsLayoutExporter::printPrivate :
QgsLayoutExporter::exportToPdf :
QgsLayoutExporter::exportToPdfs :
QgsGeoreferencerMainWindow::dragEnterEvent :
QObject::qt_static_metacall :
QAction::activate :
QMenu::actionGeometry :
QMenu::actionGeometry :
QMenu::mouseReleaseEvent :
QWidget::event :
QMenu::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QApplicationPrivate::sendMouseEvent :
QSizePolicy::QSizePolicy :
QSizePolicy::QSizePolicy :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QGuiApplicationPrivate::processMouseEvent :
QWindowSystemInterface::sendWindowSystemEvents :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QMenu::exec :
QToolButton::paintEvent :
QToolButton::showMenu :
QToolButton::mousePressEvent :
QWidget::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QApplicationPrivate::sendMouseEvent :
QSizePolicy::QSizePolicy :
QSizePolicy::QSizePolicy :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QGuiApplicationPrivate::processMouseEvent :
QWindowSystemInterface::sendWindowSystemEvents :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QCoreApplication::exec :
main :
BaseThreadInitThunk :
RtlUserThreadStart :




QGIS Info
QGIS Version: 3.40.4-Bratislava
QGIS code revision: 4dd7d7e969
Compiled against Qt: 5.15.13
Running against Qt: 5.15.13
Compiled against GDAL: 3.10.2
Running against GDAL: 3.10.2



System Info
CPU Type: x86_64
Kernel Type: winnt
Kernel Version: 10.0.26200

Coś takiego mam w Poglądzie Zdarzeń:

Nazwa aplikacji powodującej błąd: qgis-ltr-bin.exe, wersja: 0.0.0.0, sygnatura czasowa: 0x67b99b78
Nazwa modułu powodującego błąd: Qt5Gui.dll, wersja: 5.15.13.0, sygnatura czasowa: 0x67866eea
Kod wyjątku: 0xc0000005
Przesunięcie błędu: 0x0000000000095b04
Identyfikator procesu błędu: 0x5044
Czas uruchomienia aplikacji powodującej błąd: 0x1DCAAE577858A9A
Faulting ścieżka aplikacji: C:\Program Files\QGIS 3.40.4\bin\qgis-ltr-bin.exe
Faulting ścieżka modułu: C:\PROGRA~1\QGIS34~1.4\apps\qt5\bin\Qt5Gui.dll
Report Id: 84919297-4e62-4a16-afb6-ee9587ed019f
Faulting pełna nazwa pakietu:
Faulting identyfikator aplikacji względnej dla pakietu:

Czy ktoś wie co jest przyczyną? Ponoć to wina sterownika graficznego.

No ja nic z tego nie dam rady wyczytać :frowning:
“2 lata temu” zrobiłbym tradycyjne rzeczy, czyli sprawdzenie na innym systemie, oczyszczenie, instalacje do ostatniej wersji LTR, wyłączył OpenCL, zaktualizował sterowniki GPU do najnowszych WHQL, obniżył jakość/stopień skomplikowania/objętości outputu i badał metodą prób i błędów.

Dzisiaj mogę jeszcze podrzucić pomysły z płatnego ChatGPT 5.2 w opcji rozszerzone myślenie. Czy pomogą, nie wiem - jak to z AI “może się uda, może się nie uda” :wink:

###########################################################
OUTPUT z ChatGPT:
Punkt 1 - Sterownik GPU / backend grafiki Qt (OpenGL vs ANGLE/DirectX) sypie się w trakcie rasteryzacji
Podpunkt 1a - U Ciebie crash jest w Qt5Gui.dll i dokładnie w ścieżce QRasterPaintEngine / QPainter::drawImage, czyli w „silniku rysowania” Qt, który na Windows korzysta z różnych backendów grafiki i potrafi wpadać w AV przy błędach sterownika/akceleracji. (wiki.qt.io)
Podpunkt 1b - Zrób trzy szybkie testy:

  • zaktualizuj sterownik GPU (Intel/NVIDIA/AMD) do najnowszego WHQL,
  • w Ustawienia Windows → System → Ekran → Grafika przypisz QGIS do innego GPU (np. wymuś iGPU albo dGPU),
  • wyłącz „nakładki” (GeForce Experience/Discord/OBS overlay), bo czasem wchodzą w drogę renderowi Qt.

Punkt 2 - Wymuszenie trybu softwarowego (obejście problemów sterownika)
Podpunkt 2a - Qt pozwala wymusić backend przez zmienną QT_OPENGL (m.in. software, desktop, angle). To często „leczy” crashe w Qt5Gui przy renderowaniu/eksportach, bo omija problematyczny driver/back-end. (docs.huihoo.com)
Podpunkt 2b - Najprostszy test (Windows, uruchom QGIS przez .bat):

@echo off
set QT_OPENGL=software
start "" "C:\Program Files\QGIS 3.40.4\bin\qgis-ltr-bin.exe"

Jeśli software pomoże, ale będzie wolno: spróbuj zamiast tego angle, a potem desktop (po jednej zmianie na raz). (docs.huihoo.com)


Punkt 3 - OpenCL w QGIS (akceleracja) robi niestabilność / konflikty z GPU
Podpunkt 3a - QGIS ma opcję Enable OpenCL acceleration w Settings → Options → Acceleration i w praktyce potrafi to powodować dziwne zachowania zależne od driverów/GPU (szczególnie na Windows). (groups.google.com)
Podpunkt 3b - Na próbę:

  • wyłącz OpenCL w Options → Acceleration,
  • zrestartuj QGIS i sprawdź eksport atlasu,
  • jeśli pomoże: zostaw wyłączone albo zaktualizuj runtime/sterowniki GPU i dopiero wtedy wróć do testów.

Punkt 4 - „Niestabilny” build Windows / nowa linia buildów 26200 (potencjalne regresje grafiki)
Podpunkt 4a - Masz Kernel 10.0.26200 – to linia Windows 11 (24H2/25H2) i bywa, że przy świeżych buildach/aktualizacjach zmiany w stosie grafiki + sterowniki dają crashe w aplikacjach Qt (a u Ciebie crash jest właśnie w Qt5Gui). (support.microsoft.com)
Podpunkt 4b - Najbardziej pragmatycznie:

  • doinstaluj wszystkie aktualizacje zbiorcze Windows (i firmware/chipset),
  • jeśli jesteś w Insider/Dev/Canary: przejdź na stabilny kanał (release),
  • zrób test na innym komputerze (jeśli tam działa — winny jest OS/driver na tej maszynie).

Punkt 5 - Eksport atlasu robi gigantyczne bitmapy (DPI × format × złożoność) → pamięć/overflow → access violation
Podpunkt 5a - Dokładnie taki crash przy dużych wydrukach jest znany: przy wysokim DPI i złożonym eksporcie QGIS potrafi się wywalić, a pomaga obniżenie DPI i zmiana opcji wektor/raster. (GitHub)
Podpunkt 5b - Najczęściej skuteczne ustawienia:

  • zejdź do 200–300 DPI na próbę,
  • w eksporcie PDF odznacz “Always export as vectors” (lub analogiczną opcję),
  • eksportuj atlas partiami (np. po 50 stron), żeby nie kumulować pamięci.

Punkt 6 - Konkretna warstwa/element układu wysadza render (SVG, czcionka, legenda filtrowana, efekty)
Podpunkt 6a - Stos pokazuje render w QGraphicsScene (układ wydruku). Jeden „toksyczny” element (np. wadliwy SVG, problematyczna czcionka, legenda filtrowana po atlasie) potrafi ubić Qt bez komunikatu. Podobne crashe są raportowane przy eksporcie układów. (GitHub)
Podpunkt 6b - Szybka izolacja bez zgadywania:

  • ukryj po kolei: legendę → etykiety → elementy SVG → warstwy z efektami,
  • zmień czcionki na coś prostego (Arial/Calibri) i sprawdź,
  • jeśli winne SVG: zamień na PNG lub inne SVG.

Punkt 7 - Bug/regresja w Twojej wersji QGIS (3.40.4) naprawiona w nowszych poprawkach
Podpunkt 7a - Oficjalnie LTR ma dziś 3.40.15, a “current” to 3.44.7 — jesteś wiele poprawek do tyłu, a crashe eksportu/układu przewijają się w zgłoszeniach. (QGIS)
Podpunkt 7b - Najbezpieczniejsza ścieżka:

  • zaktualizuj do QGIS 3.40.15 LTR (to nadal Bratislava),
  • jeśli dalej crashuje: test na 3.44.7,
  • jeżeli problem zostaje, wtedy ma sens zgłoszenie buga (z minimalnym projektem, 1–2 strony atlasu, wskazaniem ustawień eksportu).

Jeśli miałbym wskazać „najbardziej w punkt” pod Twoje pytanie o grafikę/OpenCL/software/Windows: Punkt 2 + Punkt 3 + Punkt 4 to najszybsze testy, które często od razu rozstrzygają, czy winny jest driver/backend systemowy.