Skip to content

Crash on high resolution & Apple M1 #257

@fluidray

Description

@fluidray

Using OIDN 2.3.1, OIDN crashes when committing the filter for a high resolution image (the following stack trace is for resolution 3456x1828). I'm including the C++ portion as well, but it's the standard setup using the albedo and normal images. Note that the same filter is used previously at lower resolution, then re-committed using the full resolution image. The crash happens every time the full resolution is image is used, either when committing the HDR filter or the Albedo filter.

Thread 65 Crashed:
0 Chromium Embedded Framework 0x12a390db8 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1329956
1 Chromium Embedded Framework 0x12a390db8 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1329956
2 Chromium Embedded Framework 0x12a390dd0 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1329980
3 Chromium Embedded Framework 0x12a390dec fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1330008
4 Chromium Embedded Framework 0x12a394adc fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1345608
5 Chromium Embedded Framework 0x12a3934f0 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1339996
6 Chromium Embedded Framework 0x12a392a7c fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1337320
7 Chromium Embedded Framework 0x12a39c3d8 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1376580
8 Chromium Embedded Framework 0x12a09a830 ChromeAppModeStart_v7 + 3938164
9 Chromium Embedded Framework 0x12a3a2c70 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 1403356
10 libsystem_malloc.dylib 0x1814e3e70 _malloc_zone_memalign + 316
11 libsystem_malloc.dylib 0x1814e454c _posix_memalign + 52
12 libOpenImageDenoise_core.dylib 0x34cd5a95c oidn::alignedMalloc(unsigned long, unsigned long) + 40
13 libOpenImageDenoise_core.dylib 0x34cd71de8 oidn::USMHeap::realloc(unsigned long) + 112
14 libOpenImageDenoise_core.dylib 0x34cd5ace4 oidn::ScratchArenaManager::attach(oidn::ScratchArena*) + 120
15 libOpenImageDenoise_core.dylib 0x34cd5af04 oidn::ScratchArena::ScratchArena(oidn::ScratchArenaManager*, unsigned long, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&) + 100
16 libOpenImageDenoise_core.dylib 0x34cd774e0 oidn::Subdevice::newScratchArena(unsigned long, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&) + 128
17 libOpenImageDenoise_core.dylib 0x34cd7fc84 oidn::UNetFilter::buildModel(unsigned long) + 1080
18 libOpenImageDenoise_core.dylib 0x34cd7e990 oidn::UNetFilter::init() + 1212
19 libOpenImageDenoise_core.dylib 0x34cd664ec oidn::Device::execute(std::__1::function<void ()>&&, oidn::SyncMode) + 40
20 libOpenImageDenoise_core.dylib 0x34cd7e2b4 oidn::UNetFilter::commit() + 236
21 libOpenImageDenoise.dylib 0x113232a04 oidnCommitFilter + 100
22 AmbientOcclusionEx_202400_osx_x64_4_0_1.bundle 0x3493222b0 oidn::FilterRef::commit() + 28 (oidn.hpp:507)
23 AmbientOcclusionEx_202400_osx_x64_4_0_1.bundle 0x349351084 pg_kernel_t::flush_films(bool, float, std::


m_oidn_filter.setImage("color", merged_image, oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
        m_oidn_filter.setImage("albedo", &m_albedo_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
        m_oidn_filter.setImage("normal", &m_normal_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
        m_oidn_filter.setImage("output", output_image, oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
        m_oidn_filter.set("hdr", true);
        m_oidn_filter.set("cleanAux", m_is_full_res);        
        m_oidn_filter.set("quality", m_is_full_res ? oidn::Quality::High : oidn::Quality::Fast);

        m_oidn_filter.setProgressMonitorFunction(&pg_kernel_t::filter_progress_func, (void*)(lock_request));
---> CRASHES EITHER HERE -->        m_oidn_filter.commit();

        if (m_is_full_res) {
            m_oidn_albedo_filter.setImage("albedo", &m_albedo_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
            m_oidn_albedo_filter.setImage("output", &m_albedo_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
            m_oidn_albedo_filter.setProgressMonitorFunction(&pg_kernel_t::filter_progress_func, (void*)(lock_request));
 ---> OR HERE -->            m_oidn_albedo_filter.commit();

            m_oidn_albedo_filter.execute();

            if (lock_request && *lock_request > 0) return;

            m_oidn_normal_filter.setImage("normal", &m_normal_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
            m_oidn_normal_filter.setImage("output", &m_normal_image.front(), oidn::Format::Float3, m_film_size.x, m_film_size.y, 0, sizeof(col4f));
            m_oidn_normal_filter.setProgressMonitorFunction(&pg_kernel_t::filter_progress_func, (void*)(lock_request));
            m_oidn_normal_filter.commit();

            m_oidn_normal_filter.execute();
            
            if (lock_request && *lock_request > 0) return;
        }

        m_oidn_filter.execute();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions