This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: multip register_uprobe


Hi Wenji,


>   I am creating some test scripts based on sarikar's framework.
>  
>   There is one problem about register multiple times.
>       .................
>        probes->vaddr = vaddr;
>        probes->pid = pid;
>        probes->handler = handler;
>        for (i=0; i < 3; i++) {
>             ret = register_uprobe(probes);
>             if (ret!=0)  //of course, the first time should succeed and 
> will failed in second time, ret = -16
>               {
> I tried several possibilities:
>                 * return ret; //RESULT: the module can't be removed, 
> the probed process will hang, can't be killed/continued
>                 * return 0; //RESULT: same as above
>                 * unregister_uprobe(probes);kfree(probes);break; 
> //RESULT: same as above
>                 * kfree(probes);break; //RESULT: the module can be 
> removed, the probed process will hang, can't be killed/continued
>               }
>         }
>        return 0;


uprobes doesn't allow to register using the same probe structure. 
Thats currently documented in the Documentation/uprobes.txt
Under Uprobes features and Limitations. 

Uprobes may produce unexpected results if you:
- assign non-zero values to reserved members of struct uprobe;
- change the contents of a uprobe or uretprobe object while it is
registered; or
- attempt to register a uprobe or uretprobe that is already registered.

Please do let me know if I it doesn't answer or if I have misunderstood 
your query.

--
Thanks and Regards
Srikar 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]