darktable-org / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
9.08k stars 1.1k forks source link

slideshow crashes due to recent change in dt_dev_image #15554

Closed TurboGit closed 8 months ago

TurboGit commented 8 months ago

Any call to dt_dev_image() with zoomx & zoomy set to NULL will crash darktable.

This has been introduced in 5a678cd8505394008165bbc7391c4438c3d0e169 to fix export, thumbnails & slideshow.

It breaks the overlay module being worked on in po/compose (that's how I found about this issue).

After looking at the code the slideshow also calling dt_dev_image without zoomx & zoomy and I can confirm that starting the slideshow also crashes darktable. So possibly something wrong added after the mentioned commit which had fixed the slideshow.

TurboGit commented 8 months ago

@dterrahe : One for you I bet :) TIA.

dterrahe commented 8 months ago

So possible something wrong added after the mentioned commit which had fixed the slideshow.

I'm not sure what this sentence means. Slideshow seems to work fine for me on current master?

TurboGit commented 8 months ago

Weird, I can make it crashes consistently:

And I always get:

Thread 6 "worker 0" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffdfdbb6c0 (LWP 2706564)]
0x00007ffff7bb9e61 in dt_dev_process_image_job (dev=dev@entry=0x7fffdfda9980, 
    port=0x7fffdfda9920, pipe=pipe@entry=0x7fffd4000eb0, 
    signal=signal@entry=4294967295)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/develop/develop.c:392
392     if(port->pipe->loading || pipe_changed != DT_DEV_PIPE_UNCHANGED)
(gdb) bt
#0  0x00007ffff7bb9e61 in dt_dev_process_image_job
    (dev=dev@entry=0x7fffdfda9980, port=0x7fffdfda9920, pipe=pipe@entry=0x7fffd4000eb0, signal=signal@entry=4294967295)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/develop/develop.c:392
#1  0x00007ffff7bbdf78 in dt_dev_image
    (imgid=imgid@entry=20, width=<optimized out>, height=<optimized out>, history_end=history_end@entry=-1, processed_width=processed_width@entry=0x0, processed_height=processed_height@entry=0x0, buf=0x7fffdfdaa3e8, scale=0x0, buf_width=0x7fffdfdaa3d8, buf_height=0x7fffdfdaa3e0, zoom_x=0x0, zoom_y=0x0, snapshot_id=-1)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/develop/develop.c:3538
#2  0x00007fffdc00397e in _process_image
    (d=d@entry=0x555557bb3930, slot=slot@entry=S_CURRENT)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/views/slideshow.c:206
#3  0x00007fffdc003c71 in _process_job_run (job=<optimized out>)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/views/slideshow.c:286
#4  0x00007ffff7b7932e in _control_job_execute (job=job@entry=0x5555599ac3d0)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/control/jobs.c:314
#5  0x00007ffff7b79bd0 in _control_run_job (control=<optimized out>)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/control/jobs.c:333
#6  _control_work (ptr=<optimized out>)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/control/jobs.c:582
#7  0x00007ffff78a63ec in start_thread (arg=<optimized out>)
    at ./nptl/pthread_create.c:444
#8  0x00007ffff7926a4c in clone3 ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
TurboGit commented 8 months ago

This is because port->pipe is NULL:

(gdb) f 0   
#0  0x00007ffff7bb9e61 in dt_dev_process_image_job (
    dev=dev@entry=0x7fffdfda9980, port=0x7fffdfda9920, 
    pipe=pipe@entry=0x7fffd4000eb0, signal=signal@entry=4294967295)
    at /home/obry/dev/builds/c-darktable/x86_64-linux-gnu-default/src/src/develop/develop.c:392
392     if(port->pipe->loading || pipe_changed != DT_DEV_PIPE_UNCHANGED)
(gdb) print port->pipe
$1 = (struct dt_dev_pixelpipe_t *) 0x0

And probably due to the fact that we don't initialize port->pipe when zoomx & zoomy are not requested.

In dt_dev_image we have:

  if(!zoom_x && !zoom_y)
    port = &(dt_dev_viewport_t) { .zoom   = DT_ZOOM_FIT,
                                  .width  = width,
                                  .height = height,
                                  .ppd    = 1.0,
                                  .pipe   = pipe };
dterrahe commented 8 months ago

port->pipe gets set to pipe there (i.e. dev.full.pipe)

TurboGit commented 8 months ago

port->pipe gets set to pipe there (i.e. dev.full.pipe)

