Comments (4)
i don't know if it will be helpful:
very seldom i also recognize crashes of RT during export, where i suspect the noise reduction causing the crash. In these cases the values for 'luminance' are very low (under1) and 'luminance details' (down to 0). Iirc it mostly happens in Lab-mode and conservative.
btw: win 10 and RawTherapee_dev_5.9-472-g31bf942d9_win64_release
from rawtherapee.
@NagornyV Could you please provide more details about the crashes? See How to write useful bug reports. In particular, what were you doing in RawTherapee when the crashes occurred?
from rawtherapee.
@Lawrence37 There are not many details... the application crashes when moving the noise reduction level control. It seems that sometimes a failure occurs when you enlarge the picture to see the result of noise reduction.
All details are available in crash logs. In MacOS system logs all events. Please see archive - https://github.com/Beep6581/RawTherapee/files/14150068/crashlogs.zip
from rawtherapee.
The crash report does not contain all the information we ask for, such as pp3s. However, the fact that it crashes while viewing the results of noise reduction is helpful. This is an issue we've seen before in #6230. The thread dumps match too. For everyone's convenience, I converted one of the .ips to a human-friendly format:
Crash report
Metadata
--------
app_name: rawtherapee
timestamp: 2024-02-03 09:32:08.00 +0400
app_version: 5.9.0
slice_uuid: e83d6888-c1b5-3cce-9fe7-a1449afcbfc9
build_version: 5.9.0
platform: 1
bundleID: com.rawtherapee.RawTherapee
share_with_app_devs: 0
is_first_party: 0
bug_type: 309
os_version: macOS 14.3 (23D56)
roots_installed: 0
name: rawtherapee
incident_id: 83F2173A-87F0-4F29-BF68-778C8006E15D
Crash Data
----------
uptime: 5100
procRole: Foreground
version: 2
userID: 501
deployVersion: 210
modelCode: Macmini9,1
coalitionID: 1602
captureTime: 2024-02-03 09:32:06.2844 +0400
codeSigningMonitor: 1
incident: 83F2173A-87F0-4F29-BF68-778C8006E15D
pid: 1449
translated: False
cpuType: ARM-64
roots_installed: 0
bug_type: 309
procLaunch: 2024-02-03 09:31:50.1989 +0400
procStartAbsTime: 124178067496
procExitAbsTime: 124564029233
procName: rawtherapee
procPath: /Applications/RawTherapee.app/Contents/MacOS/rawtherapee
parentProc: launchd
parentPid: 1
coalitionName: com.rawtherapee.RawTherapee
crashReporterKey: 34FA35DD-F5EF-C5CD-479A-F0D92581C2E6
codeSigningID: com.rawtherapee.RawTherapee
codeSigningTeamID: 5SJ86G6Q2R
codeSigningFlags: 570503953
codeSigningValidationCategory: 6
codeSigningTrustLevel: 4294967295
sip: enabled
vmRegionInfo:
0x28 is not in any region. Bytes before following region: 4340432856
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 102b5c000-1034cc000 [ 9664K] r-x/r-x SM=COW ...S/rawtherapee
vmregioninfo:
0x28 is not in any region. Bytes before following region: 4340432856
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 102b5c000-1034cc000 [ 9664K] r-x/r-x SM=COW ...S/rawtherapee
faultingThread: 13
vmSummary:
ReadOnly portion of Libraries: Total=1.5G resident=0K(0%) swapped_out_or_unallocated=1.5G(100%)
Writable regions: Total=3.3G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=3.3G(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Accelerate framework 128K 1
Activity Tracing 256K 1
CG image 368K 8
ColorSync 560K 26
CoreAnimation 336K 14
CoreGraphics 32K 2
CoreUI image data 928K 6
Foundation 16K 1
Kernel Alloc Once 32K 1
MALLOC 2.8G 125
MALLOC guard page 192K 12
MALLOC_LARGE (reserved) 14.1M 1 reserved VM address space (unallocated)
STACK GUARD 57.2M 74
Stack 518.4M 78
VM_ALLOCATE 160K 10
__AUTH 1667K 328
__AUTH_CONST 27.1M 530
__CTF 824 1
__DATA 13.3M 573
__DATA_CONST 30.1M 589
__DATA_DIRTY 1703K 192
__FONT_DATA 4K 1
__LINKEDIT 909.5M 57
__OBJC_RO 71.2M 1
__OBJC_RW 2171K 1
__TEXT 622.1M 609
dyld private memory 272K 2
mapped file 181.0M 27
shared memory 848K 13
=========== ======= =======
TOTAL 5.2G 3284
TOTAL, minus reserved VM space 5.2G 3284
logWritingSignature: 6ba14d15037349b628a0b1415effc5de09048f92
Threads
-------
Thread 47398:
0: bits_image_fetch_bilinear_no_repeat_8888 (+976)
1: general_composite_rect (+692)
2: pixman_image_composite32 (+880)
3: composite_boxes (+312)
4: clip_and_composite_boxes (+1396)
5: _cairo_spans_compositor_fill (+188)
6: _cairo_compositor_fill (+116)
7: _cairo_surface_fill (+180)
8: _cairo_gstate_fill (+324)
9: _cairo_default_context_fill (+32)
10: cairo_fill (+36)
11: Cairo::Context::fill() (+24)
12: CropWindow::expose(Cairo::RefPtr<Cairo::Context>) (+3204)
13: ImageArea::on_draw(Cairo::RefPtr<Cairo::Context> const&) (+80)
14: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+160)
15: gtk_widget_draw_internal (+360)
16: gtk_container_propagate_draw (+428)
17: gtk_container_draw (+132)
18: gtk_frame_render (+304)
19: gtk_css_gadget_draw (+548)
20: gtk_frame_draw (+20)
21: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
22: gtk_widget_draw_internal (+360)
23: gtk_container_propagate_draw (+428)
24: gtk_container_draw (+132)
25: gtk_box_draw_contents (+40)
26: gtk_css_gadget_draw (+548)
27: gtk_box_draw (+20)
28: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
29: gtk_widget_draw_internal (+360)
30: gtk_container_propagate_draw (+428)
31: gtk_container_draw (+132)
32: gtk_box_draw_contents (+40)
33: gtk_css_gadget_draw (+548)
34: gtk_box_draw (+20)
35: Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) (+84)
36: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+160)
37: gtk_widget_draw_internal (+360)
38: gtk_container_propagate_draw (+428)
39: gtk_container_draw (+132)
40: gtk_box_draw_contents (+40)
41: gtk_css_gadget_draw (+548)
42: gtk_box_draw (+20)
43: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
44: gtk_widget_draw_internal (+360)
45: gtk_container_propagate_draw (+428)
46: gtk_container_draw (+132)
47: gtk_box_draw_contents (+40)
48: gtk_css_gadget_draw (+548)
49: gtk_box_draw (+20)
50: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
51: gtk_widget_draw_internal (+360)
52: gtk_container_propagate_draw (+428)
53: gtk_container_draw (+132)
54: gtk_box_draw_contents (+40)
55: gtk_css_gadget_draw (+548)
56: gtk_box_draw (+20)
57: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
58: gtk_widget_draw_internal (+360)
59: gtk_container_propagate_draw (+428)
60: gtk_paned_render (+400)
61: gtk_css_gadget_draw (+548)
62: gtk_paned_draw (+20)
63: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
64: gtk_widget_draw_internal (+360)
65: gtk_container_propagate_draw (+428)
66: gtk_paned_render (+400)
67: gtk_css_gadget_draw (+548)
68: gtk_paned_draw (+20)
69: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
70: gtk_widget_draw_internal (+360)
71: gtk_container_propagate_draw (+428)
72: gtk_paned_render (+256)
73: gtk_css_gadget_draw (+548)
74: gtk_paned_draw (+20)
75: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
76: gtk_widget_draw_internal (+360)
77: gtk_container_propagate_draw (+428)
78: gtk_container_draw (+132)
79: gtk_box_draw_contents (+40)
80: gtk_css_gadget_draw (+548)
81: gtk_box_draw (+20)
82: Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) (+84)
83: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+160)
84: gtk_widget_draw_internal (+360)
85: gtk_container_propagate_draw (+428)
86: gtk_notebook_draw_stack (+72)
87: gtk_css_gadget_draw (+548)
88: gtk_box_gadget_draw (+176)
89: gtk_css_gadget_draw (+548)
90: gtk_notebook_draw (+52)
91: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+352)
92: gtk_widget_draw_internal (+360)
93: gtk_container_propagate_draw (+428)
94: gtk_container_draw (+132)
95: gtk_window_draw (+648)
96: Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) (+84)
97: Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) (+160)
98: gtk_widget_draw_internal (+360)
99: gtk_widget_render (+176)
100: gtk_main_do_event (+1600)
101: _gdk_event_emit (+64)
102: _gdk_window_process_updates_recurse_helper (+296)
103: -[GdkQuartzView updateLayer] (+208)
104: _NSViewUpdateLayer (+84)
105: +[NSAppearance _performWithCurrentAppearance:usingBlock:] (+72)
106: __29-[NSViewBackingLayer display]_block_invoke (+148)
107: -[NSFocusStack performWithFocusView:inWindow:usingBlock:] (+96)
108: -[NSViewBackingLayer display] (+280)
109: CA::Layer::display_if_needed(CA::Transaction*) (+736)
110: CA::Context::commit_transaction(CA::Transaction*, double, double*) (+512)
111: CA::Transaction::commit() (+648)
112: __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke (+272)
113: ___NSRunLoopObserverCreateWithHandler_block_invoke (+64)
114: __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ (+36)
115: __CFRunLoopDoObservers (+532)
116: __CFRunLoopRun (+776)
117: CFRunLoopRunSpecific (+608)
118: RunCurrentEventLoopInMode (+292)
119: ReceiveNextEventCommon (+648)
120: _BlockUntilNextEventMatchingListInModeWithFilter (+76)
121: _DPSNextEvent (+660)
122: -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (+716)
123: poll_func (+212)
124: g_main_context_iterate (+340)
125: g_main_loop_run (+268)
126: gtk_main (+92)
127: Gtk::Main::run(Gtk::Window&) (+148)
128: main (+3484)
129: start (+2360)
Thread 47428:
0: start_wqthread (+0)
Thread 47433:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47434:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47435:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47436:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47437:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47438:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47439:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47444:
0: start_wqthread (+0)
Thread 47456:
0: __select (+8)
1: g_poll (+424)
2: g_main_context_iterate (+340)
3: g_main_context_iteration (+60)
4: glib_worker_main (+48)
5: g_thread_proxy (+68)
6: _pthread_start (+136)
7: thread_start (+8)
Thread 47457:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: g_cond_wait (+44)
3: g_async_queue_pop_intern_unlocked (+116)
4: g_thread_pool_spawn_thread (+124)
5: g_thread_proxy (+68)
6: _pthread_start (+136)
7: thread_start (+8)
Thread 47469:
0: mach_msg2_trap (+8)
1: mach_msg2_internal (+80)
2: mach_msg_overwrite (+476)
3: mach_msg (+24)
4: __CFRunLoopServiceMachPort (+160)
5: __CFRunLoopRun (+1208)
6: CFRunLoopRunSpecific (+608)
7: _NSEventThread (+144)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47477 (TRIGGERD):
0: int __kmp_dispatch_next_algorithm<long long>(int, dispatch_private_info_template<long long>*, dispatch_shared_info_template<long long> volatile*, int*, long long*, long long*, traits_t<long long>::signed_t*, long long, long long) (+1184)
1: __kmpc_dispatch_next_8 (+252)
2: .omp_outlined..4.15849 (+296)
3: __kmp_invoke_microtask (+156)
4: ? (+?)
5: ? (+?)
6: ? (+?)
7: ? (+?)
Thread 47478:
0: rtengine::ImProcFunctions::ShrinkAllAB(rtengine::wavelet_decomposition&, rtengine::wavelet_decomposition&, float**, int, int, float*, float, bool, bool, bool, float*, float*, int, float*, bool) (+2268)
1: .omp_outlined..4.15849 (+428)
2: __kmp_invoke_microtask (+156)
3: ? (+?)
4: ? (+?)
5: ? (+?)
6: ? (+?)
Thread 47479:
0: swtch_pri (+8)
1: cthread_yield (+32)
2: kmp_flag_64::wait(kmp_info*, int, void*) (+1532)
3: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
4: __kmp_fork_barrier(int, int) (+484)
5: __kmp_launch_thread (+212)
6: __kmp_launch_worker(void*) (+252)
7: _pthread_start (+136)
8: thread_start (+8)
Thread 47480:
0: rtengine::ImProcFunctions::ShrinkAllAB(rtengine::wavelet_decomposition&, rtengine::wavelet_decomposition&, float**, int, int, float*, float, bool, bool, bool, float*, float*, int, float*, bool) (+2260)
1: .omp_outlined..4.15849 (+428)
2: __kmp_invoke_microtask (+156)
3: ? (+?)
4: ? (+?)
5: ? (+?)
6: ? (+?)
Thread 47481:
0: .omp_outlined..1.14820 (+2792)
1: rtengine::boxblur(float**, float**, int, int, int, bool) (+292)
2: rtengine::boxblur(float*, float*, int, int, int, bool) (+308)
3: rtengine::ImProcFunctions::ShrinkAllAB(rtengine::wavelet_decomposition&, rtengine::wavelet_decomposition&, float**, int, int, float*, float, bool, bool, bool, float*, float*, int, float*, bool) (+2060)
4: .omp_outlined..4.15849 (+428)
5: __kmp_invoke_microtask (+156)
6: ? (+?)
7: ? (+?)
8: ? (+?)
9: ? (+?)
Thread 47482:
0: .omp_outlined..1.14820 (+2828)
1: rtengine::boxblur(float**, float**, int, int, int, bool) (+292)
2: rtengine::boxblur(float*, float*, int, int, int, bool) (+308)
3: rtengine::ImProcFunctions::ShrinkAllAB(rtengine::wavelet_decomposition&, rtengine::wavelet_decomposition&, float**, int, int, float*, float, bool, bool, bool, float*, float*, int, float*, bool) (+2060)
4: .omp_outlined..4.15849 (+428)
5: __kmp_invoke_microtask (+156)
6: ? (+?)
7: ? (+?)
8: ? (+?)
9: ? (+?)
Thread 47483:
0: swtch_pri (+8)
1: cthread_yield (+32)
2: kmp_flag_64::wait(kmp_info*, int, void*) (+1532)
3: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
4: __kmp_fork_barrier(int, int) (+484)
5: __kmp_launch_thread (+212)
6: __kmp_launch_worker(void*) (+252)
7: _pthread_start (+136)
8: thread_start (+8)
Thread 47487:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47488:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47489:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47490:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47491:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47492:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47493:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47496:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47497:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47498:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47499:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47500:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47501:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47502:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47503:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47504:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47505:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47506:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47507:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47508:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47509:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47512:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47513:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47514:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47515:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47516:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47517:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47518:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47520:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1272)
2: g_cond_wait_until (+128)
3: g_async_queue_pop_intern_unlocked (+104)
4: g_async_queue_timeout_pop (+56)
5: g_thread_pool_thread_proxy (+388)
6: g_thread_proxy (+68)
7: _pthread_start (+136)
8: thread_start (+8)
Thread 47526:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47527:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47528:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47529:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47530:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47531:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47532:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47533:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47534:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47535:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47536:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47537:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47538:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47539:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47540:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47541:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47542:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47543:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47544:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47545:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47546:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: __kmp_suspend_64 (+288)
3: kmp_flag_64::wait(kmp_info*, int, void*) (+1732)
4: __kmp_hyper_barrier_release(barrier_type, kmp_info*, int, int, int, void*) (+144)
5: __kmp_fork_barrier(int, int) (+484)
6: __kmp_launch_thread (+212)
7: __kmp_launch_worker(void*) (+252)
8: _pthread_start (+136)
9: thread_start (+8)
Thread 47552:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1228)
2: select_thread_func (+132)
3: _pthread_start (+136)
4: thread_start (+8)
Thread 47579:
0: start_wqthread (+0)
Thread 47638:
0: __psynch_cvwait (+8)
1: _pthread_cond_wait (+1272)
2: CVDisplayLink::waitUntil(unsigned long long) (+328)
3: CVDisplayLink::runIOThread() (+504)
4: _pthread_start (+136)
5: thread_start (+8)
Thread 47640:
0: swtch_pri (+8)
1: cthread_yield (+32)
2: kmp_flag_64::wait(kmp_info*, int, void*) (+712)
3: __kmp_hyper_barrier_gather(barrier_type, kmp_info*, int, int, void (*)(void*, void*), void*) (+412)
4: __kmp_join_barrier(int) (+596)
5: __kmp_internal_join (+92)
6: __kmp_join_call (+236)
7: __kmpc_fork_call (+216)
8: rtengine::ImProcFunctions::WaveletDenoiseAllAB(rtengine::wavelet_decomposition&, rtengine::wavelet_decomposition&, float*, float (*) [3], float*, int, float, bool, bool, bool, int) (+412)
9: .omp_outlined..23 (+5628)
10: rtengine::ImProcFunctions::RGB_denoise(int, rtengine::Imagefloat*, rtengine::Imagefloat*, rtengine::Imagefloat*, float*, float*, float*, bool, rtengine::procparams::DirPyrDenoiseParams const&, double, rtengine::NoiseCurve const&, rtengine::NoiseCurve const&, float&, float&) (+5504)
11: rtengine::Crop::update(int) (+6756)
12: rtengine::Crop::fullUpdate() (+116)
13: (anonymous namespace)::call_thread_entry_slot(void*) (+44)
14: g_thread_proxy (+68)
15: _pthread_start (+136)
16: thread_start (+8)
I wrote this little Python program to do the translation based on details from https://developer.apple.com/documentation/xcode/interpreting-the-json-format-of-a-crash-report:
translate_macos_ips.py
from argparse import ArgumentParser
import json
from pathlib import Path
def parse_args():
parser = ArgumentParser(
prog='macOS IPS crash report translator',
description='Translates .ips crash reports into a human-friendly format.',
)
parser.add_argument('filename')
return parser.parse_args()
def format_key_value(key_value):
key, value = key_value
value = str(value)
if '\n' in value:
value = '\n\t' + str(value).replace('\n', '\n\t')
return f'{key}: {value}'
def translate_metadata(metadata, translated):
translated.append('Metadata')
translated.append('--------')
for item in metadata.items():
translated.append(format_key_value(item))
def is_json_container(json_object):
return isinstance(json_object, list) or isinstance(json_object, dict)
def format_frame(frame):
symbol = frame.get('symbol', '?')
symbol_location = frame.get('symbolLocation', '?')
return f'{symbol} (+{symbol_location})'
def translate_thread(thread, translated):
thread_id: int = thread['id']
frames: list = thread['frames']
triggered: bool = thread.get('triggered', False)
translated.append(
f'Thread {thread_id}{" (TRIGGERD)" if triggered else ""}:')
translated.extend([
f'\t{i}: {format_frame(frame)}' for i, frame in enumerate(frames)])
def translate_threads(data, translated):
translated.append('Threads')
translated.append('-------')
for thread in data:
translate_thread(thread, translated)
def translate_crash_data(data, translated):
translated.append('Crash Data')
translated.append('----------')
translated.extend(
[format_key_value(item) for item in data.items()
if not is_json_container(item[1])]
)
translated.append('')
translate_threads(data['threads'], translated)
def translate(content):
translated = []
lines = content.splitlines()
metadata = json.loads(lines[0].encode())
translate_metadata(metadata, translated)
if metadata['bug_type'] == '309':
translated.append('')
crash_data = json.loads('\n'.join(lines[1:]).encode())
translate_crash_data(crash_data, translated)
return '\n'.join(translated)
def main():
args = parse_args()
filename = args.filename
file = Path(filename).read_text()
translated = translate(file)
print(translated)
if __name__ == '__main__':
main()
Closing as a duplicate.
from rawtherapee.
Related Issues (20)
- History is getting spammed when Color Appearance & Lighting module is enabled Build 5.10-190 on dev branch. HOT 8
- A gamma shift issue/color change after saving to jpg HOT 1
- No DateTime (= editing date) in EXIF data of exported photo
- Please support Rust-free `librsvg` HOT 4
- Resulting JPG file is locked after Save As, Linux build 5.10-194 HOT 6
- JPG Export best-quality really chroma subsampling 4:4:4 ? HOT 1
- Film Negative - Improper assumption of mapping between raw values and transmission coefficient HOT 11
- RawTherapee 5.10 not responsive after start HOT 4
- Am I misunderstanding TP_LOCALLAB_AVOIDCOLORSHIFT_TOOLTIP? HOT 3
- Feature request: export pictures in HEIF 10bit HOT 3
- The GUI doesn't open on first install (Windows). HOT 1
- Wavelets - malfunction for the “selective range” part HOT 1
- Program resources not loaded when installed in directory with special characters HOT 7
- Build fails with libjpeg-turbo 3.0.3: Undefined symbols for architecture x86_64: "_jpeg_std_message_table" HOT 12
- Sony ILCE-6700 has invalid pixels on the right border HOT 1
- Chinese (Simplified) translation (intended for) Rawtherapee 5.8 (or 5.9?) HOT 1
- Please consider implementing a better way to preview and scroll through presets HOT 1
- Update GUI in Japanese HOT 1
- Add/Edit Exif not possible, if Exif data is not available in photo HOT 3
- Assertion '__n < this->size()' failed. HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rawtherapee.