NetBeans 6.1 Profiler, Sun JDK 1.5/1.6
Eugeny N Dzhurinsky
bofh at redwerk.com
Fri May 16 12:58:34 UTC 2008
Hello everytbody!
I recently installed NetBeans 6.1 from ports and noticed there is no
libprofilerinterface.so library for FreeBSD, and NetBeans complains the profiling
wouldn't work. I've downloaded the sources of NetBeans and was able to build the
libprofilerinterface.so from sources, once I placed it into the appropriate directory
NetBeans expects it to appear in - NetBeans stops reporting the error, however profiling
still doesn't work for some another reason - it just hands on the "calibration" stage.
I had built the module with -ggdb option, and found there is java.core file and
GDB shows this stack trace:
=============================================================================
(gdb) bt
#0 0x2817f9fb in kill () from /lib/libc.so.6
#1 0x280a3236 in raise () from /lib/libpthread.so.2
#2 0x2817e6a8 in abort () from /lib/libc.so.6
#3 0x2815a898 in __assert () from /lib/libc.so.6
#4 0x28808fda in initializeJVMTI (jvm=0x287b6ae0) at
../src-jdk15/common_functions.c:122
#5 0x2880911c in Agent_OnLoad (jvm=0x287b6ae0, options=0x0, reserved=0x0)
at ../src-jdk15/common_functions.c:147
#6 0x286dfd3d in Threads::create_vm_init_agents ()
from /usr/local/jdk1.5.0/jre/lib/i386/server/libjvm.so
#7 0x286e2b5f in Threads::create_vm () from
/usr/local/jdk1.5.0/jre/lib/i386/server/libjvm.so
#8 0x284627a1 in JNI_CreateJavaVM () from
/usr/local/jdk1.5.0/jre/lib/i386/server/libjvm.so
=============================================================================
the function initializeJVMTI dumped below:
=============================================================================
void initializeJVMTI(JavaVM *jvm) {
jvmtiError err;
jvmtiCapabilities capas;
jint res;
/* Obtain the JVMTI environment to be used by this agent */
#ifdef JNI_VERSION_1_6
(*jvm)->GetEnv(jvm, (void**)&_jvmti, JVMTI_VERSION_1_1);
#else
(*jvm)->GetEnv(jvm, (void**)&_jvmti, JVMTI_VERSION_1_0);
#endif
/* Enable runtime class redefinition capability */
err = (*_jvmti)->GetCapabilities(_jvmti, &capas);
assert(err == JVMTI_ERROR_NONE);
capas.can_redefine_classes = 1;
#ifdef JNI_VERSION_1_6
capas.can_retransform_classes = 1;
#endif
capas.can_generate_garbage_collection_events = 1;
capas.can_generate_native_method_bind_events = 1;
capas.can_generate_monitor_events = 1;
capas.can_get_current_thread_cpu_time = 1;
capas.can_generate_vm_object_alloc_events = 1;
err = (*_jvmti)->AddCapabilities(_jvmti, &capas);
if (err != JVMTI_ERROR_NONE) {
fprintf(stderr, "Profiler Agent Error: Failed to obtain JVMTI capabilities, error code: %d\n", err);
}
/* Zero out the callbacks data structure for future use*/
_jvmti_callbacks = &_jvmti_callbacks_static;
memset(_jvmti_callbacks, 0, sizeof(jvmtiEventCallbacks));
/* Enable class load hook event, that captures class file bytes for classes loaded by non-system loaders */
_jvmti_callbacks->ClassFileLoadHook = class_file_load_hook;
_jvmti_callbacks->NativeMethodBind = native_method_bind_hook;
_jvmti_callbacks->MonitorContendedEnter = monitor_contended_enter_hook;
_jvmti_callbacks->MonitorContendedEntered = monitor_contended_entered_hook;
_jvmti_callbacks->VMObjectAlloc = vm_object_alloc;
res = (*_jvmti)->SetEventCallbacks(_jvmti, _jvmti_callbacks, sizeof(*_jvmti_callbacks));
assert (res == JVMTI_ERROR_NONE);
res = (*_jvmti)->SetEventNotificationMode(_jvmti, JVMTI_ENABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, NULL);
assert(res == JVMTI_ERROR_NONE);
res = (*_jvmti)->SetEventNotificationMode(_jvmti, JVMTI_ENABLE, JVMTI_EVENT_NATIVE_METHOD_BIND, NULL);
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! line 122 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
assert(res == JVMTI_ERROR_NONE);
res = (*_jvmti)->SetEventNotificationMode(_jvmti, JVMTI_ENABLE, JVMTI_EVENT_MONITOR_CONTENDED_ENTER, NULL);
assert(res == JVMTI_ERROR_NONE);
res = (*_jvmti)->SetEventNotificationMode(_jvmti, JVMTI_ENABLE, JVMTI_EVENT_MONITOR_CONTENDED_ENTERED, NULL);
assert(res == JVMTI_ERROR_NONE);
}
=============================================================================
Does it makes sense for anybody? Is it possible to fix this somehow?
Thank you in advance!
--
Eugene N Dzhurinsky
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-java/attachments/20080516/9be95228/attachment.pgp
More information about the freebsd-java
mailing list