[patch] Support live PIDs with deleted files

Jan Kratochvil jan.kratochvil at redhat.com
Wed Dec 18 19:15:19 UTC 2013


Hi Mark,

I forgot the demo:

# cd tests;make deleted deleted-lib.so;./deleted&p=$!;sleep 0.1;rm deleted deleted-lib.so;../src/stack -m -p $p
[...]
TID 7712:
#0  0x00000033472bd360 __nanosleep - /usr/lib64/libc-2.17.so
#1  0x00000033472bd214 sleep - /usr/lib64/libc-2.17.so
#2  0x00007f9aa725b6d6 libfunc - .../elfutils/tests/deleted-lib.so (deleted)
#3  0x000000000040089f main - .../elfutils/tests/deleted (deleted)
#4  0x0000003347221b45 __libc_start_main - /usr/lib64/libc-2.17.so
#5  0x0000000000400779 _start - .../elfutils/tests/deleted (deleted)
$ gdb -q -p $p
Attaching to process 12280
.../elfutils/tests/deleted (deleted): No such file or directory.
(gdb) bt
#0  0x472bd360 in ?? ()
Cannot access memory at address 0x2cc946e8
(gdb) _


Also not completely sure if ' (deleted)' should be left there but I think it
is right as long as Linux kernel finds it right there.  I had there first:
          size_t last_file_len = strlen (last_file);
          const char deleted[] = " (deleted)";
          const size_t deleted_len = strlen (deleted);
          if (last_file_len > deleted_len
              && strcmp (&last_file[last_file_len - deleted_len], deleted) == 0)
            last_file[last_file_len - deleted_len] = 0;


Thanks,
Jan


More information about the elfutils-devel mailing list