Not inside port struct. It is set in port struct only if zoomx or zoomy are not NULL, and that's where the issue occurs (in port->pipe).

TurboGit commented 8 months ago

But since you cannot reproduce with current master there is probably some other context... Maybe a pref? I don't know, but on my side it crash consistently.

@jenshannoschwalm @wpferguson : Is this crashing for you too?

wpferguson commented 8 months ago

I'm on current master (1066) and I've tried twice and it's crashed twice.

EDIT: with and without opencl

Latest...

Thread 7 (Thread 0x7f46937fe640 (LWP 85624) "worker 3"):
#0  0x00007f46ac2ea42f in __GI___wait4 (pid=pid@entry=85964, stat_loc=stat_loc@entry=0x0, options=options@entry=0, usage=usage@entry=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
        sc_ret = -512
        sc_cancel_oldtype = 0
#1  0x00007f46ac2ea3ab in __GI___waitpid (pid=pid@entry=85964, stat_loc=stat_loc@entry=0x0, options=options@entry=0) at ./posix/waitpid.c:38
#2  0x00007f46ac77fae0 in _dt_sigsegv_handler (param=11) at /home/bill/src/darktable/darktable/src/common/system_signal_handling.c:101
        pid = 85964
        name_used = 0x7f467c0a86b0 "/tmp/darktable_bt_7QCTD2.txt"
        fout = <optimized out>
        delete_file = 0
        datadir = "/opt/darktable45/share/darktable", '\000' <repeats 4063 times>
        pid_arg = 0x7f467c0a8560 "85564"
        comm_arg = 0x7f467c007250 "/opt/darktable45/share/darktable/gdb_commands"
        logenable = 0x7f467c0a6e40 "set logging enabled on"
        setlogfile = 0x7f467c0ae2b0 "set logging file /tmp/darktable_bt_7QCTD2.txt"
#3  0x00007f46ac242520 in <signal handler called> () at /lib/x86_64-linux-gnu/libc.so.6
#4  0x00007f46ac807458 in dt_dev_process_image_job (dev=dev@entry=0x7f46937ec940, port=0x7f46937ec8e0, pipe=pipe@entry=0x7f467c0016b0, signal=signal@entry=4294967295) at /home/bill/src/darktable/darktable/src/develop/develop.c:392
        zoom = 2474559424
        closeup = 31
        start = {clock = 408335650.46920598, user = 31.708058999999999}
        buf = {size = DT_MIPMAP_FULL, imgid = 78180, width = 7128, height = 4732, iscale = 1, buf = 0x7f44f7faa080 "\376\001\371\001\375\001\374\001", color_space = DT_COLORSPACE_NONE, cache_entry = 0x55d46b69fe40}
        pipe_changed = <optimized out>
        scale = 1
        window_width = 2147483647
        window_height = 2147483647
        zoom_x = 0
        zoom_y = 0
        wd = <optimized out>
        ht = <optimized out>
        x = <optimized out>
        y = <optimized out>
        __FUNCTION__ = "dt_dev_process_image_job"
