添加 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>
Showing
2 changed files
with
1390 additions
and
15 deletions
error.log
0 → 100644
| 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 | ... | ... |
-
Please register or sign in to post a comment