Go to file
Masatake YAMATO 9bc6561588 unwind: implement automatic mmap cache invalidation
A mmap cache belonging to a tcb was updated when a system call which
changed the memory mapping was called.  This implementation was assumed
the mapping was changed only by the tcb.  However, this assumption is
incorrect if the target application is multi-threaded; more than two
tcbs can shared the same memory mapping and a tcb can modify it without
being noticed by the others.

This change introduces a global integer variable mmap_cache_generation,
and mmap_cache_generation field to struct tcb.  The variable
is incremented each time a process enters a syscall that can modify its
memory mapping.  Each tcb records the value of this variable at the
moment if  building its mmap cache.  Every mmap cache associated with
the given tcb can be validated by comparing its mmap_cache_generation
field with the variable mmap_cache_generation.

This implementation is inefficient.  If strace attaches two processes
which don't share the memory mapping, rebuilding mmap cache of a tcb
triggered by another tcb's mmap system call is not necessary.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
2014-05-30 22:56:14 +00:00
debian Prepare for 4.8 release 2013-06-03 12:34:56 +00:00
linux Enhance setns syscall decoding 2014-05-13 23:22:47 +00:00
m4 Remove unused AC_OFF_T_IS_LONG_LONG configure check 2013-11-12 15:43:06 +00:00
qemu_multiarch_testing Use bootstrap script consistently 2014-05-30 21:31:08 +00:00
test Add a test for the latest select decoding fix 2013-11-05 23:35:56 +00:00
tests tests: fix SCM_RIGHTS test for big-endian systems 2014-05-30 15:18:00 +00:00
xlat sysctl: update CTL_*, KERN_*, NET_*, and VM_* constants 2014-05-30 22:10:21 +00:00
.gitignore Ignore more files 2013-05-02 22:06:12 +00:00
.mailmap Remove duplicate names from CREDITS 2012-05-01 21:51:38 +00:00
aio.c Move io_* syscalls decoding to a separate file 2013-11-11 15:06:18 +00:00
AUTHORS 2002-12-22 Roland McGrath <roland@redhat.com> 2002-12-30 00:51:30 +00:00
bjm.c Compress blank lines 2014-05-30 22:10:21 +00:00
block.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
bootstrap Use bootstrap script consistently 2014-05-30 21:31:08 +00:00
build_static_example.sh Use bootstrap script consistently 2014-05-30 21:31:08 +00:00
ChangeLog-CVS Generate ChangeLog from git log 2009-07-08 21:01:21 +00:00
configure.ac Add -k option to print stack trace after each syscall 2014-05-30 22:24:31 +00:00
COPYING Rename COPYRIGHT to COPYING 2013-05-17 23:18:55 +00:00
count.c Optionally produce stats on syscall latency 2014-05-29 18:15:38 +00:00
CREDITS.in Remove duplicate names from CREDITS 2012-05-01 21:51:38 +00:00
defs.h unwind: implement automatic mmap cache invalidation 2014-05-30 22:56:14 +00:00
desc.c Compress blank lines 2014-05-30 22:10:21 +00:00
errnoent.sh Tidy up includes and copyright notices, fix indentation 2012-03-16 12:02:22 +01:00
fanotify.c Compress blank lines 2014-05-30 22:10:21 +00:00
file.c Compress blank lines 2014-05-30 22:10:21 +00:00
generate_xlat_in.sh Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
git-set-file-times * git-set-file-times: Import from rsync. 2009-10-09 23:07:28 +00:00
git-version-gen build: introduce git-version-gen 2013-04-30 23:52:12 +00:00
gitlog-to-changelog gitlog-to-changelog: update from gnulib 2011-11-05 13:32:27 +00:00
HACKING-scripts HACKING-scripts: new doc file by Mike Frysinger 2009-02-23 07:56:01 +00:00
inotify.c Compress blank lines 2014-05-30 22:10:21 +00:00
INSTALL Remove and update documentation 2012-02-25 15:29:21 +01:00
io.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
ioctl.c Do not compile scsi ioctl decoding if <scsi/sg.h> is not available 2014-02-25 23:15:20 +00:00
ioprio.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
ipc.c Compress blank lines 2014-05-30 22:10:21 +00:00
kexec.c Compress blank lines 2014-05-30 22:10:21 +00:00
keyctl.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
ldt.c Refactor LDT decoding 2014-04-10 15:29:13 +00:00
loop.c Compress blank lines 2014-05-30 22:10:21 +00:00
make-dist Use bootstrap script consistently 2014-05-30 21:31:08 +00:00
Makefile.am Add -k option to print stack trace after each syscall 2014-05-30 22:24:31 +00:00
mem.c unwind: introduce queue_t for capturing stacktrace 2014-05-30 22:55:08 +00:00
mtd.c Compress blank lines 2014-05-30 22:10:21 +00:00
net.c Compress blank lines 2014-05-30 22:10:21 +00:00
NEWS Optionally produce stats on syscall latency 2014-05-29 18:15:38 +00:00
pathtrace.c Implement fanotify_init and fanotify_mark decoding 2014-02-05 04:55:21 +00:00
process.c unwind: introduce queue_t for capturing stacktrace 2014-05-30 22:55:08 +00:00
ptp.c Compress blank lines 2014-05-30 22:10:21 +00:00
quota.c Compress blank lines 2014-05-30 22:10:21 +00:00
README Rename COPYRIGHT to COPYING 2013-05-17 23:18:55 +00:00
README-hacking doc: describe documentation policy 2012-05-03 01:44:49 +00:00
README-linux Cleanup trailing whitespaces and indentation that uses spaces before tabs 2009-07-08 14:57:27 +00:00
README-linux-ptrace README-linux-ptrace: correct the description of suppressed signals 2012-02-09 19:57:52 +01:00
reboot.c Compress blank lines 2014-05-30 22:10:21 +00:00
resource.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
scsi.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
signal.c Compress blank lines 2014-05-30 22:10:21 +00:00
signalent.sh Tidy up includes and copyright notices, fix indentation 2012-03-16 12:02:22 +01:00
sock.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
strace-graph Tidy up includes and copyright notices, fix indentation 2012-03-16 12:02:22 +01:00
strace-log-merge strace-log-merge: fix file suffix calculation 2012-03-26 12:10:01 +00:00
strace.1 Add -k option to print stack trace after each syscall 2014-05-30 22:24:31 +00:00
strace.c unwind: give all exported functions "unwind_" prefix 2014-05-30 22:40:22 +00:00
strace.spec Prepare for 4.8 release 2013-06-03 12:34:56 +00:00
stream.c Generate xlat/*.in files 2014-05-30 21:40:03 +00:00
syscall.c unwind: give all exported functions "unwind_" prefix 2014-05-30 22:40:22 +00:00
syscallent.sh Tidy up includes and copyright notices, fix indentation 2012-03-16 12:02:22 +01:00
system.c sysctl: update CTL_*, KERN_*, NET_*, and VM_* constants 2014-05-30 22:10:21 +00:00
term.c Compress blank lines 2014-05-30 22:10:21 +00:00
time.c Compress blank lines 2014-05-30 22:10:21 +00:00
unwind.c unwind: implement automatic mmap cache invalidation 2014-05-30 22:56:14 +00:00
util.c Constify tv_* functions 2014-05-29 17:59:01 +00:00
vsprintf.c Fix build with Bionic libc 2014-02-26 00:01:00 +00:00
xlate.el Tidy up includes and copyright notices, fix indentation 2012-03-16 12:02:22 +01:00

This is strace, a system call tracer for Linux.

strace is released under a Berkeley-style license at the request
of Paul Kranenburg; see the file COPYING for details.

See the file CREDITS for a list of authors and other contributors.

See the file INSTALL for compilation and installation instructions.

See the file NEWS for information on what has changed in recent
versions.

You can get the latest version of strace from its homepage at
http://sourceforge.net/projects/strace/ .

Please send bug reports and enhancements to the strace
mailinglist at strace-devel@lists.sourceforge.net.