#5  0x00007f46ac80b62e in dt_dev_image (imgid=imgid@entry=78180, width=<optimized out>, height=<optimized out>, history_end=history_end@entry=-1, processed_width=processed_width@entry=0x0, processed_height=processed_height@entry=0x0, buf=0x7f46937ed3b0, scale=0x0, buf_width=0x7f46937ed3a0, buf_height=0x7f46937ed3a8, zoom_x=0x0, zoom_y=0x0, snapshot_id=-1) at /home/bill/src/darktable/darktable/src/develop/develop.c:3538
        dev = {gui_attached = 0, gui_leaving = 0, gui_synch = 0, gui_previous_target = 0x0, gui_previous_time = 0, gui_previous_pipe_time = 0, focus_hash = 0, history_updating = 0, image_force_reload = 0, first_load = 0, autosaving = 0, image_invalid_cnt = 0, timestamp = 0, preview_average_delay = 0, gui_module = 0x0, preview_pipe = 0x7f467c002fb0, image_storage = {exif_inited = 1, orientation = ORIENTATION_NONE, exif_exposure = 0.00400000019, exif_exposure_bias = 0, exif_aperture = 4.5, exif_iso = 100, exif_focal_length = 17, exif_focus_distance = 5.38499975, exif_crop = 0, exif_maker = "Canon", '\000' <repeats 58 times>, exif_model = "Canon EOS R7", '\000' <repeats 51 times>, exif_lens = "Canon EF-S 17-55mm f/2.8 IS USM", '\000' <repeats 96 times>, exif_datetime_taken = 63833578304520000, exif_correction_type = CORRECTION_TYPE_NONE, exif_correction_data = {sony = {nc = 32582, distortion = {120, 53, 0, 0, 7882, 27735, 21972, 0, 1, 0, 0, 0, 132, 216, 32582, 0}, ca_r = {24760, 27902, 21972, 0, 2, 0, 32582, 0, 260, 140, 0, 0, 7886, 27735, 21972, 0}, ca_b = {1, 0, 0, 0, 567, 192, 32582, 0, 7887, 27735, 21972, 0, 5, 0, 32582, 0}, vignetting = {0, 0, 0, 0, 9816, -21502, 32582, 0, 0, 0, 0, 0, 4768, 26892, 21972, 0}}, fuji = {nc = 32582, cropf = 4.86744945e-39, knots = {0, 1.04025779e+27, 3.07893299e-41, 1.40129846e-45, 0, 1.98366521e-38, 4.56571066e-41, 2.4601912e+27, 3.07893299e-41, 2.80259693e-45, 4.56571066e-41}, distortion = {1.28573338e-38, 0, 1.04025809e+27, 3.07893299e-41, 1.40129846e-45, 0, 1.76332098e-38, 4.56571066e-41, 1.04025816e+27, 3.07893299e-41, 7.00649232e-45}, ca_r = {4.56571066e-41, 0, 0, -1.84953962e-12, 4.56571066e-41, 0, 0, 1.05835981e+25, 3.07893299e-41, 0, 0}, ca_b = {-1.84953962e-12, 4.56571066e-41, 0, 0, 1.05835981e+25, 3.07893299e-41, 0, 0, -1.84953962e-12, 4.56571066e-41, 0}, vignetting = {0, 1.05835981e+25, 3.07893299e-41, 0, 0, -1.84953962e-12, 4.56571066e-41, 0, 0, 1.05835981e+25, 3.07893299e-41}}, dng = {planes = 32582, cwarp = {{4.86744945e-39, 0, 1.04025779e+27, 3.07893299e-41, 1.40129846e-45, 0}, {1.98366521e-38, 4.56571066e-41, 2.4601912e+27, 3.07893299e-41, 2.80259693e-45, 4.56571066e-41}, {1.28573338e-38, 0, 1.04025809e+27, 3.07893299e-41, 1.40129846e-45, 0}}, centre_warp = {1.76332098e-38, 4.56571066e-41}, cvig = {1.04025816e+27, 3.07893299e-41, 7.00649232e-45, 4.56571066e-41, 0}, centre_vig = {0, -1.84953962e-12}, has_warp = 32582, has_vignette = 0}}, camera_maker = "Canon", '\000' <repeats 58 times>, camera_model = "EOS R7", '\000' <repeats 57 times>, camera_alias = "EOS R7", '\000' <repeats 57 times>, camera_makermodel = "Canon EOS R7", '\000' <repeats 115 times>, camera_missing_sample = 0, filename = "115EOSR7_2R4A1513.CR3", '\000' <repeats 234 times>, width = 7128, height = 4732, final_width = 0, final_height = 0, p_width = 6984, p_height = 4660, crop_x = 144, crop_y = 72, crop_right = 0, crop_bottom = 0, aspect_ratio = 1.5, num = 0, flags = 1600, film_id = 60, version = 0, id = 78180, group_id = 78180, import_timestamp = 63833618410028840, change_timestamp = -1, export_timestamp = -1, print_timestamp = -1, loader = LOADER_LIBRAW, buf_dsc = {channels = 1, datatype = TYPE_UINT16, filters = 2492765332, xtrans = {"\000\000\000\000\000", "\000\000\000\000\000", "\000\000\000\000\000", "\000\000\000\000\000", "\000\000\000\000\000", "\000\000\000\000\000"}, rawprepare = {raw_black_level = 0, raw_white_point = 0}, temperature = {enabled = 0, coeffs = {0, 0, 0, 0}}, processed_maximum = {0, 0, 0, 0}, cst = 0}, d65_color_matrix = {nan(0x400000), -3.28452081e+21, 3.33389737e-24, 2.46484807e-35, 1.39283272e-30, 2.39738284e+27, 1.21468402e-30, 1.85827591e-40, -2.0528255e+20}, profile = 0x0, profile_size = 0, colorspace = DT_IMAGE_COLORSPACE_NONE, legacy_flip = {legacy = 0, user_flip = 0}, geoloc = {longitude = nan(0x8000000000000), latitude = nan(0x8000000000000), elevation = nan(0x8000000000000)}, raw_black_level = 511, raw_black_level_separate = {511, 511, 511, 511}, raw_white_point = 13036, fuji_rotation_pos = 0, pixel_aspect_ratio = 1, wb_coeffs = {1986, 1024, 1481, 1024}, adobe_XYZ_to_CAM = {{1.0424, -0.313800007, -0.129999995}, {-0.422100008, 1.19379997, 0.258399993}, {-0.0546999983, 0.165800005, 0.618300021}, {0, 0, 0}}, usercrop = {0, 0, 1, 1}, dng_gain_maps = 0x0, cache_entry = 0x55d46b89d000}, requested_id = 78180, history_mutex = {mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}}, history_end = 11, history = 0x55d46b740b60 = {0x7f467c06b990, 0x7f467c06ba70, 0x7f467c068670, 0x7f467c068750, 0x7f467c069ab0, 0x7f467c069d40, 0x7f467c069fd0, 0x7f467c06a0b0, 0x7f467c06c990, 0x7f467c06cc20, 0x7f467c06ceb0}, history_postpone_invalidate = 0, history_last_module = 0x0, iop_instance = 87, iop = 0x55d46b7850a0 = {0x7f467c02a140, 0x7f467c060760, 0x7f467c04b5a0, 0x7f467c04c780, 0x7f467c043e80, 0x7f467c065280, 0x7f467c04a100, 0x7f467c011d40, 0x7f467c050660, 0x7f467c03f5e0, 0x7f467c063ce0, 0x7f467c02e6c0, 0x7f467c023740, 0x7f467c027020, 0x7f467c03dc20, 0x7f467c02bc00, 0x7f467c02dde0, 0x7f467c0297e0, 0x7f467c038f20, 0x7f467c0645c0, 0x7f467c058e20, 0x7f467c02aa40, 0x7f467c024c60, 0x7f467c025e40, 0x7f467c02d4a0, 0x7f467c027900, 0x7f467c05fe80, 0x7f467c025540, 0x7f467c038540, 0x7f467c03e500, 0x7f467c055bc0, 0x7f467c0281e0, 0x7f467c02efa0, 0x7f467c043520, 0x7f467c026720, 0x7f467c045920, 0x7f467c022e80, 0x7f467c046b00, 0x7f467c00ca10, 0x7f467c04ab00, 0x7f467c00c230, 0x7f467c048f40, 0x7f467c02cbc0, 0x7f467c04d0a0, 0x7f467c012ea0, 0x7f467c047d00, 0x7f467c042c00, 0x7f467c030540, 0x7f467c0565c0, 0x7f467c04f9a0, 0x7f467c041a00, 0x7f467c028b20, 0x7f467c03fec0, 0x7f467c00dc50, 0x7f467c0242c0, 0x7f467c031760, 0x7f467c011560, 0x7f467c02f880, 0x7f467c058520, 0x7f467c0410e0, 0x7f467c00b5d0, 0x7f467c062b20, 0x7f467c045040, 0x7f467c061920, 0x7f467c048660, 0x7f467c02b320, 0x7f467c030e80, 0x7f467c061040, 0x7f467c056f80, 0x7f467c046220, 0x7f467c057c40, 0x7f467c00ba50, 0x7f467c0125c0, 0x7f467c044760, 0x7f467c040800, 0x7f467c0110e0, 0x7f467c062200, 0x7f467c03d340, 0x7f467c054170, 0x7f467c01d7f0, 0x7f467c063400, 0x7f467c042320, 0x7f467c049820, 0x7f467c04be80, 0x7f467c0225a0, 0x7f467c054da0, 0x7f467c053990}, alliop = 0x0, iop_order_version = 0, iop_order_list = 0x55d46b756ac0 = {0x7f467c00e960, 0x7f467c00e9b0, 0x55d46d08df10, 0x7f467c002550, 0x7f467c006e40, 0x7f467c065b60, 0x7f467c065bb0, 0x7f467c065c00, 0x7f467c065c50, 0x7f467c065ca0, 0x7f467c065cf0, 0x7f467c065d40, 0x7f467c065d90, 0x7f467c065de0, 0x7f467c065e30, 0x7f467c065e80, 0x7f467c065ed0, 0x7f467c065f20, 0x7f467c065f70, 0x7f467c065fc0, 0x7f467c066010, 0x7f467c066060, 0x7f467c0660b0, 0x7f467c066100, 0x7f467c066150, 0x7f467c0661a0, 0x7f467c0661f0, 0x7f467c066240, 0x7f467c066290, 0x7f467c0662e0, 0x7f467c066330, 0x7f467c066380, 0x7f467c0663d0, 0x7f467c066420, 0x7f467c066470, 0x7f467c066910, 0x7f467c066960, 0x7f467c0669b0, 0x7f467c066a00, 0x7f467c066a50, 0x7f467c066aa0, 0x7f467c066af0, 0x7f467c066b40, 0x7f467c066b90, 0x7f467c066be0, 0x7f467c066c30, 0x7f467c066c80, 0x7f467c066cd0, 0x7f467c066d20, 0x7f467c066d70, 0x7f467c066dc0, 0x7f467c066e10, 0x7f467c066e60, 0x7f467c066eb0, 0x7f467c066f00, 0x7f467c066f50, 0x7f467c066fa0, 0x7f467c00a800, 0x7f467c066ff0, 0x7f467c067040, 0x7f467c067090, 0x7f467c0670e0, 0x7f467c067130, 0x7f467c067180, 0x7f467c0671d0, 0x7f467c067220, 0x7f467c067270, 0x7f467c0672c0, 0x7f467c067310, 0x7f467c067360, 0x7f467c0673b0, 0x7f467c067400, 0x7f467c067450, 0x7f467c0674a0, 0x7f467c0674f0, 0x7f467c067540, 0x7f467c067590, 0x7f467c0675e0, 0x7f467c067630, 0x7f467c067680, 0x7f467c0676d0, 0x7f467c067720, 0x7f467c067770, 0x7f467c0677c0, 0x7f467c067810, 0x7f467c067860, 0x7f467c0678b0}, allprofile_info = 0x55d46b78f740 = {0x7f467c0a9880, 0x7f467c0addc0, 0x7f467c0ae340}, histogram_pre_tonecurve = 0x7f467c007f10, histogram_pre_levels = 0x7f467c008f20, histogram_pre_tonecurve_max = 4294967295, histogram_pre_levels_max = 4294967295, forms = 0x0, form_visible = 0x0, form_gui = 0x0, allforms = 0x0, full_preview = 0, full_preview_last_zoom = DT_ZOOM_FIT, full_preview_last_closeup = 0, full_preview_last_zoom_x = 0, full_preview_last_zoom_y = 0, full_preview_last_module = 0x0, full_preview_masks_state = 0, proxy = {exposure = {module = 0x0, set_exposure = 0x0, get_exposure = 0x0, set_black = 0x0, get_black = 0x0}, rotate = 0x0, modulegroups = {module = 0x0, set = 0x0, get = 0x0, get_activated = 0x0, test = 0x0, switch_group = 0x0, update_visibility = 0x0, test_visible = 0x0, basics_module_toggle = 0x0}, masks = {module = 0x0, list_change = 0x0, list_remove = 0x0, list_update = 0x0, selection_change = 0x0}}, chroma = {temperature = 0x7f467c04b5a0, adaptation = 0x0, wb_coeffs = {2.0058121681213379, 1, 1.3646310567855835, inf}, D65coeffs = {2.0058120725205377, 1, 1.3646311117793406, inf}, as_shot = {1.939453125, 1, 1.4462890625, 1}, late_correction = 0}, cropping = {exposer = 0x0, requester = 0x0}, overexposed = {floating_window = 0x0, button = 0x0, enabled = 0, colorscheme = DT_DEV_OVEREXPOSED_REDBLUE, lower = -12.6899996, upper = 99.9899979, mode = DT_CLIPPING_PREVIEW_LUMINANCE}, rawoverexposed = {floating_window = 0x0, button = 0x0, enabled = 0, mode = DT_DEV_RAWOVEREXPOSED_MODE_MARK_CFA, colorscheme = DT_DEV_RAWOVEREXPOSED_RED, threshold = 1}, iso_12646 = {button = 0x0}, profile = {floating_window = 0x0, softproof_button = 0x0, gamut_button = 0x0}, second_wnd = 0x0, second_wnd_button = 0x0, full = {widget = 0x55d46b58b450, orig_width = 0, orig_height = 0, width = -1, height = -1, border_size = 0, dpi = 120, dpi_factor = 1.25, ppd = 1, iso_12646 = 0, zoom = DT_ZOOM_FIT, closeup = 0, zoom_x = 0, zoom_y = 0, zoom_scale = 1, pipe = 0x7f467c0016b0}, preview2 = {widget = 0x0, orig_width = 0, orig_height = 0, width = 0, height = 0, border_size = 0, dpi = 0, dpi_factor = 0, ppd = 0, iso_12646 = 0, zoom = DT_ZOOM_FIT, closeup = 0, zoom_x = 0, zoom_y = 0, zoom_scale = 1, pipe = 0x7f467c0038a0}, mask_form_selected_id = 0, darkroom_skip_mouse_events = 0, darkroom_mouse_in_center_area = 0}
        pipe = 0x7f467c0016b0
        port = <optimized out>
        bufsize = <optimized out>
