JDK-5105917 : NEWHPROF: Missing HPROF_GC_ROOT_THREAD_OBJ in second heap dump
  • Type: Bug
  • Component: tools
  • Sub-Component: hprof
  • Affected Version: 5.0
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2004-09-23
  • Updated: 2004-10-11
  • Resolved: 2004-10-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6
5.0u2Fixed 6 b08Fixed
Description
NEWHPROF: Missing HPROF_GC_ROOT_THREAD_OBJ in second heap dump
###@###.### 10/8/04 00:10 GMT

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mustang FIXED IN: mustang
28-09-2004

SUGGESTED FIX Nvere allow the VM thread 200000 to go away, short circuit the tls_free logic on this thread. ###@###.### 2004-09-22 ------- hprof_tls.c ------- *************** *** 831,841 **** trace_serial_num = trace_get_serial_number(trace_index); } delete_globalref(env, info); - info->thread_serial_num = -1; clean_info(info); table_free_entry(gdata->tls_table, index); } table_lock_exit(gdata->tls_table); /* Issue heap record (outside lock on TLS table) */ if (gdata->heap_dump && thread_object_index != 0 ) { rawMonitorEnter(gdata->data_access_lock); { --- 831,845 ---- trace_serial_num = trace_get_serial_number(trace_index); } delete_globalref(env, info); clean_info(info); + /* Never free the system thread tls entry */ + if ( info->thread_serial_num != gdata->system_thread_serial_num ) { + info->thread_serial_num = -1; table_free_entry(gdata->tls_table, index); + } } table_lock_exit(gdata->tls_table); + #if 0 /* Wrong time and place? */ /* Issue heap record (outside lock on TLS table) */ if (gdata->heap_dump && thread_object_index != 0 ) { rawMonitorEnter(gdata->data_access_lock); { *************** *** 843,848 **** --- 847,854 ---- trace_serial_num); } rawMonitorExit(gdata->data_access_lock); } + #endif + } /* Sample ALL threads and update the trace costs */ ###@###.### 2004-09-23
23-09-2004

EVALUATION Missing VM thread in second dump. Need to special case this thread serial number to always dump it and never free it. ###@###.### 2004-09-22
22-09-2004