Index: daemon/opd_anon.c =================================================================== RCS file: /cvsroot/oprofile/oprofile/daemon/opd_anon.c,v retrieving revision 1.10 diff -p -a -u -r1.10 opd_anon.c --- daemon/opd_anon.c 28 Apr 2008 21:23:24 -0000 1.10 +++ daemon/opd_anon.c 7 Apr 2010 08:57:31 -0000 @@ -134,11 +134,14 @@ static void get_anon_maps(struct transie char buf[PATH_MAX]; vma_t start, end; int ret; + int found = 0; snprintf(buf, PATH_MAX, "/proc/%d/maps", trans->tgid); fp = fopen(buf, "r"); - if (!fp) + if (!fp) { + add_anon_mapping(trans, 0, (vma_t)-1, "anon"); return; + } while (fgets(buf, PATH_MAX, fp) != NULL) { char tmp[MAX_IMAGE_NAME_SIZE + 1]; @@ -155,7 +158,10 @@ static void get_anon_maps(struct transie continue; add_anon_mapping(trans, start, end, name); + found = 1; } + if (!found) + add_anon_mapping(trans, 0, (vma_t)-1, "anon"); fclose(fp); } Index: daemon/opd_pipe.c =================================================================== RCS file: /cvsroot/oprofile/oprofile/daemon/opd_pipe.c,v retrieving revision 1.3 diff -p -a -u -r1.3 opd_pipe.c --- daemon/opd_pipe.c 17 Mar 2010 18:00:57 -0000 1.3 +++ daemon/opd_pipe.c 7 Apr 2010 08:57:31 -0000 @@ -23,6 +23,7 @@ static FILE * fifo_fd = NULL; static int fifo; +static FILE * fifo_fd = NULL; void opd_create_pipe(void) { @@ -61,14 +62,14 @@ int is_jitconv_requested(void) static long nr_drops = 0; /* modulus to output only a few warnings to avoid flooding oprofiled.log */ static int mod_cnt_drops = 1; - FILE * fd; char line[256]; int i, ret = 0; /* get a file descriptor to the pipe */ - fd = fdopen(fifo, "r"); + if (!fifo_fd) + fifo_fd = fdopen(fifo, "r"); - if (fd == NULL) { + if (fifo_fd == NULL) { perror("oprofiled: couldn't create file descriptor: "); exit(EXIT_FAILURE); } Index: opjitconv/parse_dump.c =================================================================== RCS file: /cvsroot/oprofile/oprofile/opjitconv/parse_dump.c,v retrieving revision 1.2 diff -p -a -u -r1.2 parse_dump.c --- opjitconv/parse_dump.c 28 Apr 2008 21:23:23 -0000 1.2 +++ opjitconv/parse_dump.c 7 Apr 2010 08:57:31 -0000 @@ -98,7 +98,7 @@ static void parse_code_unload(void const */ if (rec->timestamp > 0 && rec->vma != 0) { for (entry = jitentry_list; entry; entry = entry->next) { - if (entry->vma == rec->vma && + if (entry->vma == rec->vma && entry->life_start != rec->timestamp && entry->life_end == end_time) { entry->life_end = rec->timestamp; verbprintf(debug,"matching record found\n");