#6  0x00007f46a1ae8e1f in _process_image (d=d@entry=0x55d46b5fdc90, slot=slot@entry=S_CURRENT) at /home/bill/src/darktable/darktable/src/views/slideshow.c:206
        s_width = 3840
        s_height = 2160
        imgid = 78180
        width = 0
        height = 0
        buf = 0x0
        slt = <optimized out>
#7  0x00007f46a1ae9131 in _process_job_run (job=<optimized out>) at /home/bill/src/darktable/darktable/src/views/slideshow.c:286
        d = 0x55d46b5fdc90
#8  0x00007f46ac7945e3 in _control_job_execute (job=job@entry=0x55d46ce20170) at /home/bill/src/darktable/darktable/src/control/jobs.c:314
#9  0x00007f46ac794ea8 in _control_run_job (control=0x55d46903b670) at /home/bill/src/darktable/darktable/src/control/jobs.c:333
        job = 0x55d46ce20170
        params = <optimized out>
        control = 0x55d46903b670
        name = "worker 3\000\000\000\000\000\000\000"
#10 _control_work (ptr=<optimized out>) at /home/bill/src/darktable/darktable/src/control/jobs.c:582
        params = <optimized out>
        control = 0x55d46903b670
        name = "worker 3\000\000\000\000\000\000\000"
