#!/bin/probevue /* How tentative trace() is broken: - Tentative tracing does not work for the trace(); function. When trace() is called within the start/end tentative "block" the following error happens (immediately) when starting the session: Unable to start session 0x0000000096284047 - I prefer to test (the working version of) this script on Topas as it generates a failed open() call each iteration (for /etc/corrals/index). - Furthermore, you are unable to trace(__arg2) directly. You need to place it in another (declared) variable and trace that. If you call trace() on one of the __argX variables you get: ERR-105: Line:XX Column:X Argument type mismatch. */ int open(char *, int, int); @@BEGIN { printf("Starting tentative probing on PID %ld.\n", $1); } @@syscall:$1:open:entry { String Path[1024]; int OFlag; Path = get_userstring(__arg1, -1); OFlag = __arg2; start_tentative("failedopens"); printf("%s\n", Path); /* ------------ HERE IS THE PROBELM ------------ */ /* Uncomment the following line of code to fail. */ /* trace(OFlag); */ end_tentative("failedopens"); } @@syscall:$1:open:exit { if ( __rv < 0 ) commit_tentative("failedopens"); else discard_tentative("failedopens"); }