I resend this as Chris and I got no answer so far.

The issue is a pid provider probe gets rejected by Apple dtrace.
Suspicion it is rejected due to

   libdtrace DEBUG: found a suspected jump table at

below is a snippet of the assembly code of that function, that 
looks like a jump table plus the C preprocessor output of the
same function.

Anyone having an idea what could cause this jump table?

Regards,
Andreas

---------- Forwarded message ----------
Date: Wed, 14 Nov 2007 19:52:51 +0100 (MET)
From: [EMAIL PROTECTED]
To: [email protected]
Cc: Chris Dagdigian <[EMAIL PROTECTED]>, James McIlree <[EMAIL PROTECTED]>
Subject: Re: [dtrace-discuss] [GE users] Apple Leopard has dtrace -- anyone used
      the SGE probes/scripts yet?

Hm ... the assebly of the function contains code like this

    movl  L279-"L00000000011$pb"(%ebx,%eax,4), %eax
    addl  %ebx, %eax
    jmp   *%eax
    .align 2,0x90
L279:
    .long L187-"L00000000011$pb"
    .long L188-"L00000000011$pb"
    .long L189-"L00000000011$pb"
      :
     (much more of this kind)
      :

if that is meant by

    libdtrace DEBUG: found a suspected jump table at 
sge_mirror_process_events:323

that could be the cause, but I got no idea where it comes from. Preprocessor 
output
of the code is this

