Closed Mpic closed 3 years ago
Do you mean that you have filmicrgb activated by default? Or you activate filmicrgb after? Or was it activated in the image before pressing spacebar?
That smells like bad memory alignment.
@TurboGit, I mean that I activate filmicrgb by default via a module-specific preset, yes. So when I press the spacebar, the image is opened and module presets are automatically applied.
@aurelienpierre, what do you mean by bad memory alignment ? Do I have any power on this ?
what do you mean by bad memory alignment ? Do I have any power on this ?
To enable low-level CPU optimizations (vectorization, aka SIMD), the memory buffers are to be aligned on 64 bits adresses in RAM, and single pixels on 16 bits. This way, you can get almost a ×4 speed-up for the same code. The program asks and expects this alignment, but it's the OS that allocates RAM space at the end and gets the last word on it.
This error can be the result of improper memory alignment, since the line pointed is a SIMD pragma. Or it can be a buffer used after being emptied or before being initialized, but it's less likely.
It doesn't happen when you enable filmic manually ?
It doesn't happen when you enable filmic manually ?
No, never :-/
With a new darktable build, the error comes quite often when I enable filmic RGB manually.
this is darktable 2.7.0+2161~g99cf6ae5e reporting an exception:
-------------------
Error occurred on Sunday, November 3, 2019 at 15:02:09.
darktable.exe caused an Access Violation at location 000000006BEC450F in module libfilmicrgb.dll Reading from location 000000007ADDF000.
AddrPC Params
000000006BEC450F 000000006BEC42E0 0000000005BDB6A0 0000000000000004 libfilmicrgb.dll!process._omp_fn.0 [S:/msys64/home/marti/darktable/src/iop/filmicrgb.c @ 464]
462: // Log tone-mapping
463: for(int c = 0; c < 3; c++)
> 464: temp[c] = log_tonemapping((pix_in[c] < 1.52587890625e-05f) ? 1.52587890625e-05f : pix_in[c],
465: data->grey_source, data->black_source, data->dynamic_range);
466:
00000000001768D9 000000005101A000 01D5924F363B3B36 00007FFFE359FA60 libgomp-1.dll!GOMP_parallel
000000006BEC660E 000000000F7C7E50 0000FDFE7874E159 0000000005BDB888 libfilmicrgb.dll!process [S:/msys64/home/marti/darktable/src/iop/filmicrgb.c @ 452]
450: {
451: #ifdef _OPENMP
> 452: #pragma omp parallel for simd default(none) \
453: dt_omp_firstprivate(ch, data, in, out, roi_out, work_profile, spline) \
454: schedule(simd:static) aligned(in, out:64)
0000000063709FB0 00007FFF5AEDA17A 00000000063DEAA0 0000000005BDBCB8 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 2192]
2190: else
2191: {
> 2192: module->process(module, piece, input, *output, &roi_in, roi_out);
2193: pixelpipe_flow |= (PIXELPIPE_FLOW_PROCESSED_ON_CPU);
2194: pixelpipe_flow &= ~(PIXELPIPE_FLOW_PROCESSED_ON_GPU | PIXELPIPE_FLOW_PROCESSED_WITH_TILING);
00000000637092ED 0000000000000001 0000000000000318 0000000005BDC518 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1244]
1242: piece->processed_roi_out = *roi_out;
1243:
> 1244: if(dt_dev_pixelpipe_process_rec(pipe, dev, &input, &cl_mem_input, &input_format, &roi_in,
1245: g_list_previous(modules), g_list_previous(pieces), pos - 1))
1246: return 1;
00000000637093DD 0000000000000000 0000000000000000 0000000005BDC518 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1111]
1109: if(!piece->enabled
1110: || (dev->gui_module && dev->gui_module->operation_tags_filter() & module->operation_tags()))
> 1111: return dt_dev_pixelpipe_process_rec(pipe, dev, output, cl_mem_output, out_format, &roi_in,
1112: g_list_previous(modules), g_list_previous(pieces), pos - 1);
1113: }
00000000637092ED 0000000005BDF0B0 000000000AB4BC98 0000000005BDC948 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1244]
1242: piece->processed_roi_out = *roi_out;
1243:
> 1244: if(dt_dev_pixelpipe_process_rec(pipe, dev, &input, &cl_mem_input, &input_format, &roi_in,
1245: g_list_previous(modules), g_list_previous(pieces), pos - 1))
1246: return 1;
00000000637092ED 0000000000000000 0000000000000000 0000000005BDCD78 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1244]
1242: piece->processed_roi_out = *roi_out;
1243:
> 1244: if(dt_dev_pixelpipe_process_rec(pipe, dev, &input, &cl_mem_input, &input_format, &roi_in,
1245: g_list_previous(modules), g_list_previous(pieces), pos - 1))
1246: return 1;
00000000637092ED 000000000AB50BF0 00000000064706E8 0000000005BDDA08 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1244]
1242: piece->processed_roi_out = *roi_out;
1243:
> 1244: if(dt_dev_pixelpipe_process_rec(pipe, dev, &input, &cl_mem_input, &input_format, &roi_in,
1245: g_list_previous(modules), g_list_previous(pieces), pos - 1))
1246: return 1;
00000000637093DD 0000000000000000 0000000000151440 0000000005BDDA08 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1111]
1109: if(!piece->enabled
1110: || (dev->gui_module && dev->gui_module->operation_tags_filter() & module->operation_tags()))
> 1111: return dt_dev_pixelpipe_process_rec(pipe, dev, output, cl_mem_output, out_format, &roi_in,
1112: g_list_previous(modules), g_list_previous(pieces), pos - 1);
1113: }
00000000637093DD 0000000000150000 0000000000000000 0000000005BDDA08 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1111]
1109: if(!piece->enabled
1110: || (dev->gui_module && dev->gui_module->operation_tags_filter() & module->operation_tags()))
> 1111: return dt_dev_pixelpipe_process_rec(pipe, dev, output, cl_mem_output, out_format, &roi_in,
1112: g_list_previous(modules), g_list_previous(pieces), pos - 1);
1113: }
00000000637092ED 0000000000000000 0000000100000000 0000000005BDF758 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1244]
1242: piece->processed_roi_out = *roi_out;
1243:
> 1244: if(dt_dev_pixelpipe_process_rec(pipe, dev, &input, &cl_mem_input, &input_format, &roi_in,
1245: g_list_previous(modules), g_list_previous(pieces), pos - 1))
1246: return 1;
00000000637093DD 0000000000000000 0000000000000000 0000000005BDF758 libdarktable.dll! ?? [S:/msys64/home/marti/darktable/src/develop/pixelpipe_hb.c @ 1111]
1109: if(!piece->enabled
1110: || (dev->gui_module && dev->gui_module->operation_tags_filter() & module->operation_tags()))
> 1111: return dt_dev_pixelpipe_process_rec(pipe, dev, output, cl_mem_output, out_format, &roi_in,
1112: g_list_previous(modules), g_list_previous(pieces), pos - 1);
1113: }
00000000637093DD 0000000000000000 0000000000000000 0000000005BDF758 libdarktable.dll! ??
This issue did not get any activity in the past 30 days and will be closed in 7 days if no update occurs. Please check if the master branch has fixed it since then.
Describe the bug
Darktable exception is often thrown when skipping to next picture with spacebar in darkroom
To Reproduce Darktable on Windows, compiled with these instructions.
When in darkroom mode, try to go to the next picture by pressing the spacebar. Presets are applied (involving filmic and other modules) because the picture is opened for the first time.
Expected behavior Show next picture without crashing
Platform (please complete the following information):