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
1 -------------------------------------
2 Translated Report (Full Report Below)
3 -------------------------------------
4 Process: ZB100ImageGenerator [29255]
5 Path: /Applications/ZB100ImageGenerator.app/Contents/MacOS/ZB100ImageGenerator
6 Identifier: ZB100ImageGenerator
7 Version: 0.0.0 (???)
8 Code Type: ARM-64 (Native)
9 Role: Foreground
10 Parent Process: launchd [1]
11 Coalition: ZB100ImageGenerator [23215]
12 User ID: 501
13
14 Date/Time: 2026-03-02 10:35:51.4387 +0800
15 Launch Time: 2026-03-02 10:35:28.8650 +0800
16 Hardware Model: MacBookPro18,3
17 OS Version: macOS 26.3 (25D125)
18 Release Type: User
19
20 Crash Reporter Key: 8D4A823C-EBFA-8F26-C4A4-87106AC0521E
21 Incident Identifier: F120429D-322E-44C6-911C-28B5D605F922
22
23 Sleep/Wake UUID: 01A35EA3-D7F7-4A92-8298-02E32F5B23E5
24
25 Time Awake Since Boot: 98000 seconds
26 Time Since Wake: 3534 seconds
27
28 System Integrity Protection: enabled
29
30 Triggered by Thread: 0, Dispatch Queue: com.apple.main-thread
31
32 Exception Type: EXC_BAD_ACCESS (SIGSEGV)
33 Exception Subtype: KERN_INVALID_ADDRESS at 0x000000010f170da4
34 Exception Codes: 0x0000000000000001, 0x000000010f170da4
35
36 Termination Reason: Namespace SIGNAL, Code 11, Segmentation fault: 11
37 Terminating Process: exc handler [29255]
38
39
40 VM Region Info: 0x10f170da4 is not in any region. Bytes after previous region: 3493 Bytes before following region: 29276
41 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
42 __LINKEDIT 10f160000-10f170000 [ 64K] r--/rwx SM=COW /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libjpeg.62.4.0.dylib
43 ---> GAP OF 0x8000 BYTES
44 CoreAnimation 10f178000-10f194000 [ 112K] rw-/rwx SM=PRV
45
46 Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
47 0 libsystem_platform.dylib 0x18fdcd410 _platform_memmove + 144
48 1 QtGui 0x11089f7e4 0x11028c000 + 6371300
49 2 QtGui 0x11069c02c 0x11028c000 + 4259884
50 3 QtGui 0x11069d0b8 0x11028c000 + 4264120
51 4 QtGui 0x1102e333c QImageWriter::write(QImage const&) + 784
52 5 QtGui 0x1102bf86c QImage::save(QString const&, char const*, int) const + 184
53 6 QtGui.abi3.so 0x110d1e418 Sbk_QImageFunc_save(_object*, _object*, _object*) + 1144
54 7 Python 0x10a29cda8 cfunction_call + 6 Python 0x10a252624 _PyObject_MakeTpCall + 280
55 9 Python 0x10a32d478 _PyEval_EvalFrameDefault + 24424
56 10 Python 0x10a33440c _PyEval_Vector + 116
57 11 Python 0x10a255c38 method_vectorcall + 380
58 12 libpyside6.abi3.6.10.dylib 0x10abec1a4 callPythonMetaMethodHelper(QList<QByteArray> const&, char const*, void**, _object*) + 368
59 13 libpyside6.abi3.6.10.dylib 0x10abeb94c PySide::SignalManager::callPythonMetaMethod(QMetaMethod, void**, _object*) + 84
60 14 libpyside6.abi3.6.10.dylib 0x10abeb5d0 SignalManagerPrivate::qtMethodMetacall(QObject*, int, void**) + 824
61 15 QtCore 0x10c6f333c 0x10c608000 + 963388
62 16 QtWidgets 0x10fdcb9b0 0x10fcbc000 + 1112496
63 17 QtWidgets 0x10fdcb7e8 0x10fcbc000 + 1112040
64 18 QtWidgets 0x10fdcc834 QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 232
65 19 QtWidgets.abi3.so 0x10f6257d8 QPushButtonWrapper::mouseReleaseEvent(QMouseEvent*) + 132
66 20 QtWidgets 0x10fd1acf0 QWidget::event(QEvent*) + 132
67 21 QtWidgets.abi3.so 0x10f6242bc QPushButtonWrapper::event(QEvent*) + 132
68 22 QtWidgets 0x10fccc014 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 332
69 23 QtWidgets 0x10fcce13c QApplication::notify(QObject*, QEvent*) + 4820
70 24 QtWidgets.abi3.so 0x10f83c964 QApplicationWrapper::notify(QObject*, QEvent*) + 180
71 25 QtCore 0x10c6a0fa4 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) + 176
72 26 QtWidgets 0x10fccc66c QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 892
73 27 QtWidgets 0x10fd310f0 0x10fcbc000 + 479472
74 28 QtWidgets 0x10fd3033c 0x10fcbc000 + 475964
75 29 QtWidgets 0x10fccc014 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 332
76 30 QtWidgets 0x10fccd06c QApplication::notify(QObject*, QEvent*) + 516
77 31 QtWidgets.abi3.so 0x10f83c964 QApplicationWrapper::notify(QObject*, QEvent*) + 180
78 32 QtCore 0x10c6a0fa4 QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) + 176
79 33 QtGui 0x110319db4 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 1968
80 34 QtGui 0x11037c1cc QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 408
81 35 libqcocoa.dylib 0x112144498 0x11212c000 + 99480
82 36 CoreFoundation 0x18fe62a08 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
83 37 CoreFoundation 0x18fe6299c __CFRunLoopDoSource0 + 172
84 38 CoreFoundation 0x18fe62708 __CFRunLoopDoSources0 + 232
85 39 CoreFoundation 0x18fe61398 __CFRunLoopRun + 820
86 40 CoreFoundation 0x18ff1bf3c _CFRunLoopRunSpecificWithOptions + 532
87 41 HIToolbox 0x19c99d790 RunCurrentEventLoopInMode + 316
88 42 HIToolbox 0x19c9a09e0 ReceiveNextEventCommon + 272
89 43 HIToolbox 0x19cb2ab64 _BlockUntilNextEventMatchingListInMode + 48
90 44 AppKit 0x19477d014 _DPSBlockUntilNextEventMatchingListInMode + 236
91 45 AppKit 0x19427ae48 _DPSNextEvent + 588
92 46 AppKit 0x194d41e8c -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
93 47 AppKit 0x194d41b98 -[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:] + 72
94 48 AppKit 0x194273780 -[NSApplication run] + 368
95 49 libqcocoa.dylib 0x112141d1c 0x11212c000 + 89372
96 50 QtCore 0x10c6aa0f8 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 588
97 51 QtCore 0x10c6a0b70 QCoreApplication::exec() + 228
98 52 QtWidgets.abi3.so 0x10f870e6c Sbk_QApplicationFunc_exec(_object*) + 44
99 53 Python 0x10a29d7b8 cfunction_vectorcall_NOARGS + 88
100 54 Python 0x10a32cc04 _PyEval_EvalFrameDefault + 22260
101 55 Python 0x10a3268e4 PyEval_EvalCode + 168
102 56 ZB100ImageGenerator 0x1048cf210 0x1048cc000 + 12816
103 57 ZB100ImageGenerator 0x1048cfb00 0x1048cc000 + 15104
104 58 dyld 0x18f9f9d54 start + 7184
105
106 Thread 1:
107
108 Thread 2:
109
110 Thread 3:: com.apple.NSEventThread
111 0 libsystem_kernel.dylib 0x18fd80c34 mach_msg2_trap + 8
112 1 libsystem_kernel.dylib 0x18fd93028 mach_msg2_internal + 76
113 2 libsystem_kernel.dylib 0x18fd8998c mach_msg_overwrite + 484
114 3 libsystem_kernel.dylib 0x18fd80fb4 mach_msg + 24
115 4 CoreFoundation 0x18fe62bb0 __CFRunLoopServiceMachPort + 160
116 5 CoreFoundation 0x18fe61508 __CFRunLoopRun + 1188
117 6 CoreFoundation 0x18ff1bf3c _CFRunLoopRunSpecificWithOptions + 532
118 7 AppKit 0x19430aa34 _NSEventThread + 184
119 8 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
120 9 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
121
122 Thread 4:
123
124 Thread 5:: Thread (pooled)
125 0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
126 1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
127 2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
128 3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
129 4 QtCore 0x10c79ba64 0x10c608000 + 1653348
130 5 QtCore 0x10c836dec 0x10c608000 + 2289132
131 6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
132 7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
133
134 Thread 6:: Thread (pooled)
135 0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
136 1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
137 2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
138 3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
139 4 QtCore 0x10c79ba64 0x10c608000 + 1653348
140 5 QtCore 0x10c836dec 0x10c608000 + 2289132
141 6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
142 7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
143
144 Thread 7:: Thread (pooled)
145 0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
146 1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
147 2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
148 3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
149 4 QtCore 0x10c79ba64 0x10c608000 + 1653348
150 5 QtCore 0x10c836dec 0x10c608000 + 2289132
151 6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
152 7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
153
154 Thread 8:: Thread (pooled)
155 0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
156 1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
157 2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
158 3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
159 4 QtCore 0x10c79ba64 0x10c608000 + 1653348
160 5 QtCore 0x10c836dec 0x10c608000 + 2289132
161 6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
162 7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
163
164 Thread 9:: Thread (pooled)
165 0 libsystem_kernel.dylib 0x18fd844f8 __psynch_cvwait + 8
166 1 libsystem_pthread.dylib 0x18fdc40dc _pthread_cond_wait + 984
167 2 QtCore 0x10c83f8d8 0x10c608000 + 2324696
168 3 QtCore 0x10c83f768 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108
169 4 QtCore 0x10c79ba64 0x10c608000 + 1653348
170 5 QtCore 0x10c836dec 0x10c608000 + 2289132
171 6 libsystem_pthread.dylib 0x18fdc3c08 _pthread_start + 136
172 7 libsystem_pthread.dylib 0x18fdbeba8 thread_start + 8
173
174
175 Thread 0 crashed with ARM Thread State (64-bit):
176 x0: 0x0000000ac98c9c00 x1: 0x000000010f170da4 x2: 0x0000000000000c48 x3: 0x0000000ac98c9c20
177 x4: 0xfffffff6458a71a4 x5: 0x0000000000000000 x6: 0xffffffffbfc007ff x7: 0xfffff0003ffff800
178 x8: 0x0000000000000001 x9: 0x0000000000000000 x10: 0x0000000000000002 x11: 0x0000000000000000
179 x12: 0x00000000000022a0 x13: 0x99bcde41dd481c77 x14: 0x0000000105811198 x15: 0x0000000ac98c8000
180 x16: 0x000000018fdcd380 x17: 0x00000000090022a0 x18: 0x0000000000000000 x19: 0x0000000ac5fa3300
181 x20: 0x0000000000000c48 x21: 0x0000000ac5fade00 x22: 0x000000010f170da4 x23: 0x0000000ac98c9c00
182 x24: 0x0000000ac58023a0 x25: 0x0000000000000c48 x26: 0x0000000000000008 x27: 0x0000000ac5fade00
183 x28: 0x000000016b52f948 fp: 0x000000016b52f3e0 lr: 0x000000011089f7e4
184 sp: 0x000000016b52f3a0 pc: 0x000000018fdcd410 cpsr: 0x80001000
185 far: 0x000000010f170da4 esr: 0x92000007 (Data Abort) byte read Translation fault
186
187 Binary Images:
188 0x1048cc000 - 0x1048d7fff ZB100ImageGenerator (0.0.0) <c52c7158-dde1-b7ee-a20c-2d7e279f8b2f> /Applications/ZB100ImageGenerator.app/Contents/MacOS/ZB100ImageGenerator
189 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
190 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
191 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
192 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
193 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
194 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
195 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
196 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
197 0x109f40000 - 0x109f7ffff liblzma.5.dylib (*) <83186775-f820-338e-ae04-56e177aabd5e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/liblzma.5.dylib
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 0x10ae58000 - 0x10b197fff libcrypto.3.dylib (*) <efba4c7a-a8ab-3429-8076-3bf9f22bd40b> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libcrypto.3.dylib
214 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
215 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
216 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
217 0x10ac48000 - 0x10acdbfff libssl.3.dylib (*) <810d99f1-2504-3db7-9357-4bce9d47fc76> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libssl.3.dylib
218 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
219 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
220 0x10ab10000 - 0x10ab13fff Shiboken.abi3.so (*) <34590199-3ce2-32b1-aa23-b4a50138a445> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/shiboken6/Shiboken.abi3.so
221 0x10b400000 - 0x10b44ffff libshiboken6.abi3.6.10.dylib (*) <f0b78160-24ab-3c2d-bccc-4ef944f40d30> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/shiboken6/libshiboken6.abi3.6.10.dylib
222 0x10baf4000 - 0x10be47fff QtCore.abi3.so (*) <62750a98-bc70-38bc-96d4-b518d7fefded> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtCore.abi3.so
223 0x10abd8000 - 0x10ac17fff libpyside6.abi3.6.10.dylib (*) <1da89093-9eca-3280-a410-df22a1865bbd> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/libpyside6.abi3.6.10.dylib
224 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
225 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
226 0x10f470000 - 0x10f98bfff QtWidgets.abi3.so (*) <188a1c2d-f44f-3e57-bd21-a37a7a840d28> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtWidgets.abi3.so
227 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
228 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
229 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
230 0x110a9c000 - 0x110e8bfff QtGui.abi3.so (*) <19d1f0df-5853-3f4e-92f0-cf3d8ba3aeb4> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/QtGui.abi3.so
231 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
232 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
233 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
234 0x10b5b0000 - 0x10b5cbfff libmpdec.4.dylib (*) <52d16117-fcf0-3704-984f-ce4454923a78> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/libmpdec.4.dylib
235 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
236 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
237 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
238 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
239 0x10f04c000 - 0x10f0a7fff _imaging.cpython-311-darwin.so (*) <5b35d4aa-1795-338c-8d64-895c72f8f320> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/_imaging.cpython-311-darwin.so
240 0x10f198000 - 0x10f23ffff libtiff.6.dylib (*) <5d94e595-edbf-36da-9296-dc1777ec485e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libtiff.6.dylib
241 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
242 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
243 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
244 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
245 0x10b768000 - 0x10b76bfff libXau.6.dylib (*) <32a172ad-f11b-381b-9270-3f9a195cbe7f> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PIL/__dot__dylibs/libXau.6.dylib
246 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
247 0x10b77c000 - 0x10b77ffff speedups.cpython-311-darwin.so (*) <19082575-cd71-3bcc-bcf2-30ef685bb4c7> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/websockets/speedups.cpython-311-darwin.so
248 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
249 0x10ba80000 - 0x10ba83fff md.cpython-311-darwin.so (*) <f7af70dc-368d-3224-b226-a66b3232bf98> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/charset_normalizer/md.cpython-311-darwin.so
250 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
251 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
252 0x11212c000 - 0x1121d7fff libqcocoa.dylib (*) <3dd57985-5eac-307d-a26f-1a4f2a8ce5dd> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/plugins/platforms/libqcocoa.dylib
253 0x10c5f4000 - 0x10c5fffff libobjc-trampolines.dylib (*) <f26af954-d1f7-31aa-9981-1bad216149d9> /usr/lib/libobjc-trampolines.dylib
254 0x1120cc000 - 0x1120effff libqmacstyle.dylib (*) <3124ba49-4f2c-36d2-9fd9-f382a264172e> /Applications/ZB100ImageGenerator.app/Contents/Frameworks/PySide6/Qt/plugins/styles/libqmacstyle.dylib
255 0x11fdc8000 - 0x120517fff com.apple.AGXMetalG13X (345.20.4) <554a66e8-d43d-3916-af8a-243138a2955d> /System/Library/Extensions/AGXMetalG13X.bundle/Contents/MacOS/AGXMetalG13X
256 0x18fdca000 - 0x18fdd24af libsystem_platform.dylib (*) <62c9cd37-272d-3d2d-9a1c-6f4ef24f7ec7> /usr/lib/system/libsystem_platform.dylib
257 0x18fe03000 - 0x19034c2bf com.apple.CoreFoundation (6.9) <02762698-9950-3c66-8116-a3a565972a49> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
258 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
259 0x19425b000 - 0x195986bdf com.apple.AppKit (6.9) <07dcc67f-25b2-3f2c-b92e-6fc579455989> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
260 0x18f9f1000 - 0x18fa90713 dyld (*) <bc4db5f4-1c64-3706-8006-73b78c3e1f1a> /usr/lib/dyld
261 0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
262 0x18fd80000 - 0x18fdbc49f libsystem_kernel.dylib (*) <b809799c-0ec9-3ee1-b730-342bdbf14e03> /usr/lib/system/libsystem_kernel.dylib
263 0x18fdbd000 - 0x18fdc9acb libsystem_pthread.dylib (*) <0596a7b6-bce2-3f06-a2e8-3eaab5371ed8> /usr/lib/system/libsystem_pthread.dylib
264
265 External Modification Summary:
266 Calls made by other processes targeting this process:
267 task_for_pid: 0
268 thread_create: 0
269 thread_set_state: 0
270 Calls made by this process:
271 task_for_pid: 0
272 thread_create: 0
273 thread_set_state: 0
274 Calls made by all processes on this machine:
275 task_for_pid: 0
276 thread_create: 0
277 thread_set_state: 0
278
279 VM Region Summary:
280 ReadOnly portion of Libraries: Total=1.9G resident=0K(0%) swapped_out_or_unallocated=1.9G(100%)
281 Writable regions: Total=262.6M written=771K(0%) resident=771K(0%) swapped_out=0K(0%) unallocated=261.8M(100%)
282
283 VIRTUAL REGION
284 REGION TYPE SIZE COUNT (non-coalesced)
285 =========== ======= =======
286 .note.gnu.proper 320 1
287 Accelerate framework 128K 1
288 Activity Tracing 256K 1
289 AttributeGraph Data 1024K 1
290 ColorSync 16K 1
291 CoreAnimation 688K 25
292 CoreGraphics 48K 3
293 CoreServices 624K 2
294 CoreUI image data 1824K 12
295 Foundation 16K 1
296 Image IO 96K 6
297 Kernel Alloc Once 32K 1
298 MALLOC 213.0M 47
299 MALLOC guard page 3760K 4
300 STACK GUARD 56.2M 10
301 Stack 12.8M 11
302 VM_ALLOCATE 33.2M 44
303 __AUTH 5755K 634
304 __AUTH_CONST 87.7M 1010
305 __CTF 824 1
306 __DATA 37.6M 1032
307 __DATA_CONST 35.0M 1083
308 __DATA_DIRTY 8339K 870
309 __FONT_DATA 2352 1
310 __INFO_FILTER 8 1
311 __LINKEDIT 611.9M 69
312 __OBJC_RO 78.4M 1
313 __OBJC_RW 2571K 1
314 __TEXT 1.3G 1106
315 __TPRO_CONST 128K 2
316 dyld private memory 128K 1
317 mapped file 588.9M 79
318 page table in kernel 771K 1
319 shared memory 1552K 18
320 =========== ======= =======
321 TOTAL 3.0G 6081
322
323
324 -----------
325 Full Report
326 -----------
327
328 {"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"}
329 {
330 "uptime" : 98000,
331 "procRole" : "Foreground",
332 "version" : 2,
333 "userID" : 501,
334 "deployVersion" : 210,
335 "modelCode" : "MacBookPro18,3",
336 "coalitionID" : 23215,
337 "osVersion" : {
338 "train" : "macOS 26.3",
339 "build" : "25D125",
340 "releaseType" : "User"
341 },
342 "captureTime" : "2026-03-02 10:35:51.4387 +0800",
343 "codeSigningMonitor" : 1,
344 "incident" : "F120429D-322E-44C6-911C-28B5D605F922",
345 "pid" : 29255,
346 "translated" : false,
347 "cpuType" : "ARM-64",
348 "procLaunch" : "2026-03-02 10:35:28.8650 +0800",
349 "procStartAbsTime" : 2367477963258,
350 "procExitAbsTime" : 2368019401119,
351 "procName" : "ZB100ImageGenerator",
352 "procPath" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/MacOS\/ZB100ImageGenerator",
353 "bundleInfo" : {"CFBundleShortVersionString":"0.0.0","CFBundleIdentifier":"ZB100ImageGenerator"},
354 "storeInfo" : {"deviceIdentifierForVendor":"C11E0BD9-18A4-5928-B47F-C37A69EBD06C","thirdParty":true},
355 "parentProc" : "launchd",
356 "parentPid" : 1,
357 "coalitionName" : "ZB100ImageGenerator",
358 "crashReporterKey" : "8D4A823C-EBFA-8F26-C4A4-87106AC0521E",
359 "appleIntelligenceStatus" : {"reasons":["regionIneligible","countryBillingIneligible","countryLocationIneligible"],"state":"unavailable"},
360 "developerMode" : 1,
361 "codeSigningID" : "ZB100ImageGenerator",
362 "codeSigningTeamID" : "",
363 "codeSigningFlags" : 570425857,
364 "codeSigningValidationCategory" : 10,
365 "codeSigningTrustLevel" : 4294967295,
366 "codeSigningAuxiliaryInfo" : 0,
367 "instructionByteStream" : {"beforePC":"QoAA8Wj\/\/1QhAAKLIgxArGAEAKxjAAKLYgwBrMADX9ZjgACRY+h7kg==","atPC":"IgxArGUAAMshAAWLIARArCGAAJFCAAXLAgwArUIAAfHpAABUYAQArQ=="},
368 "bootSessionUUID" : "C8E0C7B1-3617-4C72-B856-7C2C4658BFB9",
369 "wakeTime" : 3534,
370 "sleepWakeUUID" : "01A35EA3-D7F7-4A92-8298-02E32F5B23E5",
371 "sip" : "enabled",
372 "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 ",
373 "exception" : {"codes":"0x0000000000000001, 0x000000010f170da4","rawCodes":[1,4548136356],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x000000010f170da4"},
374 "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":29255},
375 "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 ",
376 "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},
377 "faultingThread" : 0,
378 "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}]}],
379 "usedImages" : [
380 {
381 "source" : "P",
382 "arch" : "arm64",
383 "base" : 4371300352,
384 "CFBundleShortVersionString" : "0.0.0",
385 "CFBundleIdentifier" : "ZB100ImageGenerator",
386 "size" : 49152,
387 "uuid" : "c52c7158-dde1-b7ee-a20c-2d7e279f8b2f",
388 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/MacOS\/ZB100ImageGenerator",
389 "name" : "ZB100ImageGenerator"
390 },
391 {
392 "source" : "P",
393 "arch" : "arm64",
394 "base" : 4464787456,
395 "CFBundleShortVersionString" : "3.11.14, (c) 2001-2023 Python Software Foundation.",
396 "CFBundleIdentifier" : "org.python.python",
397 "size" : 2785280,
398 "uuid" : "5dd0342d-9c71-3845-aa0d-526811a6f48e",
399 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/Python.framework\/Versions\/3.11\/Python",
400 "name" : "Python",
401 "CFBundleVersion" : "3.11.14"
402 },
403 {
404 "source" : "P",
405 "arch" : "arm64",
406 "base" : 4381130752,
407 "size" : 32768,
408 "uuid" : "28ac7ddf-cf6f-365d-92eb-3d943594095c",
409 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_struct.cpython-311-darwin.so",
410 "name" : "_struct.cpython-311-darwin.so"
411 },
412 {
413 "source" : "P",
414 "arch" : "arm64",
415 "base" : 4382277632,
416 "size" : 32768,
417 "uuid" : "7171b4cf-95bb-33a2-9ed1-0bb498c37fa2",
418 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/zlib.cpython-311-darwin.so",
419 "name" : "zlib.cpython-311-darwin.so"
420 },
421 {
422 "source" : "P",
423 "arch" : "arm64",
424 "base" : 4382539776,
425 "size" : 81920,
426 "uuid" : "f6f745f4-fffa-344a-ad04-d11ca1277996",
427 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_ctypes.cpython-311-darwin.so",
428 "name" : "_ctypes.cpython-311-darwin.so"
429 },
430 {
431 "source" : "P",
432 "arch" : "arm64",
433 "base" : 4382375936,
434 "size" : 16384,
435 "uuid" : "bb3e6bcc-6286-3067-919b-60acb657cf2c",
436 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_opcode.cpython-311-darwin.so",
437 "name" : "_opcode.cpython-311-darwin.so"
438 },
439 {
440 "source" : "P",
441 "arch" : "arm64",
442 "base" : 4382703616,
443 "size" : 32768,
444 "uuid" : "eb397fda-feba-3c96-af79-24283a578fae",
445 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/binascii.cpython-311-darwin.so",
446 "name" : "binascii.cpython-311-darwin.so"
447 },
448 {
449 "source" : "P",
450 "arch" : "arm64",
451 "base" : 4382457856,
452 "size" : 16384,
453 "uuid" : "71f2bcdd-2777-3374-abd2-cf8397639bb9",
454 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_bz2.cpython-311-darwin.so",
455 "name" : "_bz2.cpython-311-darwin.so"
456 },
457 {
458 "source" : "P",
459 "arch" : "arm64",
460 "base" : 4382801920,
461 "size" : 32768,
462 "uuid" : "fd1809c7-edb3-3105-9d02-b62e8b772261",
463 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_lzma.cpython-311-darwin.so",
464 "name" : "_lzma.cpython-311-darwin.so"
465 },
466 {
467 "source" : "P",
468 "arch" : "arm64",
469 "base" : 4461953024,
470 "size" : 262144,
471 "uuid" : "83186775-f820-338e-ae04-56e177aabd5e",
472 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/liblzma.5.dylib",
473 "name" : "liblzma.5.dylib"
474 },
475 {
476 "source" : "P",
477 "arch" : "arm64",
478 "base" : 4382900224,
479 "size" : 16384,
480 "uuid" : "99166977-a265-3101-aab7-971a24ad32c0",
481 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_typing.cpython-311-darwin.so",
482 "name" : "_typing.cpython-311-darwin.so"
483 },
484 {
485 "source" : "P",
486 "arch" : "arm64",
487 "base" : 4387504128,
488 "size" : 81920,
489 "uuid" : "56d3cc61-cb6a-3b02-bfaf-e8dd92b9bfea",
490 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_pickle.cpython-311-darwin.so",
491 "name" : "_pickle.cpython-311-darwin.so"
492 },
493 {
494 "source" : "P",
495 "arch" : "arm64",
496 "base" : 4463345664,
497 "size" : 65536,
498 "uuid" : "c8a6e9b9-f62f-351f-a5c3-62e20524b33b",
499 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_socket.cpython-311-darwin.so",
500 "name" : "_socket.cpython-311-darwin.so"
501 },
502 {
503 "source" : "P",
504 "arch" : "arm64",
505 "base" : 4383096832,
506 "size" : 49152,
507 "uuid" : "1839ded9-d923-3cdc-b70d-865ec4e851e2",
508 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/math.cpython-311-darwin.so",
509 "name" : "math.cpython-311-darwin.so"
510 },
511 {
512 "source" : "P",
513 "arch" : "arm64",
514 "base" : 4382982144,
515 "size" : 32768,
516 "uuid" : "cd553e77-c615-34b7-8f1a-f6e35e87a169",
517 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/select.cpython-311-darwin.so",
518 "name" : "select.cpython-311-darwin.so"
519 },
520 {
521 "source" : "P",
522 "arch" : "arm64",
523 "base" : 4464541696,
524 "size" : 32768,
525 "uuid" : "a3f156ea-29be-3fc6-9864-30c5bf9dadf3",
526 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/array.cpython-311-darwin.so",
527 "name" : "array.cpython-311-darwin.so"
528 },
529 {
530 "source" : "P",
531 "arch" : "arm64",
532 "base" : 4464640000,
533 "size" : 16384,
534 "uuid" : "c56288da-1a63-363e-942b-3b620cebc1e2",
535 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/fcntl.cpython-311-darwin.so",
536 "name" : "fcntl.cpython-311-darwin.so"
537 },
538 {
539 "source" : "P",
540 "arch" : "arm64",
541 "base" : 4469997568,
542 "size" : 16384,
543 "uuid" : "dff6ea3f-cc9d-3d12-9e2d-8258318fb4a2",
544 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_posixsubprocess.cpython-311-darwin.so",
545 "name" : "_posixsubprocess.cpython-311-darwin.so"
546 },
547 {
548 "source" : "P",
549 "arch" : "arm64",
550 "base" : 4470079488,
551 "size" : 16384,
552 "uuid" : "0f541801-df42-3813-8dd1-ccaa2f444faf",
553 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_bisect.cpython-311-darwin.so",
554 "name" : "_bisect.cpython-311-darwin.so"
555 },
556 {
557 "source" : "P",
558 "arch" : "arm64",
559 "base" : 4470161408,
560 "size" : 16384,
561 "uuid" : "0fd0a29e-7ebe-3007-b4f0-abd2b76e1cd1",
562 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_random.cpython-311-darwin.so",
563 "name" : "_random.cpython-311-darwin.so"
564 },
565 {
566 "source" : "P",
567 "arch" : "arm64",
568 "base" : 4470243328,
569 "size" : 16384,
570 "uuid" : "e19e5d89-2bc8-32ab-a48a-7562920fece6",
571 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_sha512.cpython-311-darwin.so",
572 "name" : "_sha512.cpython-311-darwin.so"
573 },
574 {
575 "source" : "P",
576 "arch" : "arm64",
577 "base" : 4471373824,
578 "size" : 16384,
579 "uuid" : "b6e9e162-e0ac-324c-916b-cf5ffa6192af",
580 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_heapq.cpython-311-darwin.so",
581 "name" : "_heapq.cpython-311-darwin.so"
582 },
583 {
584 "source" : "P",
585 "arch" : "arm64",
586 "base" : 4471455744,
587 "size" : 16384,
588 "uuid" : "942664e3-4e11-3c04-9858-aba0554f3603",
589 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_queue.cpython-311-darwin.so",
590 "name" : "_queue.cpython-311-darwin.so"
591 },
592 {
593 "source" : "P",
594 "arch" : "arm64",
595 "base" : 4471537664,
596 "size" : 16384,
597 "uuid" : "9653800d-4d83-3638-9eec-a1528f9d3bc9",
598 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/grp.cpython-311-darwin.so",
599 "name" : "grp.cpython-311-darwin.so"
600 },
601 {
602 "source" : "P",
603 "arch" : "arm64",
604 "base" : 4472782848,
605 "size" : 32768,
606 "uuid" : "4e81b9a5-a890-3a3e-ad15-75ef5613e601",
607 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_hashlib.cpython-311-darwin.so",
608 "name" : "_hashlib.cpython-311-darwin.so"
609 },
610 {
611 "source" : "P",
612 "arch" : "arm64",
613 "base" : 4477779968,
614 "size" : 3407872,
615 "uuid" : "efba4c7a-a8ab-3429-8076-3bf9f22bd40b",
616 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libcrypto.3.dylib",
617 "name" : "libcrypto.3.dylib"
618 },
619 {
620 "source" : "P",
621 "arch" : "arm64",
622 "base" : 4472668160,
623 "size" : 32768,
624 "uuid" : "c5f09022-41e2-376e-92ae-ff2a54233454",
625 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_blake2.cpython-311-darwin.so",
626 "name" : "_blake2.cpython-311-darwin.so"
627 },
628 {
629 "source" : "P",
630 "arch" : "arm64",
631 "base" : 4474093568,
632 "size" : 65536,
633 "uuid" : "480f7c03-8f14-3917-a2f3-c390567b4fee",
634 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_datetime.cpython-311-darwin.so",
635 "name" : "_datetime.cpython-311-darwin.so"
636 },
637 {
638 "source" : "P",
639 "arch" : "arm64",
640 "base" : 4474470400,
641 "size" : 114688,
642 "uuid" : "97d98a89-d2ea-39a1-bfc4-721d12bf2fa4",
643 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_ssl.cpython-311-darwin.so",
644 "name" : "_ssl.cpython-311-darwin.so"
645 },
646 {
647 "source" : "P",
648 "arch" : "arm64",
649 "base" : 4475617280,
650 "size" : 606208,
651 "uuid" : "810d99f1-2504-3db7-9357-4bce9d47fc76",
652 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libssl.3.dylib",
653 "name" : "libssl.3.dylib"
654 },
655 {
656 "source" : "P",
657 "arch" : "arm64",
658 "base" : 4473946112,
659 "size" : 16384,
660 "uuid" : "511482db-8e3f-3fef-b74d-a908b478dfbb",
661 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_scproxy.cpython-311-darwin.so",
662 "name" : "_scproxy.cpython-311-darwin.so"
663 },
664 {
665 "source" : "P",
666 "arch" : "arm64",
667 "base" : 4474241024,
668 "size" : 32768,
669 "uuid" : "7af5e8e4-c80d-3d26-aa09-2b5ce672ed20",
670 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_csv.cpython-311-darwin.so",
671 "name" : "_csv.cpython-311-darwin.so"
672 },
673 {
674 "source" : "P",
675 "arch" : "arm64",
676 "base" : 4474339328,
677 "size" : 16384,
678 "uuid" : "34590199-3ce2-32b1-aa23-b4a50138a445",
679 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/shiboken6\/Shiboken.abi3.so",
680 "name" : "Shiboken.abi3.so"
681 },
682 {
683 "source" : "P",
684 "arch" : "arm64",
685 "base" : 4483710976,
686 "size" : 327680,
687 "uuid" : "f0b78160-24ab-3c2d-bccc-4ef944f40d30",
688 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/shiboken6\/libshiboken6.abi3.6.10.dylib",
689 "name" : "libshiboken6.abi3.6.10.dylib"
690 },
691 {
692 "source" : "P",
693 "arch" : "arm64",
694 "base" : 4491001856,
695 "size" : 3489792,
696 "uuid" : "62750a98-bc70-38bc-96d4-b518d7fefded",
697 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtCore.abi3.so",
698 "name" : "QtCore.abi3.so"
699 },
700 {
701 "source" : "P",
702 "arch" : "arm64",
703 "base" : 4475158528,
704 "size" : 262144,
705 "uuid" : "1da89093-9eca-3280-a410-df22a1865bbd",
706 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/libpyside6.abi3.6.10.dylib",
707 "name" : "libpyside6.abi3.6.10.dylib"
708 },
709 {
710 "source" : "P",
711 "arch" : "arm64",
712 "base" : 4502618112,
713 "CFBundleShortVersionString" : "6.10",
714 "CFBundleIdentifier" : "org.qt-project.QtCore",
715 "size" : 4980736,
716 "uuid" : "4a7a0348-b410-3e23-8373-53f6876eb7f4",
717 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtCore.framework\/Versions\/A\/QtCore",
718 "name" : "QtCore",
719 "CFBundleVersion" : "6.10.1"
720 },
721 {
722 "source" : "P",
723 "arch" : "arm64e",
724 "base" : 4485726208,
725 "CFBundleShortVersionString" : "3.0",
726 "CFBundleIdentifier" : "com.apple.security.csparser",
727 "size" : 131072,
728 "uuid" : "862365a2-2945-3e86-a947-83bf39a899bf",
729 "path" : "\/System\/Library\/Frameworks\/Security.framework\/Versions\/A\/PlugIns\/csparser.bundle\/Contents\/MacOS\/csparser",
730 "name" : "csparser",
731 "CFBundleVersion" : "61901.80.25"
732 },
733 {
734 "source" : "P",
735 "arch" : "arm64",
736 "base" : 4551278592,
737 "size" : 5357568,
738 "uuid" : "188a1c2d-f44f-3e57-bd21-a37a7a840d28",
739 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtWidgets.abi3.so",
740 "name" : "QtWidgets.abi3.so"
741 },
742 {
743 "source" : "P",
744 "arch" : "arm64",
745 "base" : 4559978496,
746 "CFBundleShortVersionString" : "6.10",
747 "CFBundleIdentifier" : "org.qt-project.QtWidgets",
748 "size" : 4636672,
749 "uuid" : "029543bf-5fc1-3a0c-ade7-edba0cf3d8b1",
750 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtWidgets.framework\/Versions\/A\/QtWidgets",
751 "name" : "QtWidgets",
752 "CFBundleVersion" : "6.10.1"
753 },
754 {
755 "source" : "P",
756 "arch" : "arm64",
757 "base" : 4566073344,
758 "CFBundleShortVersionString" : "6.10",
759 "CFBundleIdentifier" : "org.qt-project.QtGui",
760 "size" : 7094272,
761 "uuid" : "3fa37de7-ceac-3c91-9317-791e19111d2a",
762 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtGui.framework\/Versions\/A\/QtGui",
763 "name" : "QtGui",
764 "CFBundleVersion" : "6.10.1"
765 },
766 {
767 "source" : "P",
768 "arch" : "arm64",
769 "base" : 4487725056,
770 "CFBundleShortVersionString" : "6.10",
771 "CFBundleIdentifier" : "org.qt-project.QtDBus",
772 "size" : 557056,
773 "uuid" : "46e5cebb-3051-35c6-aa1e-6f530f243273",
774 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/lib\/QtDBus.framework\/Versions\/A\/QtDBus",
775 "name" : "QtDBus",
776 "CFBundleVersion" : "6.10.1"
777 },
778 {
779 "source" : "P",
780 "arch" : "arm64",
781 "base" : 4574527488,
782 "size" : 4128768,
783 "uuid" : "19d1f0df-5853-3f4e-92f0-cf3d8ba3aeb4",
784 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/QtGui.abi3.so",
785 "name" : "QtGui.abi3.so"
786 },
787 {
788 "source" : "P",
789 "arch" : "arm64",
790 "base" : 4475060224,
791 "size" : 32768,
792 "uuid" : "71692750-fd03-30ef-b120-5ba354c0467d",
793 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_json.cpython-311-darwin.so",
794 "name" : "_json.cpython-311-darwin.so"
795 },
796 {
797 "source" : "P",
798 "arch" : "arm64",
799 "base" : 4542676992,
800 "size" : 3932160,
801 "uuid" : "995672f1-c523-382f-a9e3-688535cb85e7",
802 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/pydantic_core\/_pydantic_core.cpython-311-darwin.so",
803 "name" : "_pydantic_core.cpython-311-darwin.so"
804 },
805 {
806 "source" : "P",
807 "arch" : "arm64",
808 "base" : 4485283840,
809 "size" : 114688,
810 "uuid" : "4d7d232c-a1bd-3d68-a882-593c5371f6e3",
811 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_decimal.cpython-311-darwin.so",
812 "name" : "_decimal.cpython-311-darwin.so"
813 },
814 {
815 "source" : "P",
816 "arch" : "arm64",
817 "base" : 4485480448,
818 "size" : 114688,
819 "uuid" : "52d16117-fcf0-3704-984f-ce4454923a78",
820 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/libmpdec.4.dylib",
821 "name" : "libmpdec.4.dylib"
822 },
823 {
824 "source" : "P",
825 "arch" : "arm64",
826 "base" : 4477583360,
827 "size" : 16384,
828 "uuid" : "9a4582a0-6a4d-353c-85ba-cfdb08a578cd",
829 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_contextvars.cpython-311-darwin.so",
830 "name" : "_contextvars.cpython-311-darwin.so"
831 },
832 {
833 "source" : "P",
834 "arch" : "arm64",
835 "base" : 4487151616,
836 "size" : 49152,
837 "uuid" : "e95770b0-0926-37e6-88fd-b1e9d684a2ca",
838 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_asyncio.cpython-311-darwin.so",
839 "name" : "_asyncio.cpython-311-darwin.so"
840 },
841 {
842 "source" : "P",
843 "arch" : "arm64",
844 "base" : 4477665280,
845 "size" : 32768,
846 "uuid" : "0ca64709-6510-3c2d-85b3-f3d22698e98f",
847 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_zoneinfo.cpython-311-darwin.so",
848 "name" : "_zoneinfo.cpython-311-darwin.so"
849 },
850 {
851 "source" : "P",
852 "arch" : "arm64",
853 "base" : 4487020544,
854 "size" : 16384,
855 "uuid" : "af437268-384b-3cf1-9821-66860c88323c",
856 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_uuid.cpython-311-darwin.so",
857 "name" : "_uuid.cpython-311-darwin.so"
858 },
859 {
860 "source" : "P",
861 "arch" : "arm64",
862 "base" : 4546936832,
863 "size" : 376832,
864 "uuid" : "5b35d4aa-1795-338c-8d64-895c72f8f320",
865 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/_imaging.cpython-311-darwin.so",
866 "name" : "_imaging.cpython-311-darwin.so"
867 },
868 {
869 "source" : "P",
870 "arch" : "arm64",
871 "base" : 4548296704,
872 "size" : 688128,
873 "uuid" : "5d94e595-edbf-36da-9296-dc1777ec485e",
874 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libtiff.6.dylib",
875 "name" : "libtiff.6.dylib"
876 },
877 {
878 "source" : "P",
879 "arch" : "arm64",
880 "base" : 4547493888,
881 "size" : 540672,
882 "uuid" : "8ec82fd5-1c87-36f5-bd18-8454465fb860",
883 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libjpeg.62.4.0.dylib",
884 "name" : "libjpeg.62.4.0.dylib"
885 },
886 {
887 "source" : "P",
888 "arch" : "arm64",
889 "base" : 4549820416,
890 "size" : 622592,
891 "uuid" : "6994e1d8-b3e5-38d6-aef0-721586b2d5ce",
892 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libopenjp2.2.5.3.dylib",
893 "name" : "libopenjp2.2.5.3.dylib"
894 },
895 {
896 "source" : "P",
897 "arch" : "arm64",
898 "base" : 4487462912,
899 "size" : 114688,
900 "uuid" : "9d7eca9a-6145-3222-8894-4967624efcc9",
901 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libz.1.3.1.zlib-ng.dylib",
902 "name" : "libz.1.3.1.zlib-ng.dylib"
903 },
904 {
905 "source" : "P",
906 "arch" : "arm64",
907 "base" : 4501979136,
908 "size" : 163840,
909 "uuid" : "6fa02d7f-daaa-3c79-8b0d-c5319e003f3d",
910 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libxcb.1.1.0.dylib",
911 "name" : "libxcb.1.1.0.dylib"
912 },
913 {
914 "source" : "P",
915 "arch" : "arm64",
916 "base" : 4487282688,
917 "size" : 16384,
918 "uuid" : "32a172ad-f11b-381b-9270-3f9a195cbe7f",
919 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PIL\/__dot__dylibs\/libXau.6.dylib",
920 "name" : "libXau.6.dylib"
921 },
922 {
923 "source" : "P",
924 "arch" : "arm64",
925 "base" : 4582375424,
926 "size" : 1114112,
927 "uuid" : "df966a2c-3537-3108-900f-b421898e2971",
928 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/unicodedata.cpython-311-darwin.so",
929 "name" : "unicodedata.cpython-311-darwin.so"
930 },
931 {
932 "source" : "P",
933 "arch" : "arm64",
934 "base" : 4487364608,
935 "size" : 16384,
936 "uuid" : "19082575-cd71-3bcc-bcf2-30ef685bb4c7",
937 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/websockets\/speedups.cpython-311-darwin.so",
938 "name" : "speedups.cpython-311-darwin.so"
939 },
940 {
941 "source" : "P",
942 "arch" : "arm64",
943 "base" : 4487643136,
944 "size" : 16384,
945 "uuid" : "8ca06f85-334e-3422-8798-a795310e825e",
946 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/termios.cpython-311-darwin.so",
947 "name" : "termios.cpython-311-darwin.so"
948 },
949 {
950 "source" : "P",
951 "arch" : "arm64",
952 "base" : 4490526720,
953 "size" : 16384,
954 "uuid" : "f7af70dc-368d-3224-b226-a66b3232bf98",
955 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/charset_normalizer\/md.cpython-311-darwin.so",
956 "name" : "md.cpython-311-darwin.so"
957 },
958 {
959 "source" : "P",
960 "arch" : "arm64",
961 "base" : 4502257664,
962 "size" : 163840,
963 "uuid" : "fa33b146-5520-38f2-af8b-8c9b222225bc",
964 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/charset_normalizer\/md__mypyc.cpython-311-darwin.so",
965 "name" : "md__mypyc.cpython-311-darwin.so"
966 },
967 {
968 "source" : "P",
969 "arch" : "arm64",
970 "base" : 4490608640,
971 "size" : 32768,
972 "uuid" : "e11475a4-b5b6-3959-9248-6ff356de71f9",
973 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/python3__dot__11\/lib-dynload\/_multibytecodec.cpython-311-darwin.so",
974 "name" : "_multibytecodec.cpython-311-darwin.so"
975 },
976 {
977 "source" : "P",
978 "arch" : "arm64",
979 "base" : 4598185984,
980 "size" : 704512,
981 "uuid" : "3dd57985-5eac-307d-a26f-1a4f2a8ce5dd",
982 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/plugins\/platforms\/libqcocoa.dylib",
983 "name" : "libqcocoa.dylib"
984 },
985 {
986 "source" : "P",
987 "arch" : "arm64e",
988 "base" : 4502536192,
989 "size" : 49152,
990 "uuid" : "f26af954-d1f7-31aa-9981-1bad216149d9",
991 "path" : "\/usr\/lib\/libobjc-trampolines.dylib",
992 "name" : "libobjc-trampolines.dylib"
993 },
994 {
995 "source" : "P",
996 "arch" : "arm64",
997 "base" : 4597792768,
998 "size" : 147456,
999 "uuid" : "3124ba49-4f2c-36d2-9fd9-f382a264172e",
1000 "path" : "\/Applications\/ZB100ImageGenerator.app\/Contents\/Frameworks\/PySide6\/Qt\/plugins\/styles\/libqmacstyle.dylib",
1001 "name" : "libqmacstyle.dylib"
1002 },
1003 {
1004 "source" : "P",
1005 "arch" : "arm64e",
1006 "base" : 4829511680,
1007 "CFBundleShortVersionString" : "345.20.4",
1008 "CFBundleIdentifier" : "com.apple.AGXMetalG13X",
1009 "size" : 7667712,
1010 "uuid" : "554a66e8-d43d-3916-af8a-243138a2955d",
1011 "path" : "\/System\/Library\/Extensions\/AGXMetalG13X.bundle\/Contents\/MacOS\/AGXMetalG13X",
1012 "name" : "AGXMetalG13X",
1013 "CFBundleVersion" : "345.20.4"
1014 },
1015 {
1016 "source" : "P",
1017 "arch" : "arm64e",
1018 "base" : 6708568064,
1019 "size" : 33968,
1020 "uuid" : "62c9cd37-272d-3d2d-9a1c-6f4ef24f7ec7",
1021 "path" : "\/usr\/lib\/system\/libsystem_platform.dylib",
1022 "name" : "libsystem_platform.dylib"
1023 },
1024 {
1025 "source" : "P",
1026 "arch" : "arm64e",
1027 "base" : 6708801536,
1028 "CFBundleShortVersionString" : "6.9",
1029 "CFBundleIdentifier" : "com.apple.CoreFoundation",
1030 "size" : 5542592,
1031 "uuid" : "02762698-9950-3c66-8116-a3a565972a49",
1032 "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
1033 "name" : "CoreFoundation",
1034 "CFBundleVersion" : "4302"
1035 },
1036 {
1037 "source" : "P",
1038 "arch" : "arm64e",
1039 "base" : 6921502720,
1040 "CFBundleShortVersionString" : "2.1.1",
1041 "CFBundleIdentifier" : "com.apple.HIToolbox",
1042 "size" : 3158656,
1043 "uuid" : "fa4beac8-9a1e-3071-b669-bd2794e9fe3b",
1044 "path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox",
1045 "name" : "HIToolbox"
1046 },
1047 {
1048 "source" : "P",
1049 "arch" : "arm64e",
1050 "base" : 6780465152,
1051 "CFBundleShortVersionString" : "6.9",
1052 "CFBundleIdentifier" : "com.apple.AppKit",
1053 "size" : 24296416,
1054 "uuid" : "07dcc67f-25b2-3f2c-b92e-6fc579455989",
1055 "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
1056 "name" : "AppKit",
1057 "CFBundleVersion" : "2685.40.108"
1058 },
1059 {
1060 "source" : "P",
1061 "arch" : "arm64e",
1062 "base" : 6704533504,
1063 "size" : 653076,
1064 "uuid" : "bc4db5f4-1c64-3706-8006-73b78c3e1f1a",
1065 "path" : "\/usr\/lib\/dyld",
1066 "name" : "dyld"
1067 },
1068 {
1069 "size" : 0,
1070 "source" : "A",
1071 "base" : 0,
1072 "uuid" : "00000000-0000-0000-0000-000000000000"
1073 },
1074 {
1075 "source" : "P",
1076 "arch" : "arm64e",
1077 "base" : 6708264960,
1078 "size" : 246944,
1079 "uuid" : "b809799c-0ec9-3ee1-b730-342bdbf14e03",
1080 "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
1081 "name" : "libsystem_kernel.dylib"
1082 },
1083 {
1084 "source" : "P",
1085 "arch" : "arm64e",
1086 "base" : 6708514816,
1087 "size" : 51916,
1088 "uuid" : "0596a7b6-bce2-3f06-a2e8-3eaab5371ed8",
1089 "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
1090 "name" : "libsystem_pthread.dylib"
1091 }
1092 ],
1093 "sharedCache" : {
1094 "base" : 6703448064,
1095 "size" : 5818417152,
1096 "uuid" : "25ae5a2a-fe2a-3998-8d4e-f3c5c6e6ceb6"
1097 },
1098 "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",
1099 "legacyInfo" : {
1100 "threadTriggered" : {
1101 "queue" : "com.apple.main-thread"
1102 }
1103 },
1104 "logWritingSignature" : "11c9a1c78726ce2050f2e2b923b675ce5b86c5a2",
1105 "bug_type" : "309",
1106 "roots_installed" : 0,
1107 "trmStatus" : 1,
1108 "trialInfo" : {
1109 "rollouts" : [
1110 {
1111 "rolloutId" : "6813dc6e1e50e5344eb573e9",
1112 "factorPackIds" : [
1113
1114 ],
1115 "deploymentId" : 240000015
1116 },
1117 {
1118 "rolloutId" : "64c025b28b7f0e739e4fbe58",
1119 "factorPackIds" : [
1120 "657ba0a39ec5da283662e9d2"
1121 ],
1122 "deploymentId" : 240000044
1123 }
1124 ],
1125 "experiments" : [
1126
1127 ]
1128 }
1129 }
1130
1131 Model: MacBookPro18,3, BootROM 13822.81.10, proc 10:8:2 processors, 32 GB, SMC
1132 Graphics: Apple M1 Pro, Apple M1 Pro, Built-In
1133 Display: Color LCD, 3024 x 1964 Retina, Main, MirrorOff, Online
1134 Memory Module: LPDDR5, Hynix
1135 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
1136 IO80211_driverkit-1540.16 "IO80211_driverkit-1540.16" Jan 27 2026 21:04:24
1137 AirPort:
1138 Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
1139 Network Service: Wi-Fi, AirPort, en0
1140 Thunderbolt Bus: MacBook Pro, Apple Inc.
1141 Thunderbolt Bus: MacBook Pro, Apple Inc.
1142 Thunderbolt Bus: MacBook Pro, Apple Inc.
...@@ -26,6 +26,9 @@ import tempfile ...@@ -26,6 +26,9 @@ import tempfile
26 import platform 26 import platform
27 import logging 27 import logging
28 import random 28 import random
29 import faulthandler
30 import traceback
31 import signal
29 from pathlib import Path 32 from pathlib import Path
30 from google import genai 33 from google import genai
31 from google.genai import types 34 from google.genai import types
...@@ -38,6 +41,136 @@ from dataclasses import dataclass, asdict ...@@ -38,6 +41,136 @@ from dataclasses import dataclass, asdict
38 from typing import List, Optional, Dict, Any 41 from typing import List, Optional, Dict, Any
39 42
40 43
44 def _get_crash_log_path() -> Path:
45 """获取崩溃日志文件路径(尽早可用,不依赖任何初始化)"""
46 system = platform.system()
47 if system == "Darwin":
48 p = Path.home() / "Library/Application Support/ZB100ImageGenerator"
49 elif system == "Windows":
50 p = Path(os.environ.get("APPDATA", str(Path.home()))) / "ZB100ImageGenerator"
51 else:
52 p = Path.home() / ".config/zb100imagegenerator"
53 try:
54 p.mkdir(parents=True, exist_ok=True)
55 except Exception:
56 p = Path(tempfile.gettempdir()) / "ZB100ImageGenerator"
57 p.mkdir(parents=True, exist_ok=True)
58 return p / "crash_log.txt"
59
60
61 def _enable_crash_diagnostics():
62 """在最早期启用崩溃诊断工具"""
63 crash_log = _get_crash_log_path()
64
65 # 1. faulthandler: segfault 时自动输出 Python 调用栈到文件
66 try:
67 crash_fh = open(crash_log, "a", encoding="utf-8")
68 crash_fh.write(f"\n{'='*60}\n")
69 crash_fh.write(f"[STARTUP] {datetime.now().isoformat()} - faulthandler 已启用\n")
70 crash_fh.flush()
71 faulthandler.enable(file=crash_fh, all_threads=True)
72 # 同时输出到 stderr
73 faulthandler.enable(file=sys.stderr, all_threads=True)
74 print(f"崩溃诊断日志路径: {crash_log}")
75 except Exception as e:
76 print(f"faulthandler 启用失败: {e}")
77 faulthandler.enable() # 至少启用 stderr 输出
78
79 # 2. 全局 Python 异常钩子
80 def _global_excepthook(exc_type, exc_value, exc_tb):
81 msg = "".join(traceback.format_exception(exc_type, exc_value, exc_tb))
82 logging.critical(f"未捕获异常:\n{msg}")
83 try:
84 with open(crash_log, "a", encoding="utf-8") as f:
85 f.write(f"\n[UNCAUGHT EXCEPTION] {datetime.now().isoformat()}\n{msg}\n")
86 except Exception:
87 pass
88 sys.__excepthook__(exc_type, exc_value, exc_tb)
89
90 sys.excepthook = _global_excepthook
91
92 # 3. Qt 消息拦截器
93 try:
94 from PySide6.QtCore import qInstallMessageHandler, QtMsgType
95
96 def _qt_message_handler(mode, context, message):
97 level_map = {
98 QtMsgType.QtDebugMsg: "QT_DEBUG",
99 QtMsgType.QtInfoMsg: "QT_INFO",
100 QtMsgType.QtWarningMsg: "QT_WARNING",
101 QtMsgType.QtCriticalMsg: "QT_CRITICAL",
102 QtMsgType.QtFatalMsg: "QT_FATAL",
103 }
104 level = level_map.get(mode, "QT_UNKNOWN")
105 location = f"{context.file}:{context.line}" if context.file else "unknown"
106 full_msg = f"[{level}] {location} - {message}"
107
108 if mode in (QtMsgType.QtWarningMsg, QtMsgType.QtCriticalMsg, QtMsgType.QtFatalMsg):
109 logging.warning(full_msg)
110 try:
111 with open(crash_log, "a", encoding="utf-8") as f:
112 f.write(f"[{datetime.now().isoformat()}] {full_msg}\n")
113 except Exception:
114 pass
115 else:
116 logging.debug(full_msg)
117
118 qInstallMessageHandler(_qt_message_handler)
119 except Exception as e:
120 print(f"Qt 消息拦截器安装失败: {e}")
121
122
123 def _log_system_info():
124 """记录系统环境信息,用于排查兼容性问题"""
125 logger = logging.getLogger(__name__)
126 info_lines = [
127 f"操作系统: {platform.system()} {platform.release()} ({platform.version()})",
128 f"架构: {platform.machine()}",
129 f"Python: {sys.version}",
130 f"打包模式: {'PyInstaller' if getattr(sys, 'frozen', False) else '开发环境'}",
131 ]
132
133 try:
134 import PySide6
135 info_lines.append(f"PySide6: {PySide6.__version__}")
136 except Exception:
137 info_lines.append("PySide6: 版本获取失败")
138
139 try:
140 from PySide6.QtCore import qVersion
141 info_lines.append(f"Qt: {qVersion()}")
142 except Exception:
143 info_lines.append("Qt: 版本获取失败")
144
145 try:
146 import PIL
147 info_lines.append(f"Pillow: {PIL.__version__}")
148 except Exception:
149 info_lines.append("Pillow: 版本获取失败")
150
151 try:
152 from google import genai as _genai
153 info_lines.append(f"google-genai: {_genai.__version__}" if hasattr(_genai, '__version__') else "google-genai: 已加载")
154 except Exception:
155 info_lines.append("google-genai: 未安装或加载失败")
156
157 if getattr(sys, 'frozen', False):
158 info_lines.append(f"可执行路径: {sys.executable}")
159 if hasattr(sys, '_MEIPASS'):
160 info_lines.append(f"_MEIPASS: {sys._MEIPASS}")
161
162 full_info = "\n ".join(info_lines)
163 logger.info(f"系统环境信息:\n {full_info}")
164
165 # 同时写入崩溃日志
166 try:
167 crash_log = _get_crash_log_path()
168 with open(crash_log, "a", encoding="utf-8") as f:
169 f.write(f"[SYSTEM INFO] {datetime.now().isoformat()}\n {full_info}\n")
170 except Exception:
171 pass
172
173
41 def init_logging(log_level=logging.INFO): 174 def init_logging(log_level=logging.INFO):
42 """ 175 """
43 初始化简单的日志系统 176 初始化简单的日志系统
...@@ -432,7 +565,7 @@ class HistoryManager: ...@@ -432,7 +565,7 @@ class HistoryManager:
432 self.base_path = base_path or get_app_data_path() 565 self.base_path = base_path or get_app_data_path()
433 self.base_path.mkdir(parents=True, exist_ok=True) 566 self.base_path.mkdir(parents=True, exist_ok=True)
434 self.history_index_file = self.base_path / "history_index.json" 567 self.history_index_file = self.base_path / "history_index.json"
435 self.max_history_count = 100 # 默认最大历史记录数量 568 self.max_history_count = 0 # 0 表示不限制历史记录数量
436 569
437 self.logger.debug(f"历史记录管理器初始化完成,存储路径: {self.base_path}") 570 self.logger.debug(f"历史记录管理器初始化完成,存储路径: {self.base_path}")
438 571
...@@ -638,7 +771,9 @@ class HistoryManager: ...@@ -638,7 +771,9 @@ class HistoryManager:
638 print(f"保存历史记录索引失败: {e}") 771 print(f"保存历史记录索引失败: {e}")
639 772
640 def _cleanup_old_records(self): 773 def _cleanup_old_records(self):
641 """清理旧的历史记录,保持最大数量限制""" 774 """清理旧的历史记录,保持最大数量限制。max_history_count <= 0 表示不限制。"""
775 if self.max_history_count <= 0:
776 return
642 history_items = self.load_history_index() 777 history_items = self.load_history_index()
643 if len(history_items) > self.max_history_count: 778 if len(history_items) > self.max_history_count:
644 # 保留最新的记录 779 # 保留最新的记录
...@@ -1153,7 +1288,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1153,7 +1288,7 @@ class ImageGeneratorWindow(QMainWindow):
1153 def __init__(self): 1288 def __init__(self):
1154 super().__init__() 1289 super().__init__()
1155 self.logger = logging.getLogger(__name__) 1290 self.logger = logging.getLogger(__name__)
1156 self.logger.info("应用程序启动") 1291 self.logger.info("[INIT] ImageGeneratorWindow.__init__ 开始")
1157 1292
1158 self.api_key = "" 1293 self.api_key = ""
1159 self.uploaded_images = [] # List of file paths 1294 self.uploaded_images = [] # List of file paths
...@@ -1165,20 +1300,28 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1165,20 +1300,28 @@ class ImageGeneratorWindow(QMainWindow):
1165 self.saved_password_hash = "" 1300 self.saved_password_hash = ""
1166 self.authenticated_user = "" # 当前登录用户名 1301 self.authenticated_user = "" # 当前登录用户名
1167 1302
1303 self.logger.info("[INIT] 1/6 加载配置...")
1168 self.load_config() 1304 self.load_config()
1305
1306 self.logger.info("[INIT] 2/6 设置窗口图标...")
1169 self.set_window_icon() 1307 self.set_window_icon()
1170 1308
1171 # Initialize history manager 1309 # Initialize history manager
1310 self.logger.info("[INIT] 3/6 初始化历史记录管理器...")
1172 self.history_manager = HistoryManager() 1311 self.history_manager = HistoryManager()
1173 1312
1174 # Initialize task queue manager 1313 # Initialize task queue manager
1314 self.logger.info("[INIT] 4/6 初始化任务队列管理器...")
1175 from task_queue import TaskQueueManager 1315 from task_queue import TaskQueueManager
1176 self.task_manager = TaskQueueManager() 1316 self.task_manager = TaskQueueManager()
1177 1317
1318 self.logger.info("[INIT] 5/6 构建 UI...")
1178 self.setup_ui() 1319 self.setup_ui()
1320
1321 self.logger.info("[INIT] 6/6 应用样式...")
1179 self.apply_styles() 1322 self.apply_styles()
1180 1323
1181 self.logger.info("应用程序初始化完成") 1324 self.logger.info("[INIT] ImageGeneratorWindow 初始化完成")
1182 1325
1183 def set_window_icon(self): 1326 def set_window_icon(self):
1184 """Set window icon based on platform""" 1327 """Set window icon based on platform"""
...@@ -1251,7 +1394,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1251,7 +1394,7 @@ class ImageGeneratorWindow(QMainWindow):
1251 # Load history configuration 1394 # Load history configuration
1252 history_config = config.get("history_config", {}) 1395 history_config = config.get("history_config", {})
1253 if hasattr(self, 'history_manager'): 1396 if hasattr(self, 'history_manager'):
1254 self.history_manager.max_history_count = history_config.get("max_history_count", 100) 1397 self.history_manager.max_history_count = history_config.get("max_history_count", 0)
1255 1398
1256 self.logger.info("配置文件加载成功") 1399 self.logger.info("配置文件加载成功")
1257 config_loaded = True 1400 config_loaded = True
...@@ -1280,7 +1423,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1280,7 +1423,7 @@ class ImageGeneratorWindow(QMainWindow):
1280 # Load history configuration 1423 # Load history configuration
1281 history_config = config.get("history_config", {}) 1424 history_config = config.get("history_config", {})
1282 if hasattr(self, 'history_manager'): 1425 if hasattr(self, 'history_manager'):
1283 self.history_manager.max_history_count = history_config.get("max_history_count", 100) 1426 self.history_manager.max_history_count = history_config.get("max_history_count", 0)
1284 1427
1285 self.logger.info(f"从打包配置文件加载成功: {bundled_path}") 1428 self.logger.info(f"从打包配置文件加载成功: {bundled_path}")
1286 config_loaded = True 1429 config_loaded = True
...@@ -1305,7 +1448,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1305,7 +1448,7 @@ class ImageGeneratorWindow(QMainWindow):
1305 # Load history configuration 1448 # Load history configuration
1306 history_config = config.get("history_config", {}) 1449 history_config = config.get("history_config", {})
1307 if hasattr(self, 'history_manager'): 1450 if hasattr(self, 'history_manager'):
1308 self.history_manager.max_history_count = history_config.get("max_history_count", 100) 1451 self.history_manager.max_history_count = history_config.get("max_history_count", 0)
1309 1452
1310 self.logger.info(f"从当前目录配置文件加载成功: {current_config}") 1453 self.logger.info(f"从当前目录配置文件加载成功: {current_config}")
1311 config_loaded = True 1454 config_loaded = True
...@@ -1398,22 +1541,27 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1398,22 +1541,27 @@ class ImageGeneratorWindow(QMainWindow):
1398 self.tab_widget = QTabWidget() 1541 self.tab_widget = QTabWidget()
1399 1542
1400 # Create generation tab 1543 # Create generation tab
1544 self.logger.info("[INIT-UI] 创建图片生成 Tab...")
1401 generation_tab = self.setup_generation_tab() 1545 generation_tab = self.setup_generation_tab()
1402 self.tab_widget.addTab(generation_tab, "图片生成") 1546 self.tab_widget.addTab(generation_tab, "图片生成")
1547 self.logger.info("[INIT-UI] 图片生成 Tab 创建完成")
1403 1548
1404 # Create style designer tab 1549 # Create style designer tab
1550 self.logger.info("[INIT-UI] 创建款式设计 Tab...")
1405 try: 1551 try:
1406 jewelry_lib_manager = JewelryLibraryManager(self.get_config_dir()) 1552 jewelry_lib_manager = JewelryLibraryManager(self.get_config_dir())
1407 style_designer_tab = StyleDesignerTab(jewelry_lib_manager, parent=self) 1553 style_designer_tab = StyleDesignerTab(jewelry_lib_manager, parent=self)
1408 self.tab_widget.addTab(style_designer_tab, "款式设计") 1554 self.tab_widget.addTab(style_designer_tab, "款式设计")
1409 self.logger.info("款式设计 Tab 创建成功") 1555 self.logger.info("[INIT-UI] 款式设计 Tab 创建成功")
1410 except Exception as e: 1556 except Exception as e:
1411 self.logger.error(f"款式设计 Tab 创建失败: {e}") 1557 self.logger.error(f"[INIT-UI] 款式设计 Tab 创建失败: {e}", exc_info=True)
1412 # 即使失败也继续运行,不阻止应用启动 1558 # 即使失败也继续运行,不阻止应用启动
1413 1559
1414 # Create history tab 1560 # Create history tab
1561 self.logger.info("[INIT-UI] 创建历史记录 Tab...")
1415 history_tab = self.setup_history_tab() 1562 history_tab = self.setup_history_tab()
1416 self.tab_widget.addTab(history_tab, "历史记录") 1563 self.tab_widget.addTab(history_tab, "历史记录")
1564 self.logger.info("[INIT-UI] 历史记录 Tab 创建完成")
1417 1565
1418 content_layout.addWidget(self.tab_widget) 1566 content_layout.addWidget(self.tab_widget)
1419 1567
...@@ -1425,9 +1573,11 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1425,9 +1573,11 @@ class ImageGeneratorWindow(QMainWindow):
1425 main_layout.addWidget(content_widget, 7) # 70% width 1573 main_layout.addWidget(content_widget, 7) # 70% width
1426 1574
1427 # Right side: Task queue sidebar 1575 # Right side: Task queue sidebar
1576 self.logger.info("[INIT-UI] 创建任务队列侧边栏...")
1428 from task_queue import TaskQueueWidget 1577 from task_queue import TaskQueueWidget
1429 self.task_queue_widget = TaskQueueWidget(self.task_manager) 1578 self.task_queue_widget = TaskQueueWidget(self.task_manager)
1430 main_layout.addWidget(self.task_queue_widget, 3) # 30% width 1579 main_layout.addWidget(self.task_queue_widget, 3) # 30% width
1580 self.logger.info("[INIT-UI] 任务队列侧边栏创建完成")
1431 1581
1432 central_widget.setLayout(main_layout) 1582 central_widget.setLayout(main_layout)
1433 1583
...@@ -1896,10 +2046,19 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1896,10 +2046,19 @@ class ImageGeneratorWindow(QMainWindow):
1896 temp_dir.mkdir(exist_ok=True) 2046 temp_dir.mkdir(exist_ok=True)
1897 temp_file_path = temp_dir / f"clipboard_{timestamp}.png" 2047 temp_file_path = temp_dir / f"clipboard_{timestamp}.png"
1898 2048
2049 self.logger.info(f"[QImage.save] add_clipboard_image: 准备保存, "
2050 f"image.isNull()={image.isNull()}, "
2051 f"size={image.width()}x{image.height()}, "
2052 f"format={image.format()}, "
2053 f"target={temp_file_path}")
1899 normalized = image.convertToFormat(QImage.Format.Format_ARGB32) 2054 normalized = image.convertToFormat(QImage.Format.Format_ARGB32)
2055 self.logger.info(f"[QImage.save] convertToFormat 完成, normalized.isNull()={normalized.isNull()}")
1900 success = normalized.save(str(temp_file_path), "PNG") 2056 success = normalized.save(str(temp_file_path), "PNG")
2057 self.logger.info(f"[QImage.save] normalized.save 结果: {success}")
1901 if not success: 2058 if not success:
2059 self.logger.warning("[QImage.save] 尝试原始 image.save 作为备选")
1902 success = image.save(str(temp_file_path), "PNG") 2060 success = image.save(str(temp_file_path), "PNG")
2061 self.logger.info(f"[QImage.save] image.save 备选结果: {success}")
1903 2062
1904 if success and temp_file_path.exists() and temp_file_path.stat().st_size > 0: 2063 if success and temp_file_path.exists() and temp_file_path.stat().st_size > 0:
1905 self.uploaded_images.append(str(temp_file_path)) 2064 self.uploaded_images.append(str(temp_file_path))
...@@ -1920,6 +2079,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1920,6 +2079,7 @@ class ImageGeneratorWindow(QMainWindow):
1920 注意:Finder 复制的文件应通过 paste_from_clipboard 中的 hasUrls 分支处理, 2079 注意:Finder 复制的文件应通过 paste_from_clipboard 中的 hasUrls 分支处理,
1921 不会走到这里。此方法只处理纯图像数据(截图、从应用复制的图片等)。 2080 不会走到这里。此方法只处理纯图像数据(截图、从应用复制的图片等)。
1922 """ 2081 """
2082 self.logger.info("[clipboard] 开始获取剪贴板图像...")
1923 clipboard = QApplication.clipboard() 2083 clipboard = QApplication.clipboard()
1924 2084
1925 # 方法1: 从 MIME data 读取图像 2085 # 方法1: 从 MIME data 读取图像
...@@ -1927,20 +2087,30 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1927,20 +2087,30 @@ class ImageGeneratorWindow(QMainWindow):
1927 try: 2087 try:
1928 mime_data = clipboard.mimeData() 2088 mime_data = clipboard.mimeData()
1929 if mime_data is not None: 2089 if mime_data is not None:
2090 available_formats = mime_data.formats()
2091 self.logger.info(f"[clipboard] 可用 MIME 格式: {list(available_formats)}")
1930 # 尝试从图像 MIME 格式读取原始字节 2092 # 尝试从图像 MIME 格式读取原始字节
1931 for mime_type in ("image/png", "image/jpeg", "image/bmp", "image/tiff", "application/x-qt-image"): 2093 for mime_type in ("image/png", "image/jpeg", "image/bmp", "image/tiff", "application/x-qt-image"):
1932 if mime_type in mime_data.formats(): 2094 if mime_type in mime_data.formats():
1933 raw_data = mime_data.data(mime_type) 2095 raw_data = mime_data.data(mime_type)
2096 self.logger.info(f"[clipboard] 从 {mime_type} 读取到 {len(raw_data)} bytes")
1934 if raw_data and len(raw_data) > 0: 2097 if raw_data and len(raw_data) > 0:
1935 image = QImage() 2098 image = QImage()
1936 if image.loadFromData(raw_data): 2099 if image.loadFromData(raw_data):
2100 self.logger.info(f"[clipboard] MIME 方式成功, "
2101 f"size={image.width()}x{image.height()}")
1937 return image.copy() 2102 return image.copy()
1938 2103
1939 # 尝试 hasImage + imageData 2104 # 尝试 hasImage + imageData
1940 if mime_data.hasImage(): 2105 if mime_data.hasImage():
2106 self.logger.info("[clipboard] 尝试 hasImage + imageData 方式")
1941 image_data = mime_data.imageData() 2107 image_data = mime_data.imageData()
1942 if isinstance(image_data, QImage) and not image_data.isNull(): 2108 if isinstance(image_data, QImage) and not image_data.isNull():
2109 self.logger.info(f"[clipboard] imageData 方式成功, "
2110 f"size={image_data.width()}x{image_data.height()}")
1943 return image_data.copy() 2111 return image_data.copy()
2112 else:
2113 self.logger.info("[clipboard] mimeData 为 None")
1944 except Exception as e: 2114 except Exception as e:
1945 self.logger.warning(f"MIME data 方式获取剪贴板图像失败: {e}") 2115 self.logger.warning(f"MIME data 方式获取剪贴板图像失败: {e}")
1946 2116
...@@ -2023,11 +2193,20 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -2023,11 +2193,20 @@ class ImageGeneratorWindow(QMainWindow):
2023 temp_dir.mkdir(exist_ok=True) 2193 temp_dir.mkdir(exist_ok=True)
2024 temp_file_path = str(temp_dir / f"clipboard_{timestamp}.png") 2194 temp_file_path = str(temp_dir / f"clipboard_{timestamp}.png")
2025 2195
2196 self.logger.info(f"[QImage.save] paste_from_clipboard: 准备保存, "
2197 f"image.isNull()={image.isNull()}, "
2198 f"size={image.width()}x{image.height()}, "
2199 f"format={image.format()}, "
2200 f"target={temp_file_path}")
2026 normalized = image.convertToFormat(QImage.Format.Format_ARGB32) 2201 normalized = image.convertToFormat(QImage.Format.Format_ARGB32)
2202 self.logger.info(f"[QImage.save] convertToFormat 完成, normalized.isNull()={normalized.isNull()}")
2027 if not normalized.save(temp_file_path, "PNG"): 2203 if not normalized.save(temp_file_path, "PNG"):
2204 self.logger.warning("[QImage.save] normalized.save 失败,尝试原始 image.save")
2028 if not image.save(temp_file_path, "PNG"): 2205 if not image.save(temp_file_path, "PNG"):
2206 self.logger.error("[QImage.save] image.save 也失败了")
2029 QMessageBox.critical(self, "错误", "无法保存剪贴板图片") 2207 QMessageBox.critical(self, "错误", "无法保存剪贴板图片")
2030 return 2208 return
2209 self.logger.info("[QImage.save] paste_from_clipboard 保存成功")
2031 2210
2032 self.uploaded_images.append(temp_file_path) 2211 self.uploaded_images.append(temp_file_path)
2033 self.update_image_preview() 2212 self.update_image_preview()
...@@ -2400,14 +2579,21 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -2400,14 +2579,21 @@ class ImageGeneratorWindow(QMainWindow):
2400 return 2579 return
2401 2580
2402 try: 2581 try:
2582 self.logger.info(f"[display_image] 开始显示图片, 数据大小: {len(self.generated_image_bytes)} bytes")
2583
2403 # Load image from bytes 2584 # Load image from bytes
2404 pixmap = QPixmap() 2585 pixmap = QPixmap()
2405 pixmap.loadFromData(self.generated_image_bytes) 2586 load_ok = pixmap.loadFromData(self.generated_image_bytes)
2587 self.logger.info(f"[display_image] loadFromData 结果: {load_ok}, "
2588 f"pixmap.isNull()={pixmap.isNull()}, "
2589 f"size={pixmap.width()}x{pixmap.height()}")
2406 2590
2407 # Scale to fit preview area 2591 # Scale to fit preview area
2408 available_width = self.preview_label.width() - 40 2592 available_width = self.preview_label.width() - 40
2409 available_height = self.preview_label.height() - 40 2593 available_height = self.preview_label.height() - 40
2410 2594
2595 self.logger.info(f"[display_image] 缩放: {pixmap.width()}x{pixmap.height()} -> "
2596 f"max {available_width}x{available_height}")
2411 scaled_pixmap = pixmap.scaled( 2597 scaled_pixmap = pixmap.scaled(
2412 available_width, available_height, 2598 available_width, available_height,
2413 Qt.KeepAspectRatio, 2599 Qt.KeepAspectRatio,
...@@ -2416,7 +2602,9 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -2416,7 +2602,9 @@ class ImageGeneratorWindow(QMainWindow):
2416 2602
2417 self.preview_label.setPixmap(scaled_pixmap) 2603 self.preview_label.setPixmap(scaled_pixmap)
2418 self.preview_label.setStyleSheet("") 2604 self.preview_label.setStyleSheet("")
2605 self.logger.info("[display_image] 图片显示完成")
2419 except Exception as e: 2606 except Exception as e:
2607 self.logger.error(f"[display_image] 图片显示失败: {e}", exc_info=True)
2420 QMessageBox.critical(self, "错误", f"图片显示失败: {str(e)}") 2608 QMessageBox.critical(self, "错误", f"图片显示失败: {str(e)}")
2421 2609
2422 def open_fullsize_view(self, event): 2610 def open_fullsize_view(self, event):
...@@ -2524,8 +2712,10 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -2524,8 +2712,10 @@ class ImageGeneratorWindow(QMainWindow):
2524 2712
2525 def refresh_history(self): 2713 def refresh_history(self):
2526 """Refresh the history list""" 2714 """Refresh the history list"""
2715 self.logger.info("[refresh_history] 开始刷新历史记录列表...")
2527 self.history_list.clear() 2716 self.history_list.clear()
2528 history_items = self.history_manager.load_history_index() 2717 history_items = self.history_manager.load_history_index()
2718 self.logger.info(f"[refresh_history] 加载到 {len(history_items)} 条历史记录")
2529 2719
2530 for item in history_items: 2720 for item in history_items:
2531 # Create list item with icon 2721 # Create list item with icon
...@@ -2544,18 +2734,21 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -2544,18 +2734,21 @@ class ImageGeneratorWindow(QMainWindow):
2544 # Try to load thumbnail 2734 # Try to load thumbnail
2545 if item.generated_image_path.exists(): 2735 if item.generated_image_path.exists():
2546 try: 2736 try:
2737 self.logger.debug(f"[refresh_history] 加载缩略图: {item.generated_image_path}")
2547 pixmap = QPixmap(str(item.generated_image_path)) 2738 pixmap = QPixmap(str(item.generated_image_path))
2548 if not pixmap.isNull(): 2739 if not pixmap.isNull():
2549 # Scale to thumbnail size 2740 # Scale to thumbnail size
2550 scaled_pixmap = pixmap.scaled(120, 120, Qt.KeepAspectRatio, Qt.SmoothTransformation) 2741 scaled_pixmap = pixmap.scaled(120, 120, Qt.KeepAspectRatio, Qt.SmoothTransformation)
2551 list_item.setIcon(QIcon(scaled_pixmap)) 2742 list_item.setIcon(QIcon(scaled_pixmap))
2552 else: 2743 else:
2744 self.logger.warning(f"[refresh_history] 缩略图加载为空: {item.generated_image_path}")
2553 # Create placeholder icon 2745 # Create placeholder icon
2554 list_item.setIcon(self.create_placeholder_icon("图片\n加载失败")) 2746 list_item.setIcon(self.create_placeholder_icon("图片\n加载失败"))
2555 except Exception as e: 2747 except Exception as e:
2556 print(f"Failed to load thumbnail for {item.timestamp}: {e}") 2748 self.logger.error(f"[refresh_history] 缩略图加载异常 {item.timestamp}: {e}")
2557 list_item.setIcon(self.create_placeholder_icon("图片\n错误")) 2749 list_item.setIcon(self.create_placeholder_icon("图片\n错误"))
2558 else: 2750 else:
2751 self.logger.warning(f"[refresh_history] 图片文件不存在: {item.generated_image_path}")
2559 list_item.setIcon(self.create_placeholder_icon("图片\n不存在")) 2752 list_item.setIcon(self.create_placeholder_icon("图片\n不存在"))
2560 2753
2561 # Add text info below the icon 2754 # Add text info below the icon
...@@ -3994,10 +4187,25 @@ class StyleDesignerTab(QWidget): ...@@ -3994,10 +4187,25 @@ class StyleDesignerTab(QWidget):
3994 4187
3995 def main(): 4188 def main():
3996 """Main application entry point""" 4189 """Main application entry point"""
3997 # 初始化日志系统 4190 # 第0步:启用崩溃诊断(最早执行,不依赖任何其他初始化)
4191 print("[BOOT] Phase 0: 启用崩溃诊断...")
4192 _enable_crash_diagnostics()
4193
4194 # 第1步:初始化日志系统
4195 print("[BOOT] Phase 1: 初始化日志系统...")
3998 if not init_logging(): 4196 if not init_logging():
3999 print("警告:日志系统初始化失败,将继续运行但不记录日志") 4197 print("警告:日志系统初始化失败,将继续运行但不记录日志")
4000 4198
4199 logger = logging.getLogger(__name__)
4200 logger.info("[BOOT] Phase 1 完成: 日志系统就绪")
4201
4202 # 第2步:记录系统环境信息
4203 logger.info("[BOOT] Phase 2: 记录系统环境...")
4204 _log_system_info()
4205
4206 # 第3步:加载配置
4207 logger.info("[BOOT] Phase 3: 加载配置文件...")
4208
4001 # Load config for database info 4209 # Load config for database info
4002 config_dir = Path('.') 4210 config_dir = Path('.')
4003 if getattr(sys, 'frozen', False): 4211 if getattr(sys, 'frozen', False):
...@@ -4062,12 +4270,20 @@ def main(): ...@@ -4062,12 +4270,20 @@ def main():
4062 db_config = config.get("db_config") 4270 db_config = config.get("db_config")
4063 last_user = config.get("last_user", "") 4271 last_user = config.get("last_user", "")
4064 saved_password_hash = config.get("saved_password_hash", "") 4272 saved_password_hash = config.get("saved_password_hash", "")
4273 logger.info(f"[BOOT] Phase 3 完成: 配置已加载, db_config={'有' if db_config else '无'}")
4065 except Exception as e: 4274 except Exception as e:
4275 logger.error(f"[BOOT] Phase 3 失败: 配置加载异常: {e}")
4066 print(f"Failed to load config: {e}") 4276 print(f"Failed to load config: {e}")
4277 else:
4278 logger.warning(f"[BOOT] Phase 3: 配置文件不存在: {config_path}")
4067 4279
4068 # Create QApplication 4280 # 第4步:创建 QApplication
4281 logger.info("[BOOT] Phase 4: 创建 QApplication...")
4069 app = QApplication(sys.argv) 4282 app = QApplication(sys.argv)
4283 logger.info("[BOOT] Phase 4 完成: QApplication 已创建")
4070 4284
4285 # 第5步:设置应用图标
4286 logger.info("[BOOT] Phase 5: 设置应用图标...")
4071 # Set application icon 4287 # Set application icon
4072 if getattr(sys, 'frozen', False): 4288 if getattr(sys, 'frozen', False):
4073 # Running as compiled executable 4289 # Running as compiled executable
...@@ -4089,20 +4305,30 @@ def main(): ...@@ -4089,20 +4305,30 @@ def main():
4089 if icon_path and os.path.exists(icon_path): 4305 if icon_path and os.path.exists(icon_path):
4090 app_icon = QIcon(icon_path) 4306 app_icon = QIcon(icon_path)
4091 app.setWindowIcon(app_icon) 4307 app.setWindowIcon(app_icon)
4308 logger.info(f"[BOOT] Phase 5 完成: 图标已设置 ({icon_path})")
4309 else:
4310 logger.info(f"[BOOT] Phase 5: 跳过图标设置 (icon_path={icon_path})")
4092 4311
4093 # Check database config - if missing, start app without database authentication 4312 # Check database config - if missing, start app without database authentication
4094 if not db_config: 4313 if not db_config:
4314 logger.warning("[BOOT] 无数据库配置,跳过登录直接进入主窗口")
4095 print("警告:未找到数据库配置,将跳过数据库认证") 4315 print("警告:未找到数据库配置,将跳过数据库认证")
4096 # Create main window directly without login 4316 # Create main window directly without login
4317 logger.info("[BOOT] Phase 6: 创建主窗口(无登录模式)...")
4097 main_window = ImageGeneratorWindow() 4318 main_window = ImageGeneratorWindow()
4319 logger.info("[BOOT] Phase 6 完成: 主窗口已创建")
4098 main_window.show() 4320 main_window.show()
4321 logger.info("[BOOT] Phase 7: 主窗口已显示,进入事件循环")
4099 sys.exit(app.exec()) 4322 sys.exit(app.exec())
4100 4323
4101 # Show login dialog 4324 # 第6步:显示登录对话框
4325 logger.info("[BOOT] Phase 6: 创建登录对话框...")
4102 login_dialog = LoginDialog(db_config, last_user, saved_password_hash) 4326 login_dialog = LoginDialog(db_config, last_user, saved_password_hash)
4327 logger.info("[BOOT] Phase 6 完成: 登录对话框已创建,等待用户操作...")
4103 4328
4104 if login_dialog.exec() == QDialog.Accepted: 4329 if login_dialog.exec() == QDialog.Accepted:
4105 # Login successful 4330 # Login successful
4331 logger.info("[BOOT] 登录成功")
4106 authenticated_user = login_dialog.authenticated_user 4332 authenticated_user = login_dialog.authenticated_user
4107 remember_user = login_dialog.get_remember_user() 4333 remember_user = login_dialog.get_remember_user()
4108 remember_password = login_dialog.get_remember_password() 4334 remember_password = login_dialog.get_remember_password()
...@@ -4126,17 +4352,24 @@ def main(): ...@@ -4126,17 +4352,24 @@ def main():
4126 4352
4127 with open(config_path, 'w', encoding='utf-8') as f: 4353 with open(config_path, 'w', encoding='utf-8') as f:
4128 json.dump(config, f, indent=2, ensure_ascii=False) 4354 json.dump(config, f, indent=2, ensure_ascii=False)
4355 logger.info("[BOOT] 凭证已保存")
4129 except Exception as e: 4356 except Exception as e:
4357 logger.error(f"[BOOT] 凭证保存失败: {e}")
4130 print(f"Failed to save config: {e}") 4358 print(f"Failed to save config: {e}")
4131 4359
4132 # Show main window 4360 # 第7步:创建主窗口
4361 logger.info("[BOOT] Phase 7: 创建主窗口...")
4133 main_window = ImageGeneratorWindow() 4362 main_window = ImageGeneratorWindow()
4134 main_window.authenticated_user = authenticated_user # 设置登录用户名 4363 main_window.authenticated_user = authenticated_user # 设置登录用户名
4364 logger.info("[BOOT] Phase 7 完成: 主窗口已创建")
4365
4135 main_window.show() 4366 main_window.show()
4367 logger.info("[BOOT] Phase 8: 主窗口已显示,进入事件循环")
4136 4368
4137 sys.exit(app.exec()) 4369 sys.exit(app.exec())
4138 else: 4370 else:
4139 # Login cancelled or failed 4371 # Login cancelled or failed
4372 logger.info("[BOOT] 登录取消或失败,退出")
4140 sys.exit(0) 4373 sys.exit(0)
4141 4374
4142 4375
......