f43f58e4 by 柴进

:white_check_mark: 添加 macOS 闪退诊断日志

- faulthandler: segfault 时自动输出 Python 调用栈到 crash_log.txt
- 全局 sys.excepthook 捕获未处理异常
- Qt 消息拦截器捕获 QtWarning/Critical/Fatal
- 启动阶段打桩 [BOOT Phase 0~8]
- 主窗口初始化打桩 [INIT 1/6~6/6]
- QImage.save 崩溃高发点前后日志
- 系统环境信息记录(OS/Python/Qt/Pillow 版本)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e6410bd2
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
Process: ZB100ImageGenerator [29255]
Path: /Applications/ZB100ImageGenerator.app/Contents/MacOS/ZB100ImageGenerator
Identifier: ZB100ImageGenerator
Version: 0.0.0 (???)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: ZB100ImageGenerator [23215]
User ID: 501
Date/Time: 2026-03-02 10:35:51.4387 +0800
Launch Time: 2026-03-02 10:35:28.8650 +0800
Hardware Model: MacBookPro18,3
OS Version: macOS 26.3 (25D125)
Release Type: User
Crash Reporter Key: 8D4A823C-EBFA-8F26-C4A4-87106AC0521E
Incident Identifier: F120429D-322E-44C6-911C-28B5D605F922
Sleep/Wake UUID: 01A35EA3-D7F7-4A92-8298-02E32F5B23E5
Time Awake Since Boot: 98000 seconds
Time Since Wake: 3534 seconds
System Integrity Protection: enabled
Triggered by Thread: 0, Dispatch Queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000010f170da4
Exception Codes: 0x0000000000000001, 0x000000010f170da4
Termination Reason: Namespace SIGNAL, Code 11, Segmentation fault: 11
Terminating Process: exc handler [29255]
VM Region Info: 0x10f170da4 is not in any region. Bytes after previous region: 3493 Bytes before following region: 29276
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
__LINKEDIT 10f160000-10f170000 [ 64K] r--/rwx SM=COW /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libjpeg.62.4.0.dylib
---> GAP OF 0x8000 BYTES
CoreAnimation 10f178000-10f194000 [ 112K] rw-/rwx SM=PRV
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_platform.dylib 0x18fdcd410 _platform_memmove + 144
1 QtGui 0x11089f7e4 0x11028c000 + 6371300
2 QtGui 0x11069c02c 0x11028c000 + 4259884
3 QtGui 0x11069d0b8 0x11028c000 + 4264120
4 QtGui 0x1102e333c QImageWriter::write(QImage const&) + 784
5 QtGui 0x1102bf86c QImage::save(QString const&, char const*, int) const + 184
6 QtGui.abi3.so 0x110d1e418 Sbk_QImageFunc_save(_object*, _object*, _object*) + 1144
7 Python 0x10a29cda8 cfunction_call + 6 Python 0x10a252624 _PyObject_MakeTpCall + 280
9 Python 0x10a32d478 _PyEval_EvalFrameDefault + 24424
10 Python 0x10a33440c _PyEval_Vector + 116
11 Python 0x10a255c38 method_vectorcall + 380
12 libpyside6.abi3.6.10.dylib 0x10abec1a4 callPythonMetaMethodHelper(QList<QByteArray> const&, char const*, void**, _object*) + 368
13 libpyside6.abi3.6.10.dylib 0x10abeb94c PySide::SignalManager::callPythonMetaMethod(QMetaMethod, void**, _object*) + 84
14 libpyside6.abi3.6.10.dylib 0x10abeb5d0 SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**) + 824
15 QtCore 0x10c6f333c 0x10c608000 + 963388
16 QtWidgets 0x10fdcb9b0 0x10fcbc000 + 1112496
17 QtWidgets 0x10fdcb7e8 0x10fcbc000 + 1112040
18 QtWidgets 0x10fdcc834 QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 232
19 QtWidgets.abi3.so 0x10f6257d8 QPushButtonWrapper::mouseReleaseEvent(QMouseEvent*) + 132
20 QtWidgets 0x10fd1acf0 QWidget::event(QEvent*) + 132
21 QtWidgets.abi3.so 0x10f6242bc QPushButtonWrapper::event(QEvent*) + 132
22 QtWidgets 0x10fccc014 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 332
23 QtWidgets 0x10fcce13c QApplication::notify(QObject*, QEvent*) + 4820
24 QtWidgets.abi3.so 0x10f83c964 QApplicationWrapper::notify(QObject*, QEvent*) + 180
25 QtCore 0x10c6a0fa4 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) + 176
26 QtWidgets 0x10fccc66c QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 892
27 QtWidgets 0x10fd310f0 0x10fcbc000 + 479472
28 QtWidgets 0x10fd3033c 0x10fcbc000 + 475964
29 QtWidgets 0x10fccc014 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 332
30 QtWidgets 0x10fccd06c QApplication::notify(QObject*, QEvent*) + 516
31 QtWidgets.abi3.so 0x10f83c964 QApplicationWrapper::notify(QObject*, QEvent*) + 180
32 QtCore 0x10c6a0fa4 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) + 176
33 QtGui 0x110319db4 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 1968
34 QtGui 0x11037c1cc QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 408
35 libqcocoa.dylib 0x112144498 0x11212c000 + 99480
36 CoreFoundation 0x18fe62a08 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
37 CoreFoundation 0x18fe6299c __CFRunLoopDoSource0 + 172
38 CoreFoundation 0x18fe62708 __CFRunLoopDoSources0 + 232
39 CoreFoundation 0x18fe61398 __CFRunLoopRun + 820
40 CoreFoundation 0x18ff1bf3c _CFRunLoopRunSpecificWithOptions + 532
41 HIToolbox 0x19c99d790 RunCurrentEventLoopInMode + 316
42 HIToolbox 0x19c9a09e0 ReceiveNextEventCommon + 272
43 HIToolbox 0x19cb2ab64 _BlockUntilNextEventMatchingListInMode + 48
44 AppKit 0x19477d014 _DPSBlockUntilNextEventMatchingListInMode + 236
45 AppKit 0x19427ae48 _DPSNextEvent + 588
46 AppKit 0x194d41e8c -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
47 AppKit 0x194d41b98 -[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:] + 72
48 AppKit 0x194273780 -[NSApplication run] + 368
49 libqcocoa.dylib 0x112141d1c 0x11212c000 + 89372
50 QtCore 0x10c6aa0f8 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 588
51 QtCore 0x10c6a0b70 QCoreApplication::exec() + 228
52 QtWidgets.abi3.so 0x10f870e6c Sbk_QApplicationFunc_exec(_object*) + 44
53 Python 0x10a29d7b8 cfunction_vectorcall_NOARGS + 88
54 Python 0x10a32cc04 _PyEval_EvalFrameDefault + 22260
55 Python 0x10a3268e4 PyEval_EvalCode + 168
56 ZB100ImageGenerator 0x1048cf210 0x1048cc000 + 12816
57 ZB100ImageGenerator 0x1048cfb00 0x1048cc000 + 15104
58 dyld 0x18f9f9d54 start + 7184
Thread 1:
Thread 2:
Thread 3:: com.apple.NSEventThread
0 libsystem_kernel.dylib 0x18fd80c34 mach_msg2_trap + 8
1 libsystem_kernel.dylib 0x18fd93028 mach_msg2_internal + 76
2 libsystem_kernel.dylib 0x18fd8998c mach_msg_overwrite + 484
3 libsystem_kernel.dylib 0x18fd80fb4 mach_msg + 24
4 CoreFoundation 0x18fe62bb0 __CFRunLoopServiceMachPort + 160
5 CoreFoundation 0x18fe61508 __CFRunLoopRun + 1188
6 CoreFoundation 0x18ff1bf3c _CFRunLoopRunSpecificWithOptions + 532
7 AppKit 0x19430aa34 _NSEventThread + 184
8 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
9 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 4:
Thread 5:: Thread (pooled)
0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
4 QtCore 0x10c79ba64 0x10c608000 + 1653348
5 QtCore 0x10c836dec 0x10c608000 + 2289132
6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 6:: Thread (pooled)
0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
4 QtCore 0x10c79ba64 0x10c608000 + 1653348
5 QtCore 0x10c836dec 0x10c608000 + 2289132
6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 7:: Thread (pooled)
0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
4 QtCore 0x10c79ba64 0x10c608000 + 1653348
5 QtCore 0x10c836dec 0x10c608000 + 2289132
6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 8:: Thread (pooled)
0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
4 QtCore 0x10c79ba64 0x10c608000 + 1653348
5 QtCore 0x10c836dec 0x10c608000 + 2289132
6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 9:: Thread (pooled)
0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
4 QtCore 0x10c79ba64 0x10c608000 + 1653348
5 QtCore 0x10c836dec 0x10c608000 + 2289132
6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x0000000ac98c9c00 x1: 0x000000010f170da4 x2: 0x0000000000000c48 x3: 0x0000000ac98c9c20
x4: 0xfffffff6458a71a4 x5: 0x0000000000000000 x6: 0xffffffffbfc007ff x7: 0xfffff0003ffff800
x8: 0x0000000000000001 x9: 0x0000000000000000 x10: 0x0000000000000002 x11: 0x0000000000000000
x12: 0x00000000000022a0 x13: 0x99bcde41dd481c77 x14: 0x0000000105811198 x15: 0x0000000ac98c8000
x16: 0x000000018fdcd380 x17: 0x00000000090022a0 x18: 0x0000000000000000 x19: 0x0000000ac5fa3300
x20: 0x0000000000000c48 x21: 0x0000000ac5fade00 x22: 0x000000010f170da4 x23: 0x0000000ac98c9c00
x24: 0x0000000ac58023a0 x25: 0x0000000000000c48 x26: 0x0000000000000008 x27: 0x0000000ac5fade00
x28: 0x000000016b52f948 fp: 0x000000016b52f3e0 lr: 0x000000011089f7e4
sp: 0x000000016b52f3a0 pc: 0x000000018fdcd410 cpsr: 0x80001000
far: 0x000000010f170da4 esr: 0x92000007 (Data Abort) byte read Translation fault
Binary Images:
0x1048cc000 - 0x1048d7fff ZB100ImageGenerator (0.0.0) <c52c7158-dde1-b7ee-a20c-2d7e279f8b2f> /Applications/ZB100ImageGenerator.app/Contents/MacOS/ZB100ImageGenerator
0x10a1f4000 - 0x10a49bfff org.python.python (3.11.14, (c) 2001-2023 Python Software Foundation.) <5dd0342d-9c71-3845-aa0d-526811a6f48e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/Python.framework/Versions/3.11/Python
0x10522c000 - 0x105233fff _struct.cpython-311-darwin.so (*) <28ac7ddf-cf6f-365d-92eb-3d943594095c> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_struct.cpython-311-darwin.so
0x105344000 - 0x10534bfff zlib.cpython-311-darwin.so (*) <7171b4cf-95bb-33a2-9ed1-0bb498c37fa2> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/zlib.cpython-311-darwin.so
0x105384000 - 0x105397fff _ctypes.cpython-311-darwin.so (*) <f6f745f4-fffa-344a-ad04-d11ca1277996> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_ctypes.cpython-311-darwin.so
0x10535c000 - 0x10535ffff _opcode.cpython-311-darwin.so (*) <bb3e6bcc-6286-3067-919b-60acb657cf2c> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_opcode.cpython-311-darwin.so
0x1053ac000 - 0x1053b3fff binascii.cpython-311-darwin.so (*) <eb397fda-feba-3c96-af79-24283a578fae> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/binascii.cpython-311-darwin.so
0x105370000 - 0x105373fff _bz2.cpython-311-darwin.so (*) <71f2bcdd-2777-3374-abd2-cf8397639bb9> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_bz2.cpython-311-darwin.so
0x1053c4000 - 0x1053cbfff _lzma.cpython-311-darwin.so (*) <fd1809c7-edb3-3105-9d02-b62e8b772261> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_lzma.cpython-311-darwin.so
0x109f40000 - 0x109f7ffff liblzma.5.dylib (*) <83186775-f820-338e-ae04-56e177aabd5e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/liblzma.5.dylib
0x1053dc000 - 0x1053dffff _typing.cpython-311-darwin.so (*) <99166977-a265-3101-aab7-971a24ad32c0> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_typing.cpython-311-darwin.so
0x105840000 - 0x105853fff _pickle.cpython-311-darwin.so (*) <56d3cc61-cb6a-3b02-bfaf-e8dd92b9bfea> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_pickle.cpython-311-darwin.so
0x10a094000 - 0x10a0a3fff _socket.cpython-311-darwin.so (*) <c8a6e9b9-f62f-351f-a5c3-62e20524b33b> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_socket.cpython-311-darwin.so
0x10540c000 - 0x105417fff math.cpython-311-darwin.so (*) <1839ded9-d923-3cdc-b70d-865ec4e851e2> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/math.cpython-311-darwin.so
0x1053f0000 - 0x1053f7fff select.cpython-311-darwin.so (*) <cd553e77-c615-34b7-8f1a-f6e35e87a169> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/select.cpython-311-darwin.so
0x10a1b8000 - 0x10a1bffff array.cpython-311-darwin.so (*) <a3f156ea-29be-3fc6-9864-30c5bf9dadf3> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/array.cpython-311-darwin.so
0x10a1d0000 - 0x10a1d3fff fcntl.cpython-311-darwin.so (*) <c56288da-1a63-363e-942b-3b620cebc1e2> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/fcntl.cpython-311-darwin.so
0x10a6ec000 - 0x10a6effff _posixsubprocess.cpython-311-darwin.so (*) <dff6ea3f-cc9d-3d12-9e2d-8258318fb4a2> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_posixsubprocess.cpython-311-darwin.so
0x10a700000 - 0x10a703fff _bisect.cpython-311-darwin.so (*) <0f541801-df42-3813-8dd1-ccaa2f444faf> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_bisect.cpython-311-darwin.so
0x10a714000 - 0x10a717fff _random.cpython-311-darwin.so (*) <0fd0a29e-7ebe-3007-b4f0-abd2b76e1cd1> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_random.cpython-311-darwin.so
0x10a728000 - 0x10a72bfff _sha512.cpython-311-darwin.so (*) <e19e5d89-2bc8-32ab-a48a-7562920fece6> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_sha512.cpython-311-darwin.so
0x10a83c000 - 0x10a83ffff _heapq.cpython-311-darwin.so (*) <b6e9e162-e0ac-324c-916b-cf5ffa6192af> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_heapq.cpython-311-darwin.so
0x10a850000 - 0x10a853fff _queue.cpython-311-darwin.so (*) <942664e3-4e11-3c04-9858-aba0554f3603> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_queue.cpython-311-darwin.so
0x10a864000 - 0x10a867fff grp.cpython-311-darwin.so (*) <9653800d-4d83-3638-9eec-a1528f9d3bc9> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/grp.cpython-311-darwin.so
0x10a994000 - 0x10a99bfff _hashlib.cpython-311-darwin.so (*) <4e81b9a5-a890-3a3e-ad15-75ef5613e601> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_hashlib.cpython-311-darwin.so
0x10ae58000 - 0x10b197fff libcrypto.3.dylib (*) <efba4c7a-a8ab-3429-8076-3bf9f22bd40b> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libcrypto.3.dylib
0x10a978000 - 0x10a97ffff _blake2.cpython-311-darwin.so (*) <c5f09022-41e2-376e-92ae-ff2a54233454> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_blake2.cpython-311-darwin.so
0x10aad4000 - 0x10aae3fff _datetime.cpython-311-darwin.so (*) <480f7c03-8f14-3917-a2f3-c390567b4fee> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_datetime.cpython-311-darwin.so
0x10ab30000 - 0x10ab4bfff _ssl.cpython-311-darwin.so (*) <97d98a89-d2ea-39a1-bfc4-721d12bf2fa4> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_ssl.cpython-311-darwin.so
0x10ac48000 - 0x10acdbfff libssl.3.dylib (*) <810d99f1-2504-3db7-9357-4bce9d47fc76> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libssl.3.dylib
0x10aab0000 - 0x10aab3fff _scproxy.cpython-311-darwin.so (*) <511482db-8e3f-3fef-b74d-a908b478dfbb> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_scproxy.cpython-311-darwin.so
0x10aaf8000 - 0x10aafffff _csv.cpython-311-darwin.so (*) <7af5e8e4-c80d-3d26-aa09-2b5ce672ed20> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_csv.cpython-311-darwin.so
0x10ab10000 - 0x10ab13fff Shiboken.abi3.so (*) <34590199-3ce2-32b1-aa23-b4a50138a445> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/shiboken6/Shiboken.abi3.so
0x10b400000 - 0x10b44ffff libshiboken6.abi3.6.10.dylib (*) <f0b78160-24ab-3c2d-bccc-4ef944f40d30> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/shiboken6/libshiboken6.abi3.6.10.dylib
0x10baf4000 - 0x10be47fff QtCore.abi3.so (*) <62750a98-bc70-38bc-96d4-b518d7fefded> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtCore.abi3.so
0x10abd8000 - 0x10ac17fff libpyside6.abi3.6.10.dylib (*) <1da89093-9eca-3280-a410-df22a1865bbd> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/libpyside6.abi3.6.10.dylib
0x10c608000 - 0x10cac7fff org.qt-project.QtCore (6.10) <4a7a0348-b410-3e23-8373-53f6876eb7f4> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/lib/QtCore.framework/Versions/A/QtCore
0x10b5ec000 - 0x10b60bfff com.apple.security.csparser (3.0) <862365a2-2945-3e86-a947-83bf39a899bf> /System/Library/Frameworks/Security.framework/Versions/A/PlugIns/csparser.bundle/Contents/MacOS/csparser
0x10f470000 - 0x10f98bfff QtWidgets.abi3.so (*) <188a1c2d-f44f-3e57-bd21-a37a7a840d28> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtWidgets.abi3.so
0x10fcbc000 - 0x110127fff org.qt-project.QtWidgets (6.10) <029543bf-5fc1-3a0c-ade7-edba0cf3d8b1> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/lib/QtWidgets.framework/Versions/A/QtWidgets
0x11028c000 - 0x11094ffff org.qt-project.QtGui (6.10) <3fa37de7-ceac-3c91-9317-791e19111d2a> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/lib/QtGui.framework/Versions/A/QtGui
0x10b7d4000 - 0x10b85bfff org.qt-project.QtDBus (6.10) <46e5cebb-3051-35c6-aa1e-6f530f243273> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/lib/QtDBus.framework/Versions/A/QtDBus
0x110a9c000 - 0x110e8bfff QtGui.abi3.so (*) <19d1f0df-5853-3f4e-92f0-cf3d8ba3aeb4> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtGui.abi3.so
0x10abc0000 - 0x10abc7fff _json.cpython-311-darwin.so (*) <71692750-fd03-30ef-b120-5ba354c0467d> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_json.cpython-311-darwin.so
0x10ec3c000 - 0x10effbfff _pydantic_core.cpython-311-darwin.so (*) <995672f1-c523-382f-a9e3-688535cb85e7> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/pydantic_core/_pydantic_core.cpython-311-darwin.so
0x10b580000 - 0x10b59bfff _decimal.cpython-311-darwin.so (*) <4d7d232c-a1bd-3d68-a882-593c5371f6e3> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_decimal.cpython-311-darwin.so
0x10b5b0000 - 0x10b5cbfff libmpdec.4.dylib (*) <52d16117-fcf0-3704-984f-ce4454923a78> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libmpdec.4.dylib
0x10ae28000 - 0x10ae2bfff _contextvars.cpython-311-darwin.so (*) <9a4582a0-6a4d-353c-85ba-cfdb08a578cd> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_contextvars.cpython-311-darwin.so
0x10b748000 - 0x10b753fff _asyncio.cpython-311-darwin.so (*) <e95770b0-0926-37e6-88fd-b1e9d684a2ca> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_asyncio.cpython-311-darwin.so
0x10ae3c000 - 0x10ae43fff _zoneinfo.cpython-311-darwin.so (*) <0ca64709-6510-3c2d-85b3-f3d22698e98f> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_zoneinfo.cpython-311-darwin.so
0x10b728000 - 0x10b72bfff _uuid.cpython-311-darwin.so (*) <af437268-384b-3cf1-9821-66860c88323c> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_uuid.cpython-311-darwin.so
0x10f04c000 - 0x10f0a7fff _imaging.cpython-311-darwin.so (*) <5b35d4aa-1795-338c-8d64-895c72f8f320> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/_imaging.cpython-311-darwin.so
0x10f198000 - 0x10f23ffff libtiff.6.dylib (*) <5d94e595-edbf-36da-9296-dc1777ec485e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libtiff.6.dylib
0x10f0d4000 - 0x10f157fff libjpeg.62.4.0.dylib (*) <8ec82fd5-1c87-36f5-bd18-8454465fb860> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libjpeg.62.4.0.dylib
0x10f30c000 - 0x10f3a3fff libopenjp2.2.5.3.dylib (*) <6994e1d8-b3e5-38d6-aef0-721586b2d5ce> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libopenjp2.2.5.3.dylib
0x10b794000 - 0x10b7affff libz.1.3.1.zlib-ng.dylib (*) <9d7eca9a-6145-3222-8894-4967624efcc9> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libz.1.3.1.zlib-ng.dylib
0x10c56c000 - 0x10c593fff libxcb.1.1.0.dylib (*) <6fa02d7f-daaa-3c79-8b0d-c5319e003f3d> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libxcb.1.1.0.dylib
0x10b768000 - 0x10b76bfff libXau.6.dylib (*) <32a172ad-f11b-381b-9270-3f9a195cbe7f> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libXau.6.dylib
0x111218000 - 0x111327fff unicodedata.cpython-311-darwin.so (*) <df966a2c-3537-3108-900f-b421898e2971> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/unicodedata.cpython-311-darwin.so
0x10b77c000 - 0x10b77ffff speedups.cpython-311-darwin.so (*) <19082575-cd71-3bcc-bcf2-30ef685bb4c7> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/websockets/speedups.cpython-311-darwin.so
0x10b7c0000 - 0x10b7c3fff termios.cpython-311-darwin.so (*) <8ca06f85-334e-3422-8798-a795310e825e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/termios.cpython-311-darwin.so
0x10ba80000 - 0x10ba83fff md.cpython-311-darwin.so (*) <f7af70dc-368d-3224-b226-a66b3232bf98> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/charset_normalizer/md.cpython-311-darwin.so
0x10c5b0000 - 0x10c5d7fff md__mypyc.cpython-311-darwin.so (*) <fa33b146-5520-38f2-af8b-8c9b222225bc> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/charset_normalizer/md__mypyc.cpython-311-darwin.so
0x10ba94000 - 0x10ba9bfff _multibytecodec.cpython-311-darwin.so (*) <e11475a4-b5b6-3959-9248-6ff356de71f9> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/python3__dot__11/lib-dynload/_multibytecodec.cpython-311-darwin.so
0x11212c000 - 0x1121d7fff libqcocoa.dylib (*) <3dd57985-5eac-307d-a26f-1a4f2a8ce5dd> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/plugins/platforms/libqcocoa.dylib
0x10c5f4000 - 0x10c5fffff libobjc-trampolines.dylib (*) <f26af954-d1f7-31aa-9981-1bad216149d9> /usr/lib/libobjc-trampolines.dylib
0x1120cc000 - 0x1120effff libqmacstyle.dylib (*) <3124ba49-4f2c-36d2-9fd9-f382a264172e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/plugins/styles/libqmacstyle.dylib
0x11fdc8000 - 0x120517fff com.apple.AGXMetalG13X (345.20.4) <554a66e8-d43d-3916-af8a-243138a2955d> /System/Library/Extensions/AGXMetalG13X.bundle/Contents/MacOS/AGXMetalG13X
0x18fdca000 - 0x18fdd24af libsystem_platform.dylib (*) <62c9cd37-272d-3d2d-9a1c-6f4ef24f7ec7> /usr/lib/system/libsystem_platform.dylib
0x18fe03000 - 0x19034c2bf com.apple.CoreFoundation (6.9) <02762698-9950-3c66-8116-a3a565972a49> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x19c8dc000 - 0x19cbdf27f com.apple.HIToolbox (2.1.1) <fa4beac8-9a1e-3071-b669-bd2794e9fe3b> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x19425b000 - 0x195986bdf com.apple.AppKit (6.9) <07dcc67f-25b2-3f2c-b92e-6fc579455989> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x18f9f1000 - 0x18fa90713 dyld (*) <bc4db5f4-1c64-3706-8006-73b78c3e1f1a> /usr/lib/dyld
0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
0x18fd80000 - 0x18fdbc49f libsystem_kernel.dylib (*) <b809799c-0ec9-3ee1-b730-342bdbf14e03> /usr/lib/system/libsystem_kernel.dylib
0x18fdbd000 - 0x18fdc9acb libsystem_pthread.dylib (*) <0596a7b6-bce2-3f06-a2e8-3eaab5371ed8> /usr/lib/system/libsystem_pthread.dylib
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
VM Region Summary:
ReadOnly portion of Libraries: Total=1.9G resident=0K(0%) swapped_out_or_unallocated=1.9G(100%)
Writable regions: Total=262.6M written=771K(0%) resident=771K(0%) swapped_out=0K(0%) unallocated=261.8M(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
.note.gnu.proper 320 1
Accelerate framework 128K 1
Activity Tracing 256K 1
AttributeGraph Data 1024K 1
ColorSync 16K 1
CoreAnimation 688K 25
CoreGraphics 48K 3
CoreServices 624K 2
CoreUI image data 1824K 12
Foundation 16K 1
Image IO 96K 6
Kernel Alloc Once 32K 1
MALLOC 213.0M 47
MALLOC guard page 3760K 4
STACK GUARD 56.2M 10
Stack 12.8M 11
VM_ALLOCATE 33.2M 44
__AUTH 5755K 634
__AUTH_CONST 87.7M 1010
__CTF 824 1
__DATA 37.6M 1032
__DATA_CONST 35.0M 1083
__DATA_DIRTY 8339K 870
__FONT_DATA 2352 1
__INFO_FILTER 8 1
__LINKEDIT 611.9M 69
__OBJC_RO 78.4M 1
__OBJC_RW 2571K 1
__TEXT 1.3G 1106
__TPRO_CONST 128K 2
dyld private memory 128K 1
mapped file 588.9M 79
page table in kernel 771K 1
shared memory 1552K 18
=========== ======= =======
TOTAL 3.0G 6081
-----------
Full Report
-----------
{"app_name":"ZB100ImageGenerator","timestamp":"2026-03-02 10:35:52.00 +0800","app_version":"0.0.0","slice_uuid":"c52c7158-dde1-b7ee-a20c-2d7e279f8b2f","build_version":"","platform":1,"bundleID":"ZB100ImageGenerator","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 26.3 (25D125)","roots_installed":0,"name":"ZB100ImageGenerator","incident_id":"F120429D-322E-44C6-911C-28B5D605F922"}
{
"uptime" : 98000,
"procRole" : "Foreground",
"version" : 2,
"userID" : 501,
"deployVersion" : 210,
"modelCode" : "MacBookPro18,3",
"coalitionID" : 23215,
"osVersion" : {
"train" : "macOS 26.3",
"build" : "25D125",
"releaseType" : "User"
},
"captureTime" : "2026-03-02 10:35:51.4387 +0800",
"codeSigningMonitor" : 1,
"incident" : "F120429D-322E-44C6-911C-28B5D605F922",
"pid" : 29255,
"translated" : false,
"cpuType" : "ARM-64",
"procLaunch" : "2026-03-02 10:35:28.8650 +0800",
"procStartAbsTime" : 2367477963258,
"procExitAbsTime" : 2368019401119,
"procName" : "ZB100ImageGenerator",
"procPath" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/MacOS\/ZB100ImageGenerator",
"bundleInfo" : {"CFBundleShortVersionString":"0.0.0","CFBundleIdentifier":"ZB100ImageGenerator"},
"storeInfo" : {"deviceIdentifierForVendor":"C11E0BD9-18A4-5928-B47F-C37A69EBD06C","thirdParty":true},
"parentProc" : "launchd",
"parentPid" : 1,
"coalitionName" : "ZB100ImageGenerator",
"crashReporterKey" : "8D4A823C-EBFA-8F26-C4A4-87106AC0521E",
"appleIntelligenceStatus" : {"reasons":["regionIneligible","countryBillingIneligible","countryLocationIneligible"],"state":"unavailable"},
"developerMode" : 1,
"codeSigningID" : "ZB100ImageGenerator",
"codeSigningTeamID" : "",
"codeSigningFlags" : 570425857,
"codeSigningValidationCategory" : 10,
"codeSigningTrustLevel" : 4294967295,
"codeSigningAuxiliaryInfo" : 0,
"instructionByteStream" : {"beforePC":"QoAA8Wj\/\/1QhAAKLIgxArGAEAKxjAAKLYgwBrMADX9ZjgACRY+h7kg==","atPC":"IgxArGUAAMshAAWLIARArCGAAJFCAAXLAgwArUIAAfHpAABUYAQArQ=="},
"bootSessionUUID" : "C8E0C7B1-3617-4C72-B856-7C2C4658BFB9",
"wakeTime" : 3534,
"sleepWakeUUID" : "01A35EA3-D7F7-4A92-8298-02E32F5B23E5",
"sip" : "enabled",
"vmRegionInfo" : "0x10f170da4 is not in any region. Bytes after previous region: 3493 Bytes before following region: 29276\n REGION TYPE START - END [ VSIZE] PRT\/MAX SHRMOD REGION DETAIL\n __LINKEDIT 10f160000-10f170000 [ 64K] r--\/rwx SM=COW \/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libjpeg.62.4.0.dylib\n---> GAP OF 0x8000 BYTES\n CoreAnimation 10f178000-10f194000 [ 112K] rw-\/rwx SM=PRV ",
"exception" : {"codes":"0x0000000000000001, 0x000000010f170da4","rawCodes":[1,4548136356],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x000000010f170da4"},
"termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":29255},
"vmregioninfo" : "0x10f170da4 is not in any region. Bytes after previous region: 3493 Bytes before following region: 29276\n REGION TYPE START - END [ VSIZE] PRT\/MAX SHRMOD REGION DETAIL\n __LINKEDIT 10f160000-10f170000 [ 64K] r--\/rwx SM=COW \/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libjpeg.62.4.0.dylib\n---> GAP OF 0x8000 BYTES\n CoreAnimation 10f178000-10f194000 [ 112K] rw-\/rwx SM=PRV ",
"extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
"faultingThread" : 0,
"threads" : [{"triggered":true,"id":1762615,"threadState":{"x":[{"value":46331108352},{"value":4548136356},{"value":3144},{"value":46331108384},{"value":18446744031926579620},{"value":0},{"value":18446744072631617535},{"value":18446726482597246976},{"value":1},{"value":0},{"value":2},{"value":0},{"value":8864},{"value":11077973557891308663},{"value":4387312024},{"value":46331101184},{"value":6708581248,"symbolLocation":0,"symbol":"_platform_memmove"},{"value":151003808},{"value":0},{"value":46271181568},{"value":3144},{"value":46271225344},{"value":4548136356},{"value":46331108352},{"value":46263182240},{"value":3144},{"value":8},{"value":46271225344},{"value":6095567176}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4572444644},"cpsr":{"value":2147487744},"fp":{"value":6095565792},"sp":{"value":6095565728},"esr":{"value":2449473543,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":6708581392,"matchesCrashFrame":1},"far":{"value":4548136356}},"queue":"com.apple.main-thread","frames":[{"imageOffset":13328,"symbol":"_platform_memmove","symbolLocation":144,"imageIndex":68},{"imageOffset":6371300,"imageIndex":40},{"imageOffset":4259884,"imageIndex":40},{"imageOffset":4264120,"imageIndex":40},{"imageOffset":357180,"symbol":"QImageWriter::write(QImage const&)","symbolLocation":784,"imageIndex":40},{"imageOffset":211052,"symbol":"QImage::save(QString const&, char const*, int) const","symbolLocation":184,"imageIndex":40},{"imageOffset":2630680,"symbol":"Sbk_QImageFunc_save(_object*, _object*, _object*)","symbolLocation":1144,"imageIndex":42},{"imageOffset":691624,"symbol":"cfunction_call","symbolLocation":60,"imageIndex":1},{"imageOffset":386596,"symbol":"_PyObject_MakeTpCall","symbolLocation":280,"imageIndex":1},{"imageOffset":1283192,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24424,"imageIndex":1},{"imageOffset":1311756,"symbol":"_PyEval_Vector","symbolLocation":116,"imageIndex":1},{"imageOffset":400440,"symbol":"method_vectorcall","symbolLocation":380,"imageIndex":1},{"imageOffset":82340,"symbol":"callPythonMetaMethodHelper(QList<QByteArray> const&, char const*, void**, _object*)","symbolLocation":368,"imageIndex":35},{"imageOffset":80204,"symbol":"PySide::SignalManager::callPythonMetaMethod(QMetaMethod, void**, _object*)","symbolLocation":84,"imageIndex":35},{"imageOffset":79312,"symbol":"SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**)","symbolLocation":824,"imageIndex":35},{"imageOffset":963388,"imageIndex":36},{"imageOffset":1112496,"imageIndex":39},{"imageOffset":1112040,"imageIndex":39},{"imageOffset":1116212,"symbol":"QAbstractButton::mouseReleaseEvent(QMouseEvent*)","symbolLocation":232,"imageIndex":39},{"imageOffset":1791960,"symbol":"QPushButtonWrapper::mouseReleaseEvent(QMouseEvent*)","symbolLocation":132,"imageIndex":38},{"imageOffset":388336,"symbol":"QWidget::event(QEvent*)","symbolLocation":132,"imageIndex":39},{"imageOffset":1786556,"symbol":"QPushButtonWrapper::event(QEvent*)","symbolLocation":132,"imageIndex":38},{"imageOffset":65556,"symbol":"QApplicationPrivate::notify_helper(QObject*, QEvent*)","symbolLocation":332,"imageIndex":39},{"imageOffset":74044,"symbol":"QApplication::notify(QObject*, QEvent*)","symbolLocation":4820,"imageIndex":39},{"imageOffset":3983716,"symbol":"QApplicationWrapper::notify(QObject*, QEvent*)","symbolLocation":180,"imageIndex":38},{"imageOffset":626596,"symbol":"QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*)","symbolLocation":176,"imageIndex":36},{"imageOffset":67180,"symbol":"QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)","symbolLocation":892,"imageIndex":39},{"imageOffset":479472,"imageIndex":39},{"imageOffset":475964,"imageIndex":39},{"imageOffset":65556,"symbol":"QApplicationPrivate::notify_helper(QObject*, QEvent*)","symbolLocation":332,"imageIndex":39},{"imageOffset":69740,"symbol":"QApplication::notify(QObject*, QEvent*)","symbolLocation":516,"imageIndex":39},{"imageOffset":3983716,"symbol":"QApplicationWrapper::notify(QObject*, QEvent*)","symbolLocation":180,"imageIndex":38},{"imageOffset":626596,"symbol":"QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*)","symbolLocation":176,"imageIndex":36},{"imageOffset":581044,"symbol":"QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*)","symbolLocation":1968,"imageIndex":40},{"imageOffset":983500,"symbol":"QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)","symbolLocation":408,"imageIndex":40},{"imageOffset":99480,"imageIndex":64},{"imageOffset":391688,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__","symbolLocation":28,"imageIndex":69},{"imageOffset":391580,"symbol":"__CFRunLoopDoSource0","symbolLocation":172,"imageIndex":69},{"imageOffset":390920,"symbol":"__CFRunLoopDoSources0","symbolLocation":232,"imageIndex":69},{"imageOffset":385944,"symbol":"__CFRunLoopRun","symbolLocation":820,"imageIndex":69},{"imageOffset":1150780,"symbol":"_CFRunLoopRunSpecificWithOptions","symbolLocation":532,"imageIndex":69},{"imageOffset":792464,"symbol":"RunCurrentEventLoopInMode","symbolLocation":316,"imageIndex":70},{"imageOffset":805344,"symbol":"ReceiveNextEventCommon","symbolLocation":272,"imageIndex":70},{"imageOffset":2419556,"symbol":"_BlockUntilNextEventMatchingListInMode","symbolLocation":48,"imageIndex":70},{"imageOffset":5382164,"symbol":"_DPSBlockUntilNextEventMatchingListInMode","symbolLocation":236,"imageIndex":71},{"imageOffset":130632,"symbol":"_DPSNextEvent","symbolLocation":588,"imageIndex":71},{"imageOffset":11431564,"symbol":"-[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]","symbolLocation":688,"imageIndex":71},{"imageOffset":11430808,"symbol":"-[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:]","symbolLocation":72,"imageIndex":71},{"imageOffset":100224,"symbol":"-[NSApplication run]","symbolLocation":368,"imageIndex":71},{"imageOffset":89372,"imageIndex":64},{"imageOffset":663800,"symbol":"QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)","symbolLocation":588,"imageIndex":36},{"imageOffset":625520,"symbol":"QCoreApplication::exec()","symbolLocation":228,"imageIndex":36},{"imageOffset":4197996,"symbol":"Sbk_QApplicationFunc_exec(_object*)","symbolLocation":44,"imageIndex":38},{"imageOffset":694200,"symbol":"cfunction_vectorcall_NOARGS","symbolLocation":88,"imageIndex":1},{"imageOffset":1281028,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22260,"imageIndex":1},{"imageOffset":1255652,"symbol":"PyEval_EvalCode","symbolLocation":168,"imageIndex":1},{"imageOffset":12816,"imageIndex":0},{"imageOffset":15104,"imageIndex":0},{"imageOffset":36180,"symbol":"start","symbolLocation":7184,"imageIndex":72}]},{"id":1762720,"frames":[],"threadState":{"x":[{"value":6097858560},{"value":18443},{"value":6097321984},{"value":0},{"value":409604},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6097858560},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708521876},"far":{"value":0}}},{"id":1762726,"frames":[],"threadState":{"x":[{"value":6099005440},{"value":67123},{"value":6098468864},{"value":0},{"value":409604},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6099005440},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708521876},"far":{"value":0}}},{"id":1762728,"name":"com.apple.NSEventThread","threadState":{"x":[{"value":268451845},{"value":21592279046},{"value":8589934592},{"value":126456722096128},{"value":0},{"value":126456722096128},{"value":2},{"value":4294967295},{"value":0},{"value":17179869184},{"value":0},{"value":2},{"value":0},{"value":0},{"value":29443},{"value":0},{"value":18446744073709551569},{"value":8545883576},{"value":0},{"value":4294967295},{"value":2},{"value":126456722096128},{"value":0},{"value":126456722096128},{"value":6099574920},{"value":8589934592},{"value":21592279046},{"value":18446744073709550527},{"value":4412409862}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708342824},"cpsr":{"value":4096},"fp":{"value":6099574768},"sp":{"value":6099574688},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708268084},"far":{"value":0}},"frames":[{"imageOffset":3124,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":74},{"imageOffset":77864,"symbol":"mach_msg2_internal","symbolLocation":76,"imageIndex":74},{"imageOffset":39308,"symbol":"mach_msg_overwrite","symbolLocation":484,"imageIndex":74},{"imageOffset":4020,"symbol":"mach_msg","symbolLocation":24,"imageIndex":74},{"imageOffset":392112,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":69},{"imageOffset":386312,"symbol":"__CFRunLoopRun","symbolLocation":1188,"imageIndex":69},{"imageOffset":1150780,"symbol":"_CFRunLoopRunSpecificWithOptions","symbolLocation":532,"imageIndex":69},{"imageOffset":719412,"symbol":"_NSEventThread","symbolLocation":184,"imageIndex":71},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]},{"id":1762769,"frames":[],"threadState":{"x":[{"value":6100725760},{"value":0},{"value":6100189184},{"value":0},{"value":278532},{"value":18446744073709551615},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":6100725760},"esr":{"value":0},"pc":{"value":6708521876},"far":{"value":0}}},{"id":1762819,"name":"Thread (pooled)","threadState":{"x":[{"value":260},{"value":0},{"value":7168},{"value":0},{"value":0},{"value":160},{"value":29},{"value":999999000},{"value":6101298520},{"value":0},{"value":0},{"value":2},{"value":2},{"value":0},{"value":0},{"value":0},{"value":305},{"value":8545881696},{"value":0},{"value":46334058880},{"value":46334058944},{"value":6101299424},{"value":999999000},{"value":29},{"value":7168},{"value":7169},{"value":7424},{"value":18446744072709551616},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708543708},"cpsr":{"value":1610616832},"fp":{"value":6101298640},"sp":{"value":6101298496},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708282616},"far":{"value":0}},"frames":[{"imageOffset":17656,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":74},{"imageOffset":28892,"symbol":"_pthread_cond_wait","symbolLocation":984,"imageIndex":75},{"imageOffset":2324696,"imageIndex":36},{"imageOffset":2324328,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":36},{"imageOffset":1653348,"imageIndex":36},{"imageOffset":2289132,"imageIndex":36},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]},{"id":1762820,"name":"Thread (pooled)","threadState":{"x":[{"value":260},{"value":0},{"value":7168},{"value":0},{"value":0},{"value":160},{"value":29},{"value":999998000},{"value":6101871960},{"value":0},{"value":0},{"value":2},{"value":2},{"value":0},{"value":0},{"value":0},{"value":305},{"value":8545881696},{"value":0},{"value":46334059136},{"value":46334059200},{"value":6101872864},{"value":999998000},{"value":29},{"value":7168},{"value":7169},{"value":7424},{"value":18446744072709551616},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708543708},"cpsr":{"value":1610616832},"fp":{"value":6101872080},"sp":{"value":6101871936},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708282616},"far":{"value":0}},"frames":[{"imageOffset":17656,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":74},{"imageOffset":28892,"symbol":"_pthread_cond_wait","symbolLocation":984,"imageIndex":75},{"imageOffset":2324696,"imageIndex":36},{"imageOffset":2324328,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":36},{"imageOffset":1653348,"imageIndex":36},{"imageOffset":2289132,"imageIndex":36},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]},{"id":1763455,"name":"Thread (pooled)","threadState":{"x":[{"value":260},{"value":0},{"value":0},{"value":0},{"value":0},{"value":160},{"value":29},{"value":999998000},{"value":6096711000},{"value":0},{"value":0},{"value":2},{"value":2},{"value":0},{"value":0},{"value":0},{"value":305},{"value":8545881696},{"value":0},{"value":46334059904},{"value":46334059968},{"value":6096711904},{"value":999998000},{"value":29},{"value":0},{"value":1},{"value":256},{"value":18446744072709551616},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708543708},"cpsr":{"value":1610616832},"fp":{"value":6096711120},"sp":{"value":6096710976},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708282616},"far":{"value":0}},"frames":[{"imageOffset":17656,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":74},{"imageOffset":28892,"symbol":"_pthread_cond_wait","symbolLocation":984,"imageIndex":75},{"imageOffset":2324696,"imageIndex":36},{"imageOffset":2324328,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":36},{"imageOffset":1653348,"imageIndex":36},{"imageOffset":2289132,"imageIndex":36},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]},{"id":1763456,"name":"Thread (pooled)","threadState":{"x":[{"value":260},{"value":0},{"value":0},{"value":0},{"value":0},{"value":160},{"value":29},{"value":999998000},{"value":6097284440},{"value":0},{"value":0},{"value":2},{"value":2},{"value":0},{"value":0},{"value":0},{"value":305},{"value":8545881696},{"value":0},{"value":46334061568},{"value":46334061632},{"value":6097285344},{"value":999998000},{"value":29},{"value":0},{"value":1},{"value":256},{"value":18446744072709551616},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708543708},"cpsr":{"value":1610616832},"fp":{"value":6097284560},"sp":{"value":6097284416},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708282616},"far":{"value":0}},"frames":[{"imageOffset":17656,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":74},{"imageOffset":28892,"symbol":"_pthread_cond_wait","symbolLocation":984,"imageIndex":75},{"imageOffset":2324696,"imageIndex":36},{"imageOffset":2324328,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":36},{"imageOffset":1653348,"imageIndex":36},{"imageOffset":2289132,"imageIndex":36},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]},{"id":1763457,"name":"Thread (pooled)","threadState":{"x":[{"value":260},{"value":0},{"value":0},{"value":0},{"value":0},{"value":160},{"value":29},{"value":999998000},{"value":6098431320},{"value":0},{"value":0},{"value":2},{"value":2},{"value":0},{"value":0},{"value":0},{"value":305},{"value":8545881696},{"value":0},{"value":46334061952},{"value":46334062016},{"value":6098432224},{"value":999998000},{"value":29},{"value":0},{"value":1},{"value":256},{"value":18446744072709551616},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":6708543708},"cpsr":{"value":1610616832},"fp":{"value":6098431440},"sp":{"value":6098431296},"esr":{"value":1442840704,"description":"(Syscall)"},"pc":{"value":6708282616},"far":{"value":0}},"frames":[{"imageOffset":17656,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":74},{"imageOffset":28892,"symbol":"_pthread_cond_wait","symbolLocation":984,"imageIndex":75},{"imageOffset":2324696,"imageIndex":36},{"imageOffset":2324328,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":36},{"imageOffset":1653348,"imageIndex":36},{"imageOffset":2289132,"imageIndex":36},{"imageOffset":27656,"symbol":"_pthread_start","symbolLocation":136,"imageIndex":75},{"imageOffset":7080,"symbol":"thread_start","symbolLocation":8,"imageIndex":75}]}],
"usedImages" : [
{
"source" : "P",
"arch" : "arm64",
"base" : 4371300352,
"CFBundleShortVersionString" : "0.0.0",
"CFBundleIdentifier" : "ZB100ImageGenerator",
"size" : 49152,
"uuid" : "c52c7158-dde1-b7ee-a20c-2d7e279f8b2f",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/MacOS\/ZB100ImageGenerator",
"name" : "ZB100ImageGenerator"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4464787456,
"CFBundleShortVersionString" : "3.11.14, (c) 2001-2023 Python Software Foundation.",
"CFBundleIdentifier" : "org.python.python",
"size" : 2785280,
"uuid" : "5dd0342d-9c71-3845-aa0d-526811a6f48e",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/Python.framework\/Versions\/3.11\/Python",
"name" : "Python",
"CFBundleVersion" : "3.11.14"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4381130752,
"size" : 32768,
"uuid" : "28ac7ddf-cf6f-365d-92eb-3d943594095c",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_struct.cpython-311-darwin.so",
"name" : "_struct.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382277632,
"size" : 32768,
"uuid" : "7171b4cf-95bb-33a2-9ed1-0bb498c37fa2",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/zlib.cpython-311-darwin.so",
"name" : "zlib.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382539776,
"size" : 81920,
"uuid" : "f6f745f4-fffa-344a-ad04-d11ca1277996",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_ctypes.cpython-311-darwin.so",
"name" : "_ctypes.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382375936,
"size" : 16384,
"uuid" : "bb3e6bcc-6286-3067-919b-60acb657cf2c",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_opcode.cpython-311-darwin.so",
"name" : "_opcode.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382703616,
"size" : 32768,
"uuid" : "eb397fda-feba-3c96-af79-24283a578fae",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/binascii.cpython-311-darwin.so",
"name" : "binascii.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382457856,
"size" : 16384,
"uuid" : "71f2bcdd-2777-3374-abd2-cf8397639bb9",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_bz2.cpython-311-darwin.so",
"name" : "_bz2.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382801920,
"size" : 32768,
"uuid" : "fd1809c7-edb3-3105-9d02-b62e8b772261",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_lzma.cpython-311-darwin.so",
"name" : "_lzma.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4461953024,
"size" : 262144,
"uuid" : "83186775-f820-338e-ae04-56e177aabd5e",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/liblzma.5.dylib",
"name" : "liblzma.5.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382900224,
"size" : 16384,
"uuid" : "99166977-a265-3101-aab7-971a24ad32c0",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_typing.cpython-311-darwin.so",
"name" : "_typing.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4387504128,
"size" : 81920,
"uuid" : "56d3cc61-cb6a-3b02-bfaf-e8dd92b9bfea",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_pickle.cpython-311-darwin.so",
"name" : "_pickle.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4463345664,
"size" : 65536,
"uuid" : "c8a6e9b9-f62f-351f-a5c3-62e20524b33b",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_socket.cpython-311-darwin.so",
"name" : "_socket.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4383096832,
"size" : 49152,
"uuid" : "1839ded9-d923-3cdc-b70d-865ec4e851e2",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/math.cpython-311-darwin.so",
"name" : "math.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4382982144,
"size" : 32768,
"uuid" : "cd553e77-c615-34b7-8f1a-f6e35e87a169",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/select.cpython-311-darwin.so",
"name" : "select.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4464541696,
"size" : 32768,
"uuid" : "a3f156ea-29be-3fc6-9864-30c5bf9dadf3",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/array.cpython-311-darwin.so",
"name" : "array.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4464640000,
"size" : 16384,
"uuid" : "c56288da-1a63-363e-942b-3b620cebc1e2",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/fcntl.cpython-311-darwin.so",
"name" : "fcntl.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4469997568,
"size" : 16384,
"uuid" : "dff6ea3f-cc9d-3d12-9e2d-8258318fb4a2",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_posixsubprocess.cpython-311-darwin.so",
"name" : "_posixsubprocess.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4470079488,
"size" : 16384,
"uuid" : "0f541801-df42-3813-8dd1-ccaa2f444faf",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_bisect.cpython-311-darwin.so",
"name" : "_bisect.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4470161408,
"size" : 16384,
"uuid" : "0fd0a29e-7ebe-3007-b4f0-abd2b76e1cd1",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_random.cpython-311-darwin.so",
"name" : "_random.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4470243328,
"size" : 16384,
"uuid" : "e19e5d89-2bc8-32ab-a48a-7562920fece6",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_sha512.cpython-311-darwin.so",
"name" : "_sha512.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4471373824,
"size" : 16384,
"uuid" : "b6e9e162-e0ac-324c-916b-cf5ffa6192af",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_heapq.cpython-311-darwin.so",
"name" : "_heapq.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4471455744,
"size" : 16384,
"uuid" : "942664e3-4e11-3c04-9858-aba0554f3603",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_queue.cpython-311-darwin.so",
"name" : "_queue.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4471537664,
"size" : 16384,
"uuid" : "9653800d-4d83-3638-9eec-a1528f9d3bc9",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/grp.cpython-311-darwin.so",
"name" : "grp.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4472782848,
"size" : 32768,
"uuid" : "4e81b9a5-a890-3a3e-ad15-75ef5613e601",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_hashlib.cpython-311-darwin.so",
"name" : "_hashlib.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4477779968,
"size" : 3407872,
"uuid" : "efba4c7a-a8ab-3429-8076-3bf9f22bd40b",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libcrypto.3.dylib",
"name" : "libcrypto.3.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4472668160,
"size" : 32768,
"uuid" : "c5f09022-41e2-376e-92ae-ff2a54233454",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_blake2.cpython-311-darwin.so",
"name" : "_blake2.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4474093568,
"size" : 65536,
"uuid" : "480f7c03-8f14-3917-a2f3-c390567b4fee",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_datetime.cpython-311-darwin.so",
"name" : "_datetime.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4474470400,
"size" : 114688,
"uuid" : "97d98a89-d2ea-39a1-bfc4-721d12bf2fa4",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_ssl.cpython-311-darwin.so",
"name" : "_ssl.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4475617280,
"size" : 606208,
"uuid" : "810d99f1-2504-3db7-9357-4bce9d47fc76",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libssl.3.dylib",
"name" : "libssl.3.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4473946112,
"size" : 16384,
"uuid" : "511482db-8e3f-3fef-b74d-a908b478dfbb",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_scproxy.cpython-311-darwin.so",
"name" : "_scproxy.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4474241024,
"size" : 32768,
"uuid" : "7af5e8e4-c80d-3d26-aa09-2b5ce672ed20",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_csv.cpython-311-darwin.so",
"name" : "_csv.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4474339328,
"size" : 16384,
"uuid" : "34590199-3ce2-32b1-aa23-b4a50138a445",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/shiboken6\/Shiboken.abi3.so",
"name" : "Shiboken.abi3.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4483710976,
"size" : 327680,
"uuid" : "f0b78160-24ab-3c2d-bccc-4ef944f40d30",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/shiboken6\/libshiboken6.abi3.6.10.dylib",
"name" : "libshiboken6.abi3.6.10.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4491001856,
"size" : 3489792,
"uuid" : "62750a98-bc70-38bc-96d4-b518d7fefded",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtCore.abi3.so",
"name" : "QtCore.abi3.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4475158528,
"size" : 262144,
"uuid" : "1da89093-9eca-3280-a410-df22a1865bbd",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/libpyside6.abi3.6.10.dylib",
"name" : "libpyside6.abi3.6.10.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4502618112,
"CFBundleShortVersionString" : "6.10",
"CFBundleIdentifier" : "org.qt-project.QtCore",
"size" : 4980736,
"uuid" : "4a7a0348-b410-3e23-8373-53f6876eb7f4",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtCore.framework\/Versions\/A\/QtCore",
"name" : "QtCore",
"CFBundleVersion" : "6.10.1"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 4485726208,
"CFBundleShortVersionString" : "3.0",
"CFBundleIdentifier" : "com.apple.security.csparser",
"size" : 131072,
"uuid" : "862365a2-2945-3e86-a947-83bf39a899bf",
"path" : "\/System\/Library\/Frameworks\/Security.framework\/Versions\/A\/PlugIns\/csparser.bundle\/Contents\/MacOS\/csparser",
"name" : "csparser",
"CFBundleVersion" : "61901.80.25"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4551278592,
"size" : 5357568,
"uuid" : "188a1c2d-f44f-3e57-bd21-a37a7a840d28",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtWidgets.abi3.so",
"name" : "QtWidgets.abi3.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4559978496,
"CFBundleShortVersionString" : "6.10",
"CFBundleIdentifier" : "org.qt-project.QtWidgets",
"size" : 4636672,
"uuid" : "029543bf-5fc1-3a0c-ade7-edba0cf3d8b1",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtWidgets.framework\/Versions\/A\/QtWidgets",
"name" : "QtWidgets",
"CFBundleVersion" : "6.10.1"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4566073344,
"CFBundleShortVersionString" : "6.10",
"CFBundleIdentifier" : "org.qt-project.QtGui",
"size" : 7094272,
"uuid" : "3fa37de7-ceac-3c91-9317-791e19111d2a",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtGui.framework\/Versions\/A\/QtGui",
"name" : "QtGui",
"CFBundleVersion" : "6.10.1"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487725056,
"CFBundleShortVersionString" : "6.10",
"CFBundleIdentifier" : "org.qt-project.QtDBus",
"size" : 557056,
"uuid" : "46e5cebb-3051-35c6-aa1e-6f530f243273",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtDBus.framework\/Versions\/A\/QtDBus",
"name" : "QtDBus",
"CFBundleVersion" : "6.10.1"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4574527488,
"size" : 4128768,
"uuid" : "19d1f0df-5853-3f4e-92f0-cf3d8ba3aeb4",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtGui.abi3.so",
"name" : "QtGui.abi3.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4475060224,
"size" : 32768,
"uuid" : "71692750-fd03-30ef-b120-5ba354c0467d",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_json.cpython-311-darwin.so",
"name" : "_json.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4542676992,
"size" : 3932160,
"uuid" : "995672f1-c523-382f-a9e3-688535cb85e7",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/pydantic_core\/_pydantic_core.cpython-311-darwin.so",
"name" : "_pydantic_core.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4485283840,
"size" : 114688,
"uuid" : "4d7d232c-a1bd-3d68-a882-593c5371f6e3",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_decimal.cpython-311-darwin.so",
"name" : "_decimal.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4485480448,
"size" : 114688,
"uuid" : "52d16117-fcf0-3704-984f-ce4454923a78",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libmpdec.4.dylib",
"name" : "libmpdec.4.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4477583360,
"size" : 16384,
"uuid" : "9a4582a0-6a4d-353c-85ba-cfdb08a578cd",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_contextvars.cpython-311-darwin.so",
"name" : "_contextvars.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487151616,
"size" : 49152,
"uuid" : "e95770b0-0926-37e6-88fd-b1e9d684a2ca",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_asyncio.cpython-311-darwin.so",
"name" : "_asyncio.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4477665280,
"size" : 32768,
"uuid" : "0ca64709-6510-3c2d-85b3-f3d22698e98f",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_zoneinfo.cpython-311-darwin.so",
"name" : "_zoneinfo.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487020544,
"size" : 16384,
"uuid" : "af437268-384b-3cf1-9821-66860c88323c",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_uuid.cpython-311-darwin.so",
"name" : "_uuid.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4546936832,
"size" : 376832,
"uuid" : "5b35d4aa-1795-338c-8d64-895c72f8f320",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/_imaging.cpython-311-darwin.so",
"name" : "_imaging.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4548296704,
"size" : 688128,
"uuid" : "5d94e595-edbf-36da-9296-dc1777ec485e",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libtiff.6.dylib",
"name" : "libtiff.6.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4547493888,
"size" : 540672,
"uuid" : "8ec82fd5-1c87-36f5-bd18-8454465fb860",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libjpeg.62.4.0.dylib",
"name" : "libjpeg.62.4.0.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4549820416,
"size" : 622592,
"uuid" : "6994e1d8-b3e5-38d6-aef0-721586b2d5ce",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libopenjp2.2.5.3.dylib",
"name" : "libopenjp2.2.5.3.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487462912,
"size" : 114688,
"uuid" : "9d7eca9a-6145-3222-8894-4967624efcc9",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libz.1.3.1.zlib-ng.dylib",
"name" : "libz.1.3.1.zlib-ng.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4501979136,
"size" : 163840,
"uuid" : "6fa02d7f-daaa-3c79-8b0d-c5319e003f3d",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libxcb.1.1.0.dylib",
"name" : "libxcb.1.1.0.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487282688,
"size" : 16384,
"uuid" : "32a172ad-f11b-381b-9270-3f9a195cbe7f",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libXau.6.dylib",
"name" : "libXau.6.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4582375424,
"size" : 1114112,
"uuid" : "df966a2c-3537-3108-900f-b421898e2971",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/unicodedata.cpython-311-darwin.so",
"name" : "unicodedata.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487364608,
"size" : 16384,
"uuid" : "19082575-cd71-3bcc-bcf2-30ef685bb4c7",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/websockets\/speedups.cpython-311-darwin.so",
"name" : "speedups.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4487643136,
"size" : 16384,
"uuid" : "8ca06f85-334e-3422-8798-a795310e825e",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/termios.cpython-311-darwin.so",
"name" : "termios.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4490526720,
"size" : 16384,
"uuid" : "f7af70dc-368d-3224-b226-a66b3232bf98",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/charset_normalizer\/md.cpython-311-darwin.so",
"name" : "md.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4502257664,
"size" : 163840,
"uuid" : "fa33b146-5520-38f2-af8b-8c9b222225bc",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/charset_normalizer\/md__mypyc.cpython-311-darwin.so",
"name" : "md__mypyc.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4490608640,
"size" : 32768,
"uuid" : "e11475a4-b5b6-3959-9248-6ff356de71f9",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_multibytecodec.cpython-311-darwin.so",
"name" : "_multibytecodec.cpython-311-darwin.so"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4598185984,
"size" : 704512,
"uuid" : "3dd57985-5eac-307d-a26f-1a4f2a8ce5dd",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/plugins\/platforms\/libqcocoa.dylib",
"name" : "libqcocoa.dylib"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 4502536192,
"size" : 49152,
"uuid" : "f26af954-d1f7-31aa-9981-1bad216149d9",
"path" : "\/usr\/lib\/libobjc-trampolines.dylib",
"name" : "libobjc-trampolines.dylib"
},
{
"source" : "P",
"arch" : "arm64",
"base" : 4597792768,
"size" : 147456,
"uuid" : "3124ba49-4f2c-36d2-9fd9-f382a264172e",
"path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/plugins\/styles\/libqmacstyle.dylib",
"name" : "libqmacstyle.dylib"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 4829511680,
"CFBundleShortVersionString" : "345.20.4",
"CFBundleIdentifier" : "com.apple.AGXMetalG13X",
"size" : 7667712,
"uuid" : "554a66e8-d43d-3916-af8a-243138a2955d",
"path" : "\/System\/Library\/Extensions\/AGXMetalG13X.bundle\/Contents\/MacOS\/AGXMetalG13X",
"name" : "AGXMetalG13X",
"CFBundleVersion" : "345.20.4"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6708568064,
"size" : 33968,
"uuid" : "62c9cd37-272d-3d2d-9a1c-6f4ef24f7ec7",
"path" : "\/usr\/lib\/system\/libsystem_platform.dylib",
"name" : "libsystem_platform.dylib"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6708801536,
"CFBundleShortVersionString" : "6.9",
"CFBundleIdentifier" : "com.apple.CoreFoundation",
"size" : 5542592,
"uuid" : "02762698-9950-3c66-8116-a3a565972a49",
"path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
"name" : "CoreFoundation",
"CFBundleVersion" : "4302"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6921502720,
"CFBundleShortVersionString" : "2.1.1",
"CFBundleIdentifier" : "com.apple.HIToolbox",
"size" : 3158656,
"uuid" : "fa4beac8-9a1e-3071-b669-bd2794e9fe3b",
"path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox",
"name" : "HIToolbox"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6780465152,
"CFBundleShortVersionString" : "6.9",
"CFBundleIdentifier" : "com.apple.AppKit",
"size" : 24296416,
"uuid" : "07dcc67f-25b2-3f2c-b92e-6fc579455989",
"path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
"name" : "AppKit",
"CFBundleVersion" : "2685.40.108"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6704533504,
"size" : 653076,
"uuid" : "bc4db5f4-1c64-3706-8006-73b78c3e1f1a",
"path" : "\/usr\/lib\/dyld",
"name" : "dyld"
},
{
"size" : 0,
"source" : "A",
"base" : 0,
"uuid" : "00000000-0000-0000-0000-000000000000"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6708264960,
"size" : 246944,
"uuid" : "b809799c-0ec9-3ee1-b730-342bdbf14e03",
"path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
"name" : "libsystem_kernel.dylib"
},
{
"source" : "P",
"arch" : "arm64e",
"base" : 6708514816,
"size" : 51916,
"uuid" : "0596a7b6-bce2-3f06-a2e8-3eaab5371ed8",
"path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
"name" : "libsystem_pthread.dylib"
}
],
"sharedCache" : {
"base" : 6703448064,
"size" : 5818417152,
"uuid" : "25ae5a2a-fe2a-3998-8d4e-f3c5c6e6ceb6"
},
"vmSummary" : "ReadOnly portion of Libraries: Total=1.9G resident=0K(0%) swapped_out_or_unallocated=1.9G(100%)\nWritable regions: Total=262.6M written=771K(0%) resident=771K(0%) swapped_out=0K(0%) unallocated=261.8M(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \n.note.gnu.proper 320 1 \nAccelerate framework 128K 1 \nActivity Tracing 256K 1 \nAttributeGraph Data 1024K 1 \nColorSync 16K 1 \nCoreAnimation 688K 25 \nCoreGraphics 48K 3 \nCoreServices 624K 2 \nCoreUI image data 1824K 12 \nFoundation 16K 1 \nImage IO 96K 6 \nKernel Alloc Once 32K 1 \nMALLOC 213.0M 47 \nMALLOC guard page 3760K 4 \nSTACK GUARD 56.2M 10 \nStack 12.8M 11 \nVM_ALLOCATE 33.2M 44 \n__AUTH 5755K 634 \n__AUTH_CONST 87.7M 1010 \n__CTF 824 1 \n__DATA 37.6M 1032 \n__DATA_CONST 35.0M 1083 \n__DATA_DIRTY 8339K 870 \n__FONT_DATA 2352 1 \n__INFO_FILTER 8 1 \n__LINKEDIT 611.9M 69 \n__OBJC_RO 78.4M 1 \n__OBJC_RW 2571K 1 \n__TEXT 1.3G 1106 \n__TPRO_CONST 128K 2 \ndyld private memory 128K 1 \nmapped file 588.9M 79 \npage table in kernel 771K 1 \nshared memory 1552K 18 \n=========== ======= ======= \nTOTAL 3.0G 6081 \n",
"legacyInfo" : {
"threadTriggered" : {
"queue" : "com.apple.main-thread"
}
},
"logWritingSignature" : "11c9a1c78726ce2050f2e2b923b675ce5b86c5a2",
"bug_type" : "309",
"roots_installed" : 0,
"trmStatus" : 1,
"trialInfo" : {
"rollouts" : [
{
"rolloutId" : "6813dc6e1e50e5344eb573e9",
"factorPackIds" : [
],
"deploymentId" : 240000015
},
{
"rolloutId" : "64c025b28b7f0e739e4fbe58",
"factorPackIds" : [
"657ba0a39ec5da283662e9d2"
],
"deploymentId" : 240000044
}
],
"experiments" : [
]
}
}
Model: MacBookPro18,3, BootROM 13822.81.10, proc 10:8:2 processors, 32 GB, SMC
Graphics: Apple M1 Pro, Apple M1 Pro, Built-In
Display: Color LCD, 3024 x 1964 Retina, Main, MirrorOff, Online
Memory Module: LPDDR5, Hynix
AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x4387), wl0: Dec 6 2025 00:29:24 version 20.131.5.0.8.7.216 FWID 01-a22d1730
IO80211_driverkit-1540.16 "IO80211_driverkit-1540.16" Jan 27 2026 21:04:24
AirPort:
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Thunderbolt Bus: MacBook Pro, Apple Inc.
Thunderbolt Bus: MacBook Pro, Apple Inc.
Thunderbolt Bus: MacBook Pro, Apple Inc.
......@@ -26,6 +26,9 @@ import tempfile
import platform
import logging
import random
import faulthandler
import traceback
import signal
from pathlib import Path
from google import genai
from google.genai import types
......@@ -38,6 +41,136 @@ from dataclasses import dataclass, asdict
from typing import List, Optional, Dict, Any
def _get_crash_log_path() -> Path:
"""获取崩溃日志文件路径(尽早可用,不依赖任何初始化)"""
system = platform.system()
if system == "Darwin":
p = Path.home() / "Library/Application Support/ZB100ImageGenerator"
elif system == "Windows":
p = Path(os.environ.get("APPDATA", str(Path.home()))) / "ZB100ImageGenerator"
else:
p = Path.home() / ".config/zb100imagegenerator"
try:
p.mkdir(parents=True, exist_ok=True)
except Exception:
p = Path(tempfile.gettempdir()) / "ZB100ImageGenerator"
p.mkdir(parents=True, exist_ok=True)
return p / "crash_log.txt"
def _enable_crash_diagnostics():
"""在最早期启用崩溃诊断工具"""
crash_log = _get_crash_log_path()
# 1. faulthandler: segfault 时自动输出 Python 调用栈到文件
try:
crash_fh = open(crash_log, "a", encoding="utf-8")
crash_fh.write(f"\n{'='*60}\n")
crash_fh.write(f"[STARTUP] {datetime.now().isoformat()} - faulthandler 已启用\n")
crash_fh.flush()
faulthandler.enable(file=crash_fh, all_threads=True)
# 同时输出到 stderr
faulthandler.enable(file=sys.stderr, all_threads=True)
print(f"崩溃诊断日志路径: {crash_log}")
except Exception as e:
print(f"faulthandler 启用失败: {e}")
faulthandler.enable() # 至少启用 stderr 输出
# 2. 全局 Python 异常钩子
def _global_excepthook(exc_type, exc_value, exc_tb):
msg = "".join(traceback.format_exception(exc_type, exc_value, exc_tb))
logging.critical(f"未捕获异常:\n{msg}")
try:
with open(crash_log, "a", encoding="utf-8") as f:
f.write(f"\n[UNCAUGHT EXCEPTION] {datetime.now().isoformat()}\n{msg}\n")
except Exception:
pass
sys.__excepthook__(exc_type, exc_value, exc_tb)
sys.excepthook = _global_excepthook
# 3. Qt 消息拦截器
try:
from PySide6.QtCore import qInstallMessageHandler, QtMsgType
def _qt_message_handler(mode, context, message):
level_map = {
QtMsgType.QtDebugMsg: "QT_DEBUG",
QtMsgType.QtInfoMsg: "QT_INFO",
QtMsgType.QtWarningMsg: "QT_WARNING",
QtMsgType.QtCriticalMsg: "QT_CRITICAL",
QtMsgType.QtFatalMsg: "QT_FATAL",
}
level = level_map.get(mode, "QT_UNKNOWN")
location = f"{context.file}:{context.line}" if context.file else "unknown"
full_msg = f"[{level}] {location} - {message}"
if mode in (QtMsgType.QtWarningMsg, QtMsgType.QtCriticalMsg, QtMsgType.QtFatalMsg):
logging.warning(full_msg)
try:
with open(crash_log, "a", encoding="utf-8") as f:
f.write(f"[{datetime.now().isoformat()}] {full_msg}\n")
except Exception:
pass
else:
logging.debug(full_msg)
qInstallMessageHandler(_qt_message_handler)
except Exception as e:
print(f"Qt 消息拦截器安装失败: {e}")
def _log_system_info():
"""记录系统环境信息,用于排查兼容性问题"""
logger = logging.getLogger(__name__)
info_lines = [
f"操作系统: {platform.system()} {platform.release()} ({platform.version()})",
f"架构: {platform.machine()}",
f"Python: {sys.version}",
f"打包模式: {'PyInstaller' if getattr(sys, 'frozen', False) else '开发环境'}",
]
try:
import PySide6
info_lines.append(f"PySide6: {PySide6.__version__}")
except Exception:
info_lines.append("PySide6: 版本获取失败")
try:
from PySide6.QtCore import qVersion
info_lines.append(f"Qt: {qVersion()}")
except Exception:
info_lines.append("Qt: 版本获取失败")
try:
import PIL
info_lines.append(f"Pillow: {PIL.__version__}")
except Exception:
info_lines.append("Pillow: 版本获取失败")
try:
from google import genai as _genai
info_lines.append(f"google-genai: {_genai.__version__}" if hasattr(_genai, '__version__') else "google-genai: 已加载")
except Exception:
info_lines.append("google-genai: 未安装或加载失败")
if getattr(sys, 'frozen', False):
info_lines.append(f"可执行路径: {sys.executable}")
if hasattr(sys, '_MEIPASS'):
info_lines.append(f"_MEIPASS: {sys._MEIPASS}")
full_info = "\n ".join(info_lines)
logger.info(f"系统环境信息:\n {full_info}")
# 同时写入崩溃日志
try:
crash_log = _get_crash_log_path()
with open(crash_log, "a", encoding="utf-8") as f:
f.write(f"[SYSTEM INFO] {datetime.now().isoformat()}\n {full_info}\n")
except Exception:
pass
def init_logging(log_level=logging.INFO):
"""
初始化简单的日志系统
......@@ -432,7 +565,7 @@ class HistoryManager:
self.base_path = base_path or get_app_data_path()
self.base_path.mkdir(parents=True, exist_ok=True)
self.history_index_file = self.base_path / "history_index.json"
self.max_history_count = 100 # 默认最大历史记录数量
self.max_history_count = 0 # 0 表示不限制历史记录数量
self.logger.debug(f"历史记录管理器初始化完成,存储路径: {self.base_path}")
......@@ -638,7 +771,9 @@ class HistoryManager:
print(f"保存历史记录索引失败: {e}")
def _cleanup_old_records(self):
"""清理旧的历史记录,保持最大数量限制"""
"""清理旧的历史记录,保持最大数量限制。max_history_count <= 0 表示不限制。"""
if self.max_history_count <= 0:
return
history_items = self.load_history_index()
if len(history_items) > self.max_history_count:
# 保留最新的记录
......@@ -1153,7 +1288,7 @@ class ImageGeneratorWindow(QMainWindow):
def __init__(self):
super().__init__()
self.logger = logging.getLogger(__name__)
self.logger.info("应用程序启动")
self.logger.info("[INIT] ImageGeneratorWindow.__init__ 开始")
self.api_key = ""
self.uploaded_images = [] # List of file paths
......@@ -1165,20 +1300,28 @@ class ImageGeneratorWindow(QMainWindow):
self.saved_password_hash = ""
self.authenticated_user = "" # 当前登录用户名
self.logger.info("[INIT] 1/6 加载配置...")
self.load_config()
self.logger.info("[INIT] 2/6 设置窗口图标...")
self.set_window_icon()
# Initialize history manager
self.logger.info("[INIT] 3/6 初始化历史记录管理器...")
self.history_manager = HistoryManager()
# Initialize task queue manager
self.logger.info("[INIT] 4/6 初始化任务队列管理器...")
from task_queue import TaskQueueManager
self.task_manager = TaskQueueManager()
self.logger.info("[INIT] 5/6 构建 UI...")
self.setup_ui()
self.logger.info("[INIT] 6/6 应用样式...")
self.apply_styles()
self.logger.info("应用程序初始化完成")
self.logger.info("[INIT] ImageGeneratorWindow 初始化完成")
def set_window_icon(self):
"""Set window icon based on platform"""
......@@ -1251,7 +1394,7 @@ class ImageGeneratorWindow(QMainWindow):
# Load history configuration
history_config = config.get("history_config", {})
if hasattr(self, 'history_manager'):
self.history_manager.max_history_count = history_config.get("max_history_count", 100)
self.history_manager.max_history_count = history_config.get("max_history_count", 0)
self.logger.info("配置文件加载成功")
config_loaded = True
......@@ -1280,7 +1423,7 @@ class ImageGeneratorWindow(QMainWindow):
# Load history configuration
history_config = config.get("history_config", {})
if hasattr(self, 'history_manager'):
self.history_manager.max_history_count = history_config.get("max_history_count", 100)
self.history_manager.max_history_count = history_config.get("max_history_count", 0)
self.logger.info(f"从打包配置文件加载成功: {bundled_path}")
config_loaded = True
......@@ -1305,7 +1448,7 @@ class ImageGeneratorWindow(QMainWindow):
# Load history configuration
history_config = config.get("history_config", {})
if hasattr(self, 'history_manager'):
self.history_manager.max_history_count = history_config.get("max_history_count", 100)
self.history_manager.max_history_count = history_config.get("max_history_count", 0)
self.logger.info(f"从当前目录配置文件加载成功: {current_config}")
config_loaded = True
......@@ -1398,22 +1541,27 @@ class ImageGeneratorWindow(QMainWindow):
self.tab_widget = QTabWidget()
# Create generation tab
self.logger.info("[INIT-UI] 创建图片生成 Tab...")
generation_tab = self.setup_generation_tab()
self.tab_widget.addTab(generation_tab, "图片生成")
self.logger.info("[INIT-UI] 图片生成 Tab 创建完成")
# Create style designer tab
self.logger.info("[INIT-UI] 创建款式设计 Tab...")
try:
jewelry_lib_manager = JewelryLibraryManager(self.get_config_dir())
style_designer_tab = StyleDesignerTab(jewelry_lib_manager, parent=self)
self.tab_widget.addTab(style_designer_tab, "款式设计")
self.logger.info("款式设计 Tab 创建成功")
self.logger.info("[INIT-UI] 款式设计 Tab 创建成功")
except Exception as e:
self.logger.error(f"款式设计 Tab 创建失败: {e}")
self.logger.error(f"[INIT-UI] 款式设计 Tab 创建失败: {e}", exc_info=True)
# 即使失败也继续运行,不阻止应用启动
# Create history tab
self.logger.info("[INIT-UI] 创建历史记录 Tab...")
history_tab = self.setup_history_tab()
self.tab_widget.addTab(history_tab, "历史记录")
self.logger.info("[INIT-UI] 历史记录 Tab 创建完成")
content_layout.addWidget(self.tab_widget)
......@@ -1425,9 +1573,11 @@ class ImageGeneratorWindow(QMainWindow):
main_layout.addWidget(content_widget, 7) # 70% width
# Right side: Task queue sidebar
self.logger.info("[INIT-UI] 创建任务队列侧边栏...")
from task_queue import TaskQueueWidget
self.task_queue_widget = TaskQueueWidget(self.task_manager)
main_layout.addWidget(self.task_queue_widget, 3) # 30% width
self.logger.info("[INIT-UI] 任务队列侧边栏创建完成")
central_widget.setLayout(main_layout)
......@@ -1896,10 +2046,19 @@ class ImageGeneratorWindow(QMainWindow):
temp_dir.mkdir(exist_ok=True)
temp_file_path = temp_dir / f"clipboard_{timestamp}.png"
self.logger.info(f"[QImage.save] add_clipboard_image: 准备保存, "
f"image.isNull()={image.isNull()}, "
f"size={image.width()}x{image.height()}, "
f"format={image.format()}, "
f"target={temp_file_path}")
normalized = image.convertToFormat(QImage.Format.Format_ARGB32)
self.logger.info(f"[QImage.save] convertToFormat 完成, normalized.isNull()={normalized.isNull()}")
success = normalized.save(str(temp_file_path), "PNG")
self.logger.info(f"[QImage.save] normalized.save 结果: {success}")
if not success:
self.logger.warning("[QImage.save] 尝试原始 image.save 作为备选")
success = image.save(str(temp_file_path), "PNG")
self.logger.info(f"[QImage.save] image.save 备选结果: {success}")
if success and temp_file_path.exists() and temp_file_path.stat().st_size > 0:
self.uploaded_images.append(str(temp_file_path))
......@@ -1920,6 +2079,7 @@ class ImageGeneratorWindow(QMainWindow):
注意:Finder 复制的文件应通过 paste_from_clipboard 中的 hasUrls 分支处理,
不会走到这里。此方法只处理纯图像数据(截图、从应用复制的图片等)。
"""
self.logger.info("[clipboard] 开始获取剪贴板图像...")
clipboard = QApplication.clipboard()
# 方法1: 从 MIME data 读取图像
......@@ -1927,20 +2087,30 @@ class ImageGeneratorWindow(QMainWindow):
try:
mime_data = clipboard.mimeData()
if mime_data is not None:
available_formats = mime_data.formats()
self.logger.info(f"[clipboard] 可用 MIME 格式: {list(available_formats)}")
# 尝试从图像 MIME 格式读取原始字节
for mime_type in ("image/png", "image/jpeg", "image/bmp", "image/tiff", "application/x-qt-image"):
if mime_type in mime_data.formats():
raw_data = mime_data.data(mime_type)
self.logger.info(f"[clipboard] 从 {mime_type} 读取到 {len(raw_data)} bytes")
if raw_data and len(raw_data) > 0:
image = QImage()
if image.loadFromData(raw_data):
self.logger.info(f"[clipboard] MIME 方式成功, "
f"size={image.width()}x{image.height()}")
return image.copy()
# 尝试 hasImage + imageData
if mime_data.hasImage():
self.logger.info("[clipboard] 尝试 hasImage + imageData 方式")
image_data = mime_data.imageData()
if isinstance(image_data, QImage) and not image_data.isNull():
self.logger.info(f"[clipboard] imageData 方式成功, "
f"size={image_data.width()}x{image_data.height()}")
return image_data.copy()
else:
self.logger.info("[clipboard] mimeData 为 None")
except Exception as e:
self.logger.warning(f"MIME data 方式获取剪贴板图像失败: {e}")
......@@ -2023,11 +2193,20 @@ class ImageGeneratorWindow(QMainWindow):
temp_dir.mkdir(exist_ok=True)
temp_file_path = str(temp_dir / f"clipboard_{timestamp}.png")
self.logger.info(f"[QImage.save] paste_from_clipboard: 准备保存, "
f"image.isNull()={image.isNull()}, "
f"size={image.width()}x{image.height()}, "
f"format={image.format()}, "
f"target={temp_file_path}")
normalized = image.convertToFormat(QImage.Format.Format_ARGB32)
self.logger.info(f"[QImage.save] convertToFormat 完成, normalized.isNull()={normalized.isNull()}")
if not normalized.save(temp_file_path, "PNG"):
self.logger.warning("[QImage.save] normalized.save 失败,尝试原始 image.save")
if not image.save(temp_file_path, "PNG"):
self.logger.error("[QImage.save] image.save 也失败了")
QMessageBox.critical(self, "错误", "无法保存剪贴板图片")
return
self.logger.info("[QImage.save] paste_from_clipboard 保存成功")
self.uploaded_images.append(temp_file_path)
self.update_image_preview()
......@@ -2400,14 +2579,21 @@ class ImageGeneratorWindow(QMainWindow):
return
try:
self.logger.info(f"[display_image] 开始显示图片, 数据大小: {len(self.generated_image_bytes)} bytes")
# Load image from bytes
pixmap = QPixmap()
pixmap.loadFromData(self.generated_image_bytes)
load_ok = pixmap.loadFromData(self.generated_image_bytes)
self.logger.info(f"[display_image] loadFromData 结果: {load_ok}, "
f"pixmap.isNull()={pixmap.isNull()}, "
f"size={pixmap.width()}x{pixmap.height()}")
# Scale to fit preview area
available_width = self.preview_label.width() - 40
available_height = self.preview_label.height() - 40
self.logger.info(f"[display_image] 缩放: {pixmap.width()}x{pixmap.height()} -> "
f"max {available_width}x{available_height}")
scaled_pixmap = pixmap.scaled(
available_width, available_height,
Qt.KeepAspectRatio,
......@@ -2416,7 +2602,9 @@ class ImageGeneratorWindow(QMainWindow):
self.preview_label.setPixmap(scaled_pixmap)
self.preview_label.setStyleSheet("")
self.logger.info("[display_image] 图片显示完成")
except Exception as e:
self.logger.error(f"[display_image] 图片显示失败: {e}", exc_info=True)
QMessageBox.critical(self, "错误", f"图片显示失败: {str(e)}")
def open_fullsize_view(self, event):
......@@ -2524,8 +2712,10 @@ class ImageGeneratorWindow(QMainWindow):
def refresh_history(self):
"""Refresh the history list"""
self.logger.info("[refresh_history] 开始刷新历史记录列表...")
self.history_list.clear()
history_items = self.history_manager.load_history_index()
self.logger.info(f"[refresh_history] 加载到 {len(history_items)} 条历史记录")
for item in history_items:
# Create list item with icon
......@@ -2544,18 +2734,21 @@ class ImageGeneratorWindow(QMainWindow):
# Try to load thumbnail
if item.generated_image_path.exists():
try:
self.logger.debug(f"[refresh_history] 加载缩略图: {item.generated_image_path}")
pixmap = QPixmap(str(item.generated_image_path))
if not pixmap.isNull():
# Scale to thumbnail size
scaled_pixmap = pixmap.scaled(120, 120, Qt.KeepAspectRatio, Qt.SmoothTransformation)
list_item.setIcon(QIcon(scaled_pixmap))
else:
self.logger.warning(f"[refresh_history] 缩略图加载为空: {item.generated_image_path}")
# Create placeholder icon
list_item.setIcon(self.create_placeholder_icon("图片\n加载失败"))
except Exception as e:
print(f"Failed to load thumbnail for {item.timestamp}: {e}")
self.logger.error(f"[refresh_history] 缩略图加载异常 {item.timestamp}: {e}")
list_item.setIcon(self.create_placeholder_icon("图片\n错误"))
else:
self.logger.warning(f"[refresh_history] 图片文件不存在: {item.generated_image_path}")
list_item.setIcon(self.create_placeholder_icon("图片\n不存在"))
# Add text info below the icon
......@@ -3994,10 +4187,25 @@ class StyleDesignerTab(QWidget):
def main():
"""Main application entry point"""
# 初始化日志系统
# 第0步:启用崩溃诊断(最早执行,不依赖任何其他初始化)
print("[BOOT] Phase 0: 启用崩溃诊断...")
_enable_crash_diagnostics()
# 第1步:初始化日志系统
print("[BOOT] Phase 1: 初始化日志系统...")
if not init_logging():
print("警告:日志系统初始化失败,将继续运行但不记录日志")
logger = logging.getLogger(__name__)
logger.info("[BOOT] Phase 1 完成: 日志系统就绪")
# 第2步:记录系统环境信息
logger.info("[BOOT] Phase 2: 记录系统环境...")
_log_system_info()
# 第3步:加载配置
logger.info("[BOOT] Phase 3: 加载配置文件...")
# Load config for database info
config_dir = Path('.')
if getattr(sys, 'frozen', False):
......@@ -4062,12 +4270,20 @@ def main():
db_config = config.get("db_config")
last_user = config.get("last_user", "")
saved_password_hash = config.get("saved_password_hash", "")
logger.info(f"[BOOT] Phase 3 完成: 配置已加载, db_config={'有' if db_config else '无'}")
except Exception as e:
logger.error(f"[BOOT] Phase 3 失败: 配置加载异常: {e}")
print(f"Failed to load config: {e}")
else:
logger.warning(f"[BOOT] Phase 3: 配置文件不存在: {config_path}")
# Create QApplication
# 第4步:创建 QApplication
logger.info("[BOOT] Phase 4: 创建 QApplication...")
app = QApplication(sys.argv)
logger.info("[BOOT] Phase 4 完成: QApplication 已创建")
# 第5步:设置应用图标
logger.info("[BOOT] Phase 5: 设置应用图标...")
# Set application icon
if getattr(sys, 'frozen', False):
# Running as compiled executable
......@@ -4089,20 +4305,30 @@ def main():
if icon_path and os.path.exists(icon_path):
app_icon = QIcon(icon_path)
app.setWindowIcon(app_icon)
logger.info(f"[BOOT] Phase 5 完成: 图标已设置 ({icon_path})")
else:
logger.info(f"[BOOT] Phase 5: 跳过图标设置 (icon_path={icon_path})")
# Check database config - if missing, start app without database authentication
if not db_config:
logger.warning("[BOOT] 无数据库配置,跳过登录直接进入主窗口")
print("警告:未找到数据库配置,将跳过数据库认证")
# Create main window directly without login
logger.info("[BOOT] Phase 6: 创建主窗口(无登录模式)...")
main_window = ImageGeneratorWindow()
logger.info("[BOOT] Phase 6 完成: 主窗口已创建")
main_window.show()
logger.info("[BOOT] Phase 7: 主窗口已显示,进入事件循环")
sys.exit(app.exec())
# Show login dialog
# 第6步:显示登录对话框
logger.info("[BOOT] Phase 6: 创建登录对话框...")
login_dialog = LoginDialog(db_config, last_user, saved_password_hash)
logger.info("[BOOT] Phase 6 完成: 登录对话框已创建,等待用户操作...")
if login_dialog.exec() == QDialog.Accepted:
# Login successful
logger.info("[BOOT] 登录成功")
authenticated_user = login_dialog.authenticated_user
remember_user = login_dialog.get_remember_user()
remember_password = login_dialog.get_remember_password()
......@@ -4126,17 +4352,24 @@ def main():
with open(config_path, 'w', encoding='utf-8') as f:
json.dump(config, f, indent=2, ensure_ascii=False)
logger.info("[BOOT] 凭证已保存")
except Exception as e:
logger.error(f"[BOOT] 凭证保存失败: {e}")
print(f"Failed to save config: {e}")
# Show main window
# 第7步:创建主窗口
logger.info("[BOOT] Phase 7: 创建主窗口...")
main_window = ImageGeneratorWindow()
main_window.authenticated_user = authenticated_user # 设置登录用户名
logger.info("[BOOT] Phase 7 完成: 主窗口已创建")
main_window.show()
logger.info("[BOOT] Phase 8: 主窗口已显示,进入事件循环")
sys.exit(app.exec())
else:
# Login cancelled or failed
logger.info("[BOOT] 登录取消或失败,退出")
sys.exit(0)
......