#11 0x00007f46ac294ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140726951681200, 435942448767770802, 139941099071040, 11, 139941512824784, 140726951681552, -539902380035989326, -539975613384810318}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#12 0x00007f46ac326a40 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
jenshannoschwalm commented 8 months ago

Can't test for two days but didn't have a crash for some time...

TurboGit commented 8 months ago

@wpferguson : Thanks, you get the very same crash as me. At least I'm not alone :)

wpferguson commented 8 months ago

bisect is

5a678cd8505394008165bbc7391c4438c3d0e169 is the first bad commit
commit 5a678cd8505394008165bbc7391c4438c3d0e169
Author: Diederik ter Rahe <dterrahe@yahoo.com>
Date:   Wed Oct 25 08:59:35 2023 -0400

    fix export, thumbnails & slideshow

 src/develop/develop.c      | 29 ++++++++++-------
 src/develop/pixelpipe.h    |  1 +
 src/develop/pixelpipe_hb.c | 14 ++++----
 src/gui/accelerators.c     |  8 +++--
 src/views/slideshow.c      | 58 +++++++++++++++++++---------------
 src/views/view.c           | 79 ++--------------------------------------------
 6 files changed, 66 insertions(+), 123 deletions(-)
wpferguson commented 8 months ago

@TurboGit but I have another "feature". When I run slideshow no image appears, just a gray screen. I see the mouse cursor disappear when a new image "loads" so the screen is getting redrawn. My screen is 4K, so maybe that's the issue. I don't use slideshow ever, so no telling how long it's been this way (or maybe it's just me :))

TurboGit commented 8 months ago

@wpferguson : Yep, you came to the same conclusion as me, I wrote in original message:

This has been introduced in https://github.com/darktable-org/darktable/commit/5a678cd8505394008165bbc7391c4438c3d0e169 to fix export, thumbnails & slideshow.

dterrahe commented 8 months ago

Can reproduce when compiling with gcc 12.2. I'll produce a fix.

TurboGit commented 8 months ago

port->pipe gets set to pipe there (i.e. dev.full.pipe)

Oups... sorry I see that I read the conditional in the opposite direction. I see that the bock:

  if(!zoom_x && !zoom_y)
    port = &(dt_dev_viewport_t) { .zoom   = DT_ZOOM_FIT,
                                  .width  = width,
                                  .height = height,
                                  .ppd    = 1.0,
                                  .pipe   = pipe };

Was indeed executed when zoomx and zoomy are NULL. My bad, at least now I understand the misunderstanding. Again, sorry about that.