diff --git a/heapdump-bug-fix.patch b/heapdump-bug-fix.patch new file mode 100644 index 0000000000000000000000000000000000000000..2a0356c637242ce466cf2a8c4e7c2d3c46031d82 --- /dev/null +++ b/heapdump-bug-fix.patch @@ -0,0 +1,66 @@ +From 78c6b49425fe34016dc5e7104b355e473744d041 Mon Sep 17 00:00:00 2001 +Date: Wed, 14 May 2025 17:54:28 +0800 +Subject: [PATCH] heapdump bug fix + +--- + src/hotspot/share/services/heapDumper.cpp | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/src/hotspot/share/services/heapDumper.cpp b/src/hotspot/share/services/heapDumper.cpp +index dcf6bf85b..4634af14a 100644 +--- a/src/hotspot/share/services/heapDumper.cpp ++++ b/src/hotspot/share/services/heapDumper.cpp +@@ -1931,8 +1931,20 @@ class VM_HeapDumper : public VM_GC_Operation, public AbstractGangTask { + assert(_global_writer == NULL, "Error"); + _global_writer = _local_writer; + } ++ void set_dump_instance_fields_descriptors() { ++ assert(_dump_instance_fields_descriptors == NULL, "Error"); ++ assert(_global_writer != NULL, "Error"); ++ if(_global_writer->getHeapDumpRedactLevel() == REDACT_ANNOTATION) { ++ _dump_instance_fields_descriptors = DumperSupport::dump_instance_annotation_field_descriptors; ++ } else if(_global_writer->getHeapDumpRedactLevel() == REDACT_DIYRULES) { ++ _dump_instance_fields_descriptors = DumperSupport::dump_instance_diyrules_field_descriptors; ++ } else { ++ _dump_instance_fields_descriptors = DumperSupport::dump_instance_field_descriptors; ++ } ++ } + void clear_global_dumper() { _global_dumper = NULL; } + void clear_global_writer() { _global_writer = NULL; } ++ void clear_dump_instance_fields_descriptors() { _dump_instance_fields_descriptors = NULL; } + + bool skip_operation() const; + +@@ -1974,13 +1986,6 @@ class VM_HeapDumper : public VM_GC_Operation, public AbstractGangTask { + _klass_map = new (ResourceObj::C_HEAP, mtServiceability) GrowableArray(INITIAL_CLASS_COUNT, mtServiceability); + _stack_traces = NULL; + _num_threads = 0; +- if(writer->getHeapDumpRedactLevel() == REDACT_ANNOTATION) { +- _dump_instance_fields_descriptors = DumperSupport::dump_instance_annotation_field_descriptors; +- } else if(writer->getHeapDumpRedactLevel() == REDACT_DIYRULES) { +- _dump_instance_fields_descriptors = DumperSupport::dump_instance_diyrules_field_descriptors; +- } else { +- _dump_instance_fields_descriptors = DumperSupport::dump_instance_field_descriptors; +- } + + if (oome) { + assert(!Thread::current()->is_VM_thread(), "Dump from OutOfMemoryError cannot be called by the VMThread"); +@@ -2238,6 +2243,7 @@ void VM_HeapDumper::doit() { + // the following should be safe. + set_global_dumper(); + set_global_writer(); ++ set_dump_instance_fields_descriptors(); + + WorkGang* gang = ch->safepoint_workers(); + +@@ -2250,6 +2256,7 @@ void VM_HeapDumper::doit() { + // Now we clear the global variables, so that a future dumper can run. + clear_global_dumper(); + clear_global_writer(); ++ clear_dump_instance_fields_descriptors(); + } + + void VM_HeapDumper::work(uint worker_id) { +-- +2.43.0.windows.1 + diff --git a/openjdk-17.spec b/openjdk-17.spec index a69d2a1b0c3e8778bec1c340805f9bb52086011f..722506660e905fb22bc95ad31c5289786cbfaf95 100644 --- a/openjdk-17.spec +++ b/openjdk-17.spec @@ -920,7 +920,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release} Name: java-%{javaver}-%{origin} Version: %{newjavaver}.%{buildver} -Release: 3 +Release: 4 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages @@ -1071,6 +1071,7 @@ Patch78: Fix-a-concurrent-issue-of-program-data-ref-cnt.patch #17.0.15 Patch79: Huawei-fix-potential-build-fail-in-jbolt.patch Patch80: 8352716-tz-Update-Timezone-Data-to-2025b.patch +Patch81: heapdump-bug-fix.patch ############################################ # # LoongArch64 specific patches @@ -1370,6 +1371,7 @@ pushd %{top_level_dir_name} %patch 78 -p1 %patch 79 -p1 %patch 80 -p1 +%patch 81 -p1 popd # openjdk %endif @@ -1995,6 +1997,9 @@ cjc.mainProgram(args) -- the returns from copy_jdk_configs.lua should not affect %changelog +* Sat May 17 2025 Benshuai5D - 1:17.0.15.6-4 +- add heapdump-bug-fix.patch + * Thu May 8 2025 panxuefeng - 1:17.0.15.6-3 - upgrade LoongArch64 port to 17.0.15