sge_mirror_error __attribute__((noinline)) 
sge_mirror_process_events(sge_evc_class_t *evc)
{
    lList *event_list = ((void *)0);
    sge_mirror_error ret = SGE_EM_OK;
    static int test_debug = 0;


    static const char SGE_FUNC[] = "sge_mirror_process_events"; static const 
int 
xaybzc = 0; if (rmon_condition(xaybzc, 1)) rmon_menter (SGE_FUNC);

    if(prof_is_active(SGE_PROF_MIRROR)) { 
prof_start_measurement(SGE_PROF_MIRROR,((void *)0)); };

    mir_set_num_events(0);

    if (evc && evc->ec_get(evc, &event_list, false)) {
       if (event_list != ((void *)0)) {
          ret = sge_mirror_process_event_list(evc, event_list);
          lFreeList(&event_list);
       }
    } else {
       ( sprintf (log_get_log_buffer(), (("qmaster alive timeout expired"))), 
sge_log(4,log_get_log_buffer(),"../libs/mir/sge_mirror.c",SGE_FUNC,1141) ,1) ?
1 : 0;
       evc->ec_mark4registration(evc);
       ret = SGE_EM_TIMEOUT;
    }

    if (mir_get_produce_qmaster_alive_timeout()) {
       test_debug++;
       if (test_debug > 3) {
          test_debug = 0;
          ( sprintf (log_get_log_buffer(), (("qmaster alive timeout 
expired"))), 
sge_log(4,log_get_log_buffer(),"../libs/mir/sge_mirror.c",SGE_FUNC,1150) ,1)
? 1 : 0;
          evc->ec_mark4registration(evc);
          ret = SGE_EM_TIMEOUT;
       }
    }

    if (prof_is_active(SGE_PROF_MIRROR)) {
       prof_stop_measurement(SGE_PROF_MIRROR, ((void *)0));
       (sprintf (log_get_log_buffer(), "PROF: sge_mirror processed %d events in 
%.3f s", mir_get_num_events(),
prof_get_measurement_wallclock(SGE_PROF_MIRROR, false, ((void *)0))), 
sge_log(0, log_get_log_buffer(),"../li
bs/mir/sge_mirror.c",SGE_FUNC,1160) ,1) ? 1 : 0;


    }

    if (rmon_condition(xaybzc, 1)) rmon_mexit(SGE_FUNC, 
"../libs/mir/sge_mirror.c", 1163);
    return ret;
}

Could it be the jump table is generated due to the function calls via function 
pointer are done by sge_mirror_process_events()?

Regards,
Andreas


On Wed, 14 Nov 2007, Chris Dagdigian wrote:

> James M seems to have found the issue:
> 
>> sh-3.2# ps ax | grep sge_schedd
>> 53778   ??  S      0:02.41 /opt/sge/bin/darwin-x86/sge_schedd
>> 55698 s000  R+     0:00.00 grep sge_schedd
>> sh-3.2#
>> sh-3.2# dtrace -xdebug -l -n 'pid53778::sge_mirror_process_events:return'
>> libdtrace DEBUG: typedef taskid_t added as id 32797
>> libdtrace DEBUG: typedef projid_t added as id 32798
>> libdtrace DEBUG: typedef poolid_t added as id 32799
>> libdtrace DEBUG: typedef zoneid_t added as id 32800
>> libdtrace DEBUG: typedef timestruc_t added as id 32804
>> libdtrace DEBUG: typedef psinfo_t added as id 32823
>> libdtrace DEBUG: typedef psetid_t added as id 33206
>> libdtrace DEBUG: typedef lwpsinfo_t added as id 33210
>> libdtrace DEBUG: typedef bufinfo_t added as id 33215
>> libdtrace DEBUG: typedef devinfo_t added as id 33218
>> libdtrace DEBUG: typedef offset_t added as id 33223
>> libdtrace DEBUG: typedef fileinfo_t added as id 33225
>> libdtrace DEBUG: type struct _processor_info added as id 33227
>> libdtrace DEBUG: typedef _processor_info_t added as id 33230
>> libdtrace DEBUG: typedef chipid_t added as id 33231
>> libdtrace DEBUG: typedef lgrp_id_t added as id 33232
>> libdtrace DEBUG: type struct cpuinfo added as id 33233
>> libdtrace DEBUG: typedef cpuinfo_t added as id 33234
>> libdtrace DEBUG: grabbed pid 53778
>> libdtrace DEBUG: creating probe 
>> pid53778:sge_schedd:sge_mirror_process_events:return
>> libdtrace DEBUG: found a suspected jump table at 
>> sge_mirror_process_events:323
>> libdtrace DEBUG: set context to pid53778::sge_mirror_process_events:return 
>> [0] prp=0x0 attr=[u/u/c] argc=0
>> libdtrace DEBUG: set label to <action list>
>> libdtrace DEBUG: set label to <NULL>
>>   ID   PROVIDER            MODULE                          FUNCTION NAME
>> dtrace: failed to match pid53778::sge_mirror_process_events:return: No probe 
>> matches description
>> libdtrace DEBUG: releasing pid 53778
>> libdtrace DEBUG: dt_buf_destroy(section headers): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(string table): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(loadable data): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(unloadable data): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(probe data): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(probe args): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(probe offs): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(probe is-enabled offs): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(probe rels): size=512 resizes=0
>> libdtrace DEBUG: dt_buf_destroy(xlate members): size=512 resizes=0
>> sh-3.2#
> 
> 
> 
> Regards,
> Chris Dagdigiain
> 
> 
> 
> 
> On Nov 14, 2007, at 1:16 PM, James McIlree wrote:
> 
>> Andreas,
>>
>>      You may be hitting a case where dtrace thinks it cannot
>> safely instrument the return points in that function. Try running
>> this (where XYZ is the pid of your target process)
>> 
>> dtrace -xdebug -l -n 'pidXYZ::sge_mirror_process_events:return'
>>
>>      If dtrace prints a warning about finding a jump table, that
>> means it isn't certain it can safely place probes.
>>
>>      James M
>> 
>> On Nov 14, 2007, at 8:40 AM, [EMAIL PROTECTED] wrote:
>> 
>>> Hi,
>>> 
>>> Chris (cc) and I try to get the SGE master monitor work with Apple Leopard
>>> dtrace. Unfortunately we are stuck with the error msg below.
>>> 
>>> Anyone having an idea what could be the cause? What I can rule out as
>>> cause is function inlining for the reasons explained below.
>>> 
>>> Background information on SGE master monitor implementation is under
>>>
>>>  http://wiki.gridengine.info/wiki/index.php/Dtrace
>>> 
>>> Regards,
>>> Andreas
>>> 
>>> On Wed, 14 Nov 2007, Chris Dagdigian wrote:
>>> 
>>>> Hi Andreas,
>>>> 
>>>> Looks like we have to appeal to others - I'm getting the same error about
>>>> sge_mirror_process_events ...
>>>> 
>>>>> sh-3.2# ./monitor.sh
>>>>> dtrace: failed to compile script ./monitor.d: line 179: probe description
>>>>> pid53778::sge_mirror_process_events:return does not match any probes
>>>>> sh-3.2#
>>>>> 
>>>> On Nov 14, 2007, at 6:06 AM, [EMAIL PROTECTED] wrote:
>>>> 
>>>>> Hi Chris,
>>>>> 
>>>>> this time function inlining can not be the cause since
>>>>> sge_mirror_process_events() gets called exclusively from other source
>>>>> modules. I added nevertheless the no_inline
>>>>> compiler directive to source code for sge_mirror_process_events() and
>>>>> recompiled the entire stuff anew. Please give it another try.
>>>>> 
>>>>> If it doesn't work then we must ask for counsel from Apple and Sun
>>>>> engineers in [email protected] mailing list.
>>>>> 
>>>>> Best regards,
>>>>> Andreas
>>> _______________________________________________
>>> dtrace-discuss mailing list
>>> [email protected]
>

http://gridengine.info/

Sitz der Gesellschaft: Sun Microsystems GmbH, Sonnenallee 1, D-85551 
Kirchheim-Heimstetten
Amtsgericht Muenchen: HRB 161028
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Haering
_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to