From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30879 invoked by alias); 18 Feb 2008 18:16:23 -0000 Received: (qmail 30843 invoked by uid 9563); 18 Feb 2008 18:16:23 -0000 Date: Mon, 18 Feb 2008 18:16:00 -0000 Message-ID: <20080218181623.30828.qmail@sourceware.org> From: cmoller@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: part of massive update X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 241e0b8a252248bea9234ac7a3d183b4156abebd X-Git-Newrev: f2ead5f8f556e86a15f854b0f74299172de7fc6c Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00223.txt.bz2 The branch, master has been updated via f2ead5f8f556e86a15f854b0f74299172de7fc6c (commit) via 91dbcd42fc4f7cac2bde88ed75abb00bc85dc2e9 (commit) via bbb7460667938ce6635c86ce879d2085b7086ce1 (commit) via 726a96ebcc5a4b040cd564db039052087c102149 (commit) via 3aed752cfd3871b4a2f70e334899495f05c37fc5 (commit) via 068613120ac870e68fe06736a7cabe6978854253 (commit) via 816ef57b5c730a862b15f01dcb7f908b8ffaef51 (commit) via 182c689af1546e106206030094a2c8100df54591 (commit) via 411fb2318c21a45f5b88b3199022a4fc72385773 (commit) via 2ea43f45b05e0d1f95aa21cbe5b70e72de5ae99c (commit) via 6df4cfebf370cf7bb7dec40b842584c45ed00ca1 (commit) via 9794f3793b6f70f0fbdb30b5044bc11d3f3a2e66 (commit) from 241e0b8a252248bea9234ac7a3d183b4156abebd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit f2ead5f8f556e86a15f854b0f74299172de7fc6c Author: Chris Moller Date: Mon Feb 18 13:15:54 2008 -0500 part of massive update commit 91dbcd42fc4f7cac2bde88ed75abb00bc85dc2e9 Author: Chris Moller Date: Mon Feb 18 13:15:22 2008 -0500 part of massive update commit bbb7460667938ce6635c86ce879d2085b7086ce1 Author: Chris Moller Date: Mon Feb 18 13:14:08 2008 -0500 part of massive update commit 726a96ebcc5a4b040cd564db039052087c102149 Author: Chris Moller Date: Mon Feb 18 13:13:31 2008 -0500 part of massive update commit 3aed752cfd3871b4a2f70e334899495f05c37fc5 Author: Chris Moller Date: Mon Feb 18 13:10:57 2008 -0500 part of massive update commit 068613120ac870e68fe06736a7cabe6978854253 Author: Chris Moller Date: Mon Feb 18 13:10:26 2008 -0500 part of massive update commit 816ef57b5c730a862b15f01dcb7f908b8ffaef51 Author: Chris Moller Date: Mon Feb 18 13:09:53 2008 -0500 part of massive update. commit 182c689af1546e106206030094a2c8100df54591 Author: Chris Moller Date: Mon Feb 18 13:09:18 2008 -0500 part of massive update commit 411fb2318c21a45f5b88b3199022a4fc72385773 Author: Chris Moller Date: Mon Feb 18 13:08:37 2008 -0500 part of massive update. commit 2ea43f45b05e0d1f95aa21cbe5b70e72de5ae99c Author: Chris Moller Date: Mon Feb 18 13:07:33 2008 -0500 part of massive update commit 6df4cfebf370cf7bb7dec40b842584c45ed00ca1 Author: Chris Moller Date: Mon Feb 18 13:06:51 2008 -0500 part of massive update commit 9794f3793b6f70f0fbdb30b5044bc11d3f3a2e66 Author: Chris Moller Date: Mon Feb 18 13:06:04 2008 -0500 part of massive update ----------------------------------------------------------------------- Summary of changes: frysk-utrace/utracer/NOTES | 15 +-- frysk-utrace/utracer/judb/ResponseListener.java | 17 ++- frysk-utrace/utracer/tudb | 6 +- frysk-utrace/utracer/udb-i386.c | 8 +- frysk-utrace/utracer/udb-i386.h | 43 ++---- frysk-utrace/utracer/udb-response.c | 55 ++----- frysk-utrace/utracer/udb-text-ui.c | 34 ++-- frysk-utrace/utracer/udb.c | 63 ++------ frysk-utrace/utracer/utracer/docs/ChangeLog | 21 +++ frysk-utrace/utracer/utracer/docs/Makefile | 37 ++++- frysk-utrace/utracer/utracer/docs/utracer.sgml | 41 +++++- .../utracer/utracer/docs/utracer_intro_body.sgml | 25 +--- .../utracer/utracer/docs/utracer_open_body.sgml | 25 +--- .../utracer/docs/utracer_set_syscall_body.sgml | 76 ++++++---- .../utracer/utracer/include/utracer-errmsgs.h | 1 + frysk-utrace/utracer/utracer/include/utracer.h | 52 ++++--- frysk-utrace/utracer/utracer/module/utracer-base.c | 51 ++++--- .../utracer/utracer/module/utracer-cf-io.c | 34 ++-- .../utracer/utracer/module/utracer-ioctl.c | 53 ++++--- frysk-utrace/utracer/utracer/utracer/utracer.c | 166 ++++++++++++++++---- 20 files changed, 459 insertions(+), 364 deletions(-) First 500 lines of diff: diff --git a/frysk-utrace/utracer/NOTES b/frysk-utrace/utracer/NOTES index 0ab0a7f..7b02a72 100644 --- a/frysk-utrace/utracer/NOTES +++ b/frysk-utrace/utracer/NOTES @@ -7,17 +7,8 @@ provide a command to req the process tree starting at any point in utracer.c, trace registering apps & report death; auto-unregister research self-unload of module -change cmd_ to cmd/, etc +maybe consolidate all responses through a single /proc entry? or put a select +in the userspace response thread for multiple entry fds? -[root@hotbox 31104]# cat maps -00b6d000-00b86000 r-xp 00000000 fd:00 2359327 /lib/ld-2.5.so -00b86000-00b88000 rwxp 00018000 fd:00 2359327 /lib/ld-2.5.so -00fc0000-00fc1000 r-xp 00fc0000 00:00 0 [vdso] -08048000-08049000 r-xp 00000000 fd:00 15501598 /usr/sandbox/frysk-utrace/utracer/testsyscall -08049000-0804a000 rw-p 00000000 fd:00 15501598 /usr/sandbox/frysk-utrace/utracer/testsyscall -bfb3d000-bfb53000 rw-p bfb3d000 00:00 0 [stack] -[root@hotbox 31104]# +provide a means of customising responses to report_* events. - read (6, 0xbfb4f2a8, 512) - stack [ bfb3d000 ] = 122a8 -write (2, 0xbfb4d258, 16) - stack [ bfb3d000 ] = 10258 - read (6, 0xb7ffc000, 4096) - stack [ bfb3d000 ] = diff --git a/frysk-utrace/utracer/judb/ResponseListener.java b/frysk-utrace/utracer/judb/ResponseListener.java index a23c96a..9ef3ce7 100644 --- a/frysk-utrace/utracer/judb/ResponseListener.java +++ b/frysk-utrace/utracer/judb/ResponseListener.java @@ -22,9 +22,9 @@ class ResponseListener implements Runnable { public void run() { boolean spin = true; while (spin) { - System.out.println ("Starting pread"); + // System.out.println ("Starting pread"); int type = Utrace.read_response(); - System.out.println ("Back from pread, type = " + type); + // System.out.println ("Back from pread, type = " + type); switch (type) { case IF_RESP_NULL: @@ -43,13 +43,20 @@ class ResponseListener implements Runnable { System.out.println ("resp death"); break; case IF_RESP_SYSCALL_ENTRY_DATA: - System.out.println ("resp syscall entry"); + System.out.println ("resp syscall entry, syscall + " + + Utrace.read_response_syscall_number () + + ", pid = " + + Utrace.read_response_syscall_pid ()); break; case IF_RESP_SYSCALL_EXIT_DATA: - System.out.println ("resp syscall exit"); + System.out.println ("resp syscall exit, syscall + " + + Utrace.read_response_syscall_number () + + ", pid = " + + Utrace.read_response_syscall_pid ()); break; case IF_RESP_EXEC_DATA: - System.out.println ("resp exec"); + String exec = Utrace.read_resp_exec(); + System.out.println ("resp exec, eexec = " + exec); break; case IF_RESP_QUIESCE_DATA: System.out.println ("resp quiesce"); diff --git a/frysk-utrace/utracer/tudb b/frysk-utrace/utracer/tudb index ff6e8cd..b9a8406 100755 --- a/frysk-utrace/utracer/tudb +++ b/frysk-utrace/utracer/tudb @@ -2,8 +2,8 @@ stty sane -lsmod | grep -q utracer -if (( $? != 0 )); then sudo /sbin/insmod utracer/module/utracer.ko; fi +#lsmod | grep -q utracer +#if (( $? != 0 )); then sudo /sbin/insmod utracer/module/utracer.ko; fi #LD_LIBRARY_PATH=./utracer/utracer:$LD_LIBRARY_PATH ./udb -c'sy ex en' -c'sy ex a read' -l ls #./udb -c'sy en en' -c'sy en a read' -c'run' -c'quit' -l ls @@ -13,5 +13,5 @@ if (( $? != 0 )); then sudo /sbin/insmod utracer/module/utracer.ko; fi ./udb -c'sy ex en' -c'sy en en' -c'sy ex a write' -c'sy en a write' \ -l ./aux/ts -sudo /sbin/rmmod utracer/module/utracer.ko +#sudo /sbin/rmmod utracer/module/utracer.ko diff --git a/frysk-utrace/utracer/udb-i386.c b/frysk-utrace/utracer/udb-i386.c index 640659e..4f94421 100644 --- a/frysk-utrace/utracer/udb-i386.c +++ b/frysk-utrace/utracer/udb-i386.c @@ -118,8 +118,7 @@ create_sys_hash_table() rc = hcreate_r ((4 * nr_syscall_names)/3, &sys_hash_table); if (0 == rc) { cleanup_udb(); - utracer_unregister (udb_pid); - utracer_close_ctl_file(); + utracer_close(udb_pid); fprintf (stderr, "\tCreating syscall hash table failed.\n"); _exit (1); } @@ -128,8 +127,7 @@ create_sys_hash_table() ENTRY * entry; if (0 == hsearch_r (syscall_names[i], ENTER, &entry, &sys_hash_table)) { cleanup_udb(); - utracer_unregister (udb_pid); - utracer_close_ctl_file(); + utracer_close(udb_pid); error (1, errno, "Error building syscall hash."); } } @@ -453,7 +451,7 @@ show_syscall (long type, long pid, struct pt_regs * regs) if (0 == rc) fprintf (stdout, "\t\tat addr %08x: \"%.*s\"\n", addr_to_show, SC_BFFR_LEN, (char *)bffr); - else uerror ("syscall getmem"); + else utracer_uerror ("syscall getmem"); } } diff --git a/frysk-utrace/utracer/udb-i386.h b/frysk-utrace/utracer/udb-i386.h index 632d521..7f0087f 100644 --- a/frysk-utrace/utracer/udb-i386.h +++ b/frysk-utrace/utracer/udb-i386.h @@ -42,6 +42,7 @@ #define UDB_I386_H #include +#include #ifdef DO_UDB_INIT #define DECL(v,i) v = i @@ -143,7 +144,6 @@ typedef struct { // derived from /include/asm-i386/elf.h // this doesn't match include/asm-i386/user.h -REG_DECL (reg_data_s debug_data, REGSET_DEBUG, -1); REG_DECL (reg_data_s ebx_data, REGSET_GPRS, 0); REG_DECL (reg_data_s ecx_data, REGSET_GPRS, 1); REG_DECL (reg_data_s edx_data, REGSET_GPRS, 2); @@ -154,7 +154,10 @@ REG_DECL (reg_data_s eax_data, REGSET_GPRS, 6); REG_DECL (reg_data_s xds_data, REGSET_GPRS, 7); REG_DECL (reg_data_s xes_data, REGSET_GPRS, 8); REG_DECL (reg_data_s xfs_data, REGSET_GPRS, 9); +#if 1 // fixme -- /asm/ptrace.h omits this, but utrace +// returns 17 regs in gprs; there's a mismatch somewhere REG_DECL (reg_data_s xgs_data, REGSET_GPRS, 10); +#endif REG_DECL (reg_data_s orig_eax_data, REGSET_GPRS, 11); REG_DECL (reg_data_s eip_data, REGSET_GPRS, 12); REG_DECL (reg_data_s xcs_data, REGSET_GPRS, 13); @@ -164,6 +167,7 @@ REG_DECL (reg_data_s xss_data, REGSET_GPRS, 16); REG_DECL (reg_data_s gdtr_data, REGSET_DESC, 0); REG_DECL (reg_data_s ldtr_data, REGSET_DESC, 1); REG_DECL (reg_data_s idtr_data, REGSET_DESC, 2); +REG_DECL (reg_data_s debug_data, REGSET_DEBUG, -1); REG_DECL (reg_data_s gprs_data, REGSET_GPRS, -1); REG_DECL (reg_data_s fprs_data, REGSET_FPRS, -1); REG_DECL (reg_data_s fprx_data, REGSET_FPRX, -1); @@ -175,11 +179,6 @@ extern ENTRY reg_mapping[] #ifdef DO_UDB_INIT = { - {"gprs", (void *)&gprs_data}, - {"fprs", (void *)&fprs_data}, - {"fprx", (void *)&fprx_data}, - {"desc", (void *)&desc_data}, - {"debug", (void *)&debug_data}, {"ebx", (void *)&ebx_data}, {"ecx", (void *)&ecx_data}, {"edx", (void *)&edx_data}, @@ -190,7 +189,10 @@ ENTRY reg_mapping[] {"xds", (void *)&xds_data}, {"xes", (void *)&xes_data}, {"xfs", (void *)&xfs_data}, +#if 1 // fixme -- /asm/ptrace.h omits this, but utrace +// returns 17 regs in gprs; there's a mismatch somewhere {"xgs", (void *)&xgs_data}, +#endif {"xcs", (void *)&xcs_data}, {"orig_eax", (void *)&orig_eax_data}, {"eip", (void *)&eip_data}, @@ -199,7 +201,12 @@ ENTRY reg_mapping[] {"xss", (void *)&xss_data}, {"gdtr", (void *)&gdtr_data}, {"ldtr", (void *)&ldtr_data}, - {"idtr", (void *)&idtr_data} + {"idtr", (void *)&idtr_data}, + {"gprs", (void *)&gprs_data}, + {"fprs", (void *)&fprs_data}, + {"fprx", (void *)&fprx_data}, + {"desc", (void *)&desc_data}, + {"debug", (void *)&debug_data}, } #endif ; @@ -210,28 +217,6 @@ int nr_regs #endif ; -// fixme -- the struct pt_regs in /usr/include/asm/ptrace.h dosn't match the -// one in the kernel.. here's the kernel version: - -struct pt_regs { - long ebx; - long ecx; - long edx; - long esi; - long edi; - long ebp; - long eax; - int xds; - int xes; - /* int xfs; */ - int xgs; - long orig_eax; - long eip; - int xcs; - long eflags; - long esp; - int xss; -}; // from include/asm-i386/unistd.h diff --git a/frysk-utrace/utracer/udb-response.c b/frysk-utrace/utracer/udb-response.c index 4a36382..9944b0f 100644 --- a/frysk-utrace/utracer/udb-response.c +++ b/frysk-utrace/utracer/udb-response.c @@ -59,15 +59,15 @@ resp_listener (void * arg) if_resp_u if_resp; ssize_t sz; int run = 1; + void * extra = NULL; LOGIT ("in response thread\n"); while (run) { LOGIT ("starting response thread pread\n"); - sz = pread (utracer_resp_file_fd(), &if_resp, - sizeof(if_resp), 0); + sz = utracer_read (&if_resp, &extra); if (-1 == sz) { - uerror ("Response pread"); + utracer_uerror ("Response pread"); _exit (4); } @@ -77,27 +77,15 @@ resp_listener (void * arg) case IF_RESP_EXEC_DATA: { exec_resp_s exec_resp = if_resp.exec_resp; - long bytes_to_get = exec_resp.data_length; - long bytes_gotten = 0; - char * cstr = alloca (bytes_to_get + 2); - - if (sz > sizeof(exec_resp)) { - long bytes_avail = sz - sizeof(exec_resp); - memcpy ((void *)cstr, (void *)(&if_resp) + sizeof (exec_resp), - bytes_avail); - bytes_to_get -= bytes_avail; - bytes_gotten = bytes_avail; - } - - if (0 < bytes_to_get) { - sz = pread (utracer_resp_file_fd(), - (void *)cstr + bytes_gotten, - bytes_to_get, sz); - bytes_gotten += sz; + if (extra) { + fprintf (stdout, "\tProcess %ld execing %s (%s)\n", + exec_resp.utraced_pid, + (char *)extra, + ((char *)extra + 1 + strlen ((char *)extra))); } - - fprintf (stdout, "\tProcess %ld execing %s (%s)\n", - exec_resp.utraced_pid, cstr, cstr + 1 + strlen (cstr)); + else + fprintf (stdout, "\tProcess %ld execing ()\n", + exec_resp.utraced_pid); } break; case IF_RESP_SYSCALL_ENTRY_DATA: @@ -105,25 +93,8 @@ resp_listener (void * arg) { // fixme -- handle /proc//mem to access ptr args syscall_resp_s syscall_resp = if_resp.syscall_resp; - long bytes_to_get = syscall_resp.data_length; - long bytes_gotten = 0; - struct pt_regs * regs = alloca (bytes_to_get); - - if (sz > sizeof(syscall_resp)) { - long bytes_avail = sz - sizeof(syscall_resp); - memcpy ((void *)regs, (void *)(&if_resp) + sizeof (syscall_resp), - bytes_avail); - bytes_to_get -= bytes_avail; - bytes_gotten = bytes_avail; - } - - if (0 < bytes_to_get) { - sz = pread (utracer_resp_file_fd(), - (void *)regs + bytes_gotten, - bytes_to_get, sz); - } - - show_syscall (if_resp.type, syscall_resp.utraced_pid, regs); + show_syscall (if_resp.type, syscall_resp.utraced_pid, extra); + if (extra) free (extra); } break; case IF_RESP_DEATH_DATA: diff --git a/frysk-utrace/utracer/udb-text-ui.c b/frysk-utrace/utracer/udb-text-ui.c index fd17e85..3f24c51 100644 --- a/frysk-utrace/utracer/udb-text-ui.c +++ b/frysk-utrace/utracer/udb-text-ui.c @@ -173,7 +173,7 @@ watch_fcn(char ** saveptr) current_pid = pid; set_prompt(); } - else uerror ("watch"); + else utracer_uerror ("watch"); return 1; } @@ -189,7 +189,7 @@ attach_fcn(char ** saveptr) current_pid = pid; set_prompt(); } - else uerror ("attach"); + else utracer_uerror ("attach"); return 1; } @@ -206,7 +206,7 @@ detach_fcn(char ** saveptr) current_pid = -1; set_prompt(); } - else uerror ("detach"); + else utracer_uerror ("detach"); } else fprintf (stderr, "\tdetach requires a valid PID\n"); @@ -223,7 +223,7 @@ run_fcn(char ** saveptr) if (-1 != pid) { rc = utracer_run (udb_pid, pid); if (0 == rc) fprintf (stderr, "%d running\n", pid); - else uerror ("run"); + else utracer_uerror ("run"); } else fprintf (stderr, "\trun requires an argument\n"); return 1; @@ -239,7 +239,7 @@ quiesce_fcn(char ** saveptr) if (-1 != pid) { rc = utracer_quiesce (udb_pid, pid); if (0 == rc) fprintf (stderr, "%d quiesced\n", pid); - else uerror ("quiesce"); + else utracer_uerror ("quiesce"); } else fprintf (stderr, "\trun requires an argument\n"); return 1; @@ -263,12 +263,12 @@ switchpid_fcn (char ** saveptr) char * pid_c = strtok_r (NULL, " \t", saveptr); if (pid_c) { pid = atol (pid_c); - rc = utracer_switch_pid (udb_pid, pid); + rc = utracer_check_pid (udb_pid, pid); if (0 == rc) { current_pid = pid; set_prompt(); } - else uerror ("switchpid"); + else utracer_uerror ("switchpid"); } else fprintf (stderr, "\tswitchpid requires an argument\n"); return 1; @@ -295,7 +295,7 @@ printreg_fcn (char ** saveptr) rc = utracer_get_regs (udb_pid, pid, regset, ®sinfo, &nr_regs, ®_size); if (0 == rc) show_regs (pid, regset, reg, regsinfo, nr_regs, reg_size); - else uerror ("printreg"); + else utracer_uerror ("printreg"); if (regsinfo) free (regsinfo); } @@ -318,7 +318,7 @@ printregall_fcn (char ** saveptr) // fixme allow selection of regset rc = utracer_get_regs (udb_pid, pid, 0, ®sinfo, &nr_regs, ®_size); if (0 == rc) show_regs (pid, 0, -1, regsinfo, nr_regs, reg_size); - else uerror ("printreg"); + else utracer_uerror ("printreg"); if (regsinfo) free (regsinfo); @@ -401,7 +401,7 @@ printmmap_fcn (char ** saveptr) &printmmap_resp, &vm_struct_subset, &vm_strings); if (0 == rc) handle_printmmap (printmmap_resp, vm_struct_subset, vm_strings); - else uerror ("printmmap"); + else utracer_uerror ("printmmap"); if (printmmap_resp) free (printmmap_resp); if (vm_struct_subset) free (vm_struct_subset); @@ -421,7 +421,7 @@ printenv_fcn (char ** saveptr) if (tok && ('[' == *tok)) pid = atol (tok+1); rc = utracer_get_env (udb_pid, pid, &env); if (0 == rc) fprintf (stdout, "%s\n", env); - else uerror ("printenv"); + else utracer_uerror ("printenv"); return 1; } @@ -438,7 +438,7 @@ listpids_fcn(char ** saveptr) for (i = 0; i < nr_pids; i++) fprintf (stdout, "\t%ld\n", pids[i]); } - else uerror ("printenv"); + else utracer_uerror ("printenv"); if (pids) free (pids); return 1; @@ -459,7 +459,7 @@ printexe_fcn (char ** saveptr) fprintf (stdout, "\t filename: \"%s\"\n", filename); fprintf (stdout, "\t interp: \"%s\"\n", interp); } - else uerror ("printexe"); + else utracer_uerror ("printexe"); if (filename) free (filename); if (interp) free (interp); @@ -507,7 +507,7 @@ requested length are invlaid.\n"); fprintf (stdout, "%02x ", (int)(((char *)bffr)[i])); fprintf (stdout, "\n"); } - else uerror ("printmem"); + else utracer_uerror ("printmem"); if (bffr) free (bffr); @@ -675,8 +675,7 @@ create_cmd_hash_table() rc = hcreate_r ((4 * nr_cmds)/3, &cmd_hash_table); if (0 == rc) { cleanup_udb(); - utracer_unregister (udb_pid); - utracer_close_ctl_file(); + utracer_close(udb_pid); fprintf (stderr, "\tCreating command hash table failed.\n"); _exit (1); } @@ -685,8 +684,7 @@ create_cmd_hash_table() ENTRY * entry; if (0 == hsearch_r (cmds[i], ENTER, &entry, &cmd_hash_table)) { cleanup_udb(); - utracer_unregister (udb_pid); - utracer_close_ctl_file(); + utracer_close(udb_pid); error (1, errno, "Error building commands hash."); } } diff --git a/frysk-utrace/utracer/udb.c b/frysk-utrace/utracer/udb.c index ff89cbc..999d6e3 100644 --- a/frysk-utrace/utracer/udb.c +++ b/frysk-utrace/utracer/udb.c @@ -76,8 +76,7 @@ cleanup_udb() rc = pthread_join(resp_listener_thread, &rc_ptr); if (0 != rc) perror ("pthread_cancel"); - - utracer_cleanup(); + utracer_close(udb_pid); text_ui_terminate(); arch_specific_terminate(); @@ -90,8 +89,7 @@ sigterm_handler (int sig) #ifdef ENABLE_MODULE_OPS unload_utracer(); // and have utracer unload itsef #endif - utracer_unregister ((long)udb_pid); - utracer_close_ctl_file(); + utracer_close(udb_pid); exit (0); // when nothing else is registered } @@ -154,44 +152,6 @@ append_cmd (char * cmd) cl_cmds[cl_cmds_next++] = strdup (cmd); } -#ifdef USE_UTRACER_WAIT -static void -utracer_wait() -{ - int i; -#define CHECKS_NR 3 - - for (i = 0; i < CHECKS_NR; i++) { - if_resp_u if_resp; - ssize_t sz; - - utracer_sync (udb_pid, SYNC_INIT); - hooks/post-receive -- frysk system monitor/debugger