On Wed, 13 Nov 2024 12:17:07 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:
> When trying LTO (configure flag --enable-jvm-feature-link-time-opt=yes) on > Linux x86_64, gcc 11.3.0, we run into a lot of warnings and finally into this > error : > > .. tons of free and malloc related warnings ... > > > inlined from 'pop_segment' at > src/hotspot/share/utilities/stack.inline.hpp:188:9, > inlined from 'pop' at src/hotspot/share/utilities/stack.inline.hpp:84:30, > inlined from 'pop_overflow' at > src/hotspot/share/gc/shared/taskqueue.inline.hpp:231:28, > inlined from 'trim_queue_to_threshold' at > src/hotspot/share/gc/g1/g1ParScanThreadState.cpp:328:37: > src/hotspot/share/runtime/os.cpp:666:3: warning: call to 'malloc' declared > with attribute warning: use os::malloc [-Wattribute-warning] > src/hotspot/share/runtime/os.cpp:666:3: warning: call to 'malloc' declared > with attribute warning: use os::malloc [-Wattribute-warning] > In function 'malloc', > inlined from 'malloc' at src/hotspot/share/runtime/os.cpp:637:0, > inlined from 'AllocateHeap' at > src/hotspot/share/memory/allocation.cpp:42:31, > inlined from 'new_entry' at > src/hotspot/share/nmt/mallocSiteTable.cpp:181:25, > inlined from 'lookup_or_add' at > src/hotspot/share/nmt/mallocSiteTable.cpp:122:48, > inlined from 'allocation_at' at > src/hotspot/share/nmt/mallocSiteTable.hpp:151:37, > inlined from 'record_malloc' at > src/hotspot/share/nmt/mallocTracker.cpp:179:35, > inlined from 'record_malloc' at > src/hotspot/share/nmt/memTracker.hpp:81:42, > inlined from 'realloc' at src/hotspot/share/runtime/os.cpp:746:58, > inlined from 'ReallocateHeap' at > src/hotspot/share/memory/allocation.cpp:59:32, > inlined from 'grow' at src/hotspot/share/utilities/ostream.cpp:377:15, > inlined from 'write' at src/hotspot/share/utilities/ostream.cpp:400:11, > inlined from 'write' at src/hotspot/share/utilities/ostream.cpp:382:0, > inlined from 'put' at src/hotspot/share/utilities/ostream.cpp:212:8, > inlined from 'print_ascii_form' at > src/hotspot/share/runtime/os.cpp:965:19, > inlined from 'print_hex_location' at > src/hotspot/share/runtime/os.cpp:1008:21, > inlined from 'print_hex_dump' at src/hotspot/share/runtime/os.cpp:1050:23, > inlined from 'print_hex_dump' at src/hotspot/share/runtime/os.hpp:869:19, > inlined from 'print_block_on_error' at > src/hotspot/share/nmt/mallocHeader.cpp:64:23, > inlined from 'resolve_checked_impl' at > src/hotspot/share/nmt/mallocHeader.inline.hpp:106:41, > inlined from 'resolve_checked' at > src/hotspot/share/nmt/mallocHeader.inline.hpp:113:66, > inlined f... >From a cursory glance it seems that the problem is with >trim_queue_to_threshold. I see 3 possible solutions, from most likely to work >to least likely. I'll try to test them and come back to you // See 8343698 for why this is NOINLINE // FIXME: This worsens code quality by inhibiting compiler inlining heuristics, but is the only solution for now NOINLINE void* os::malloc(size_t size, MemTag mem_tag, const NativeCallStack& stack) DISABLED_WARNINGS_gcc_linux_g1ParScanThreadState.cpp := attribute-warning, \ // See 8343698 for the reason this workaround is in place PRAGMA_DIAG_PUSH PRAGMA_DISABLE_GCC_WARNING("-Wattribute-warning") // trim_queue_to_threshold definition here PRAGMA_DIAG_POP ------------- PR Comment: https://git.openjdk.org/jdk/pull/22069#issuecomment-2473886885