Tue Feb 19 12:01:31 2008 Google Inc. <opensource@google.com>

* google-perftools: version 0.95.1 release  (bugfix release)
	* x86_64 compile-fix: nix pread64 and pwrite64 (csilvers)
	* more heap-checker debug logging (maxim)
	* minor improvement to x86_64 CycleClock (gpike)


git-svn-id: http://gperftools.googlecode.com/svn/trunk@46 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
This commit is contained in:
csilvers 2008-02-19 22:19:22 +00:00
parent 8a0a3101bc
commit a644b4f2d6
6 changed files with 34 additions and 21 deletions

View File

@ -1,3 +1,10 @@
Tue Feb 19 12:01:31 2008 Google Inc. <opensource@google.com>
* google-perftools: version 0.95.1 release (bugfix release)
* x86_64 compile-fix: nix pread64 and pwrite64 (csilvers)
* more heap-checker debug logging (maxim)
* minor improvement to x86_64 CycleClock (gpike)
Tue Feb 12 12:28:32 2008 Google Inc. <opensource@google.com>
* google-perftools: version 0.95 release

20
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for google-perftools 0.95.
# Generated by GNU Autoconf 2.59 for google-perftools 0.95.1.
#
# Report bugs to <opensource@google.com>.
#
@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='google-perftools'
PACKAGE_TARNAME='google-perftools'
PACKAGE_VERSION='0.95'
PACKAGE_STRING='google-perftools 0.95'
PACKAGE_VERSION='0.95.1'
PACKAGE_STRING='google-perftools 0.95.1'
PACKAGE_BUGREPORT='opensource@google.com'
ac_unique_file="README"
@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures google-perftools 0.95 to adapt to many kinds of systems.
\`configure' configures google-perftools 0.95.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1021,7 +1021,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of google-perftools 0.95:";;
short | recursive ) echo "Configuration of google-perftools 0.95.1:";;
esac
cat <<\_ACEOF
@ -1162,7 +1162,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
google-perftools configure 0.95
google-perftools configure 0.95.1
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@ -1176,7 +1176,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by google-perftools $as_me 0.95, which was
It was created by google-perftools $as_me 0.95.1, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@ -1904,7 +1904,7 @@ fi
# Define the identity of the package.
PACKAGE='google-perftools'
VERSION='0.95'
VERSION='0.95.1'
cat >>confdefs.h <<_ACEOF
@ -24092,7 +24092,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by google-perftools $as_me 0.95, which was
This file was extended by google-perftools $as_me 0.95.1, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -24155,7 +24155,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
google-perftools config.status 0.95
google-perftools config.status 0.95.1
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -4,7 +4,7 @@
# make sure we're interpreted by some minimal autoconf
AC_PREREQ(2.57)
AC_INIT(google-perftools, 0.95, opensource@google.com)
AC_INIT(google-perftools, 0.95.1, opensource@google.com)
# The argument here is just something that should be in the current directory
# (for sanity checking)
AC_CONFIG_SRCDIR(README)

View File

@ -56,11 +56,9 @@ struct CycleClock {
: "=A" (ret) );
return ret;
#elif defined(__x86_64__) || defined(__amd64__)
int64 low, high;
__asm__ volatile ("rdtsc\n"
"shl $0x20, %%rdx"
: "=a" (low), "=d" (high));
return high | low;
uint32 low, high;
__asm__ volatile ("rdtsc" : "=a" (low), "=d" (high));
return (static_cast<uint64>(high) << 32) | low;
#elif defined(__powerpc__) || defined(__ppc__)
// This returns a time-base, which is not always precisely a cycle-count.
int64 tbl, tbu0, tbu1;

View File

@ -2730,10 +2730,7 @@ struct kernel_statfs {
}
#if defined(__x86_64__) || \
(defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
LSS_INLINE _syscall4(ssize_t, pread64, int, f,
void *, b, size_t, c, loff_t, o)
LSS_INLINE _syscall4(ssize_t, pwrite64, int, f,
const void *, b, size_t, c, loff_t, o)
/* pread64() and pwrite64() do not exist on 64-bit systems... */
LSS_INLINE _syscall3(int, readahead, int, f,
loff_t, o, unsigned, c)
#else

View File

@ -495,7 +495,8 @@ static void RegisterStack(const void* top_ptr) {
top - region.start_addr,
THREAD_DATA));
}
} else { // not in MemoryRegionMap, look in library_live_objects
// not in MemoryRegionMap, look in library_live_objects:
} else if (FLAGS_heap_check_ignore_global_live) {
for (LibraryLiveObjectsStacks::iterator lib = library_live_objects->begin();
lib != library_live_objects->end(); ++lib) {
for (LiveObjectsStack::iterator span = lib->second.begin();
@ -1224,6 +1225,16 @@ void HeapLeakChecker::IgnoreLiveObjectsLocked(const char* name,
RAW_VLOG(5, "Found pointer to %p of %"PRIuS" bytes at %p "
"inside %p of size %"PRIuS"",
ptr, object_size, object, whole_object, whole_size);
if (VLOG_IS_ON(6)) {
// log call stacks to help debug how come something is not a leak
HeapProfileTable::AllocInfo alloc;
bool r = heap_profile->FindAllocDetails(ptr, &alloc);
RAW_DCHECK(r, ""); // sanity
RAW_LOG(INFO, "New live %p object's alloc stack:", ptr);
for (int i = 0; i < alloc.stack_depth; ++i) {
RAW_LOG(INFO, " @ %p", alloc.call_stack[i]);
}
}
live_object_count += 1;
live_byte_count += object_size;
live_objects->push_back(AllocObject(ptr, object_size,