NetBeans 6.1 Profiler, Sun JDK 1.5/1.6

View: New views
4 Messages — Rating Filter:   Alert me  

NetBeans 6.1 Profiler, Sun JDK 1.5/1.6

by Eugene Dzhurinsky :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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


attachment0 (202 bytes) Download Attachment

Re: NetBeans 6.1 Profiler, Sun JDK 1.5/1.6

by Greg Lewis-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, May 16, 2008 at 03:19:27PM +0300, Eugeny N Dzhurinsky wrote:

> 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

So, in the code you included below, which is line 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



--
Greg Lewis                          Email   : glewis@...
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : glewis@...
_______________________________________________
freebsd-java@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-java
To unsubscribe, send any mail to "freebsd-java-unsubscribe@..."

Re: NetBeans 6.1 Profiler, Sun JDK 1.5/1.6

by Eugene Dzhurinsky :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, May 16, 2008 at 04:40:56PM -0700, Greg Lewis wrote:

> On Fri, May 16, 2008 at 03:19:27PM +0300, Eugeny N Dzhurinsky wrote:
> > 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
>
> So, in the code you included below, which is line 122?
Please see below (actually it was included in the original e-mail, however
probably I highlighted it badly).

> >     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);


--
Eugene N Dzhurinsky


attachment0 (202 bytes) Download Attachment

Re: NetBeans 6.1 Profiler, Sun JDK 1.5/1.6

by Greg Lewis-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, May 17, 2008 at 02:53:09PM +0300, Eugeny N Dzhurinsky wrote:

> On Fri, May 16, 2008 at 04:40:56PM -0700, Greg Lewis wrote:
> > On Fri, May 16, 2008 at 03:19:27PM +0300, Eugeny N Dzhurinsky wrote:
> > > #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
> >
> > So, in the code you included below, which is line 122?
>
> Please see below (actually it was included in the original e-mail, however
> probably I highlighted it badly).

Thanks.

> > >     res = (*_jvmti)->SetEventNotificationMode(_jvmti, JVMTI_ENABLE, JVMTI_EVENT_NATIVE_METHOD_BIND, NULL);
> > >    
> > >     /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! line 122  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
> > >     assert(res == JVMTI_ERROR_NONE);

If you've got this core in gdb you should be able to figure out what res
actually is and what error that indicates.

--
Greg Lewis                          Email   : glewis@...
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : glewis@...
_______________________________________________
freebsd-java@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-java
To unsubscribe, send any mail to "freebsd-java-unsubscribe@..."