0

Remove old files.

Review URL: http://codereview.chromium.org/425008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32711 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
nsylvain@chromium.org
2009-11-20 23:31:59 +00:00
parent b41422d5a4
commit 70aea9a599
55 changed files with 0 additions and 4997 deletions

@ -74,9 +74,6 @@ def CheckChangeOnCommit(input_api, output_api):
# These builders are just too slow.
IGNORED_BUILDERS = [
'Chromium XP',
'XP Unit (purify)',
'Modules XP (purify)',
'Webkit (purify)',
'Chromium Mac',
'Chromium Mac (valgrind)',
'Chromium Mac UI (valgrind)(1)',

@ -14,9 +14,6 @@
'valgrind': {
'filepath': 'valgrind',
},
'purify': {
'filepath': 'purify',
},
'mac': {
'filepath': 'cocoa|\.mm$|(_mac|_posix)\.(cc|h)$',
},
@ -134,7 +131,6 @@
'extension': ['aa@chromium.org',
'erikkay@chromium.org',
'pam+watch@chromium.org'],
'purify': ['erikkay@chromium.org'],
'net': ['darin@chromium.org'],
'ftp': ['phajdan.jr@chromium.org'],
'installer': ['kuchhal@chromium.org'],

@ -1,33 +0,0 @@
# this test causes Purify to get completely confused, aborting the test and
# popping up 10 or more error dialogs
StatsTableTest.MultipleProcesses
# see bug 1151158
# causes purify to occasionally crash, possibly the same reason as 1110206 below
StatsTableTest.MultipleThreads
# this test takes a really long time to run in Purify
TimeTicks.Rollover
TimeTicks.WinRollover
# see bug 1110206
ConditionVariableTest.LargeFastTaskTest
# see bug 1150075
MessageLoopTest.Crasher*
# see bug 1195707
WMIUtilTest.*
# see issue 7412
ScopedTempDir.*
# see issue 7477
ObserverListThreadSafeTest.CrossThreadObserver
ObserverListThreadSafeTest.CrossThreadNotifications
# see bug 10031
SignatureVerifierTest.BasicTest
# See issue 24341 / 25598, this test is hanging in purify.
FileUtilICUTest.*

@ -1,97 +0,0 @@
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::_Mutex::_Mutex(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::basic_streambuf<char,char_traits<char>::std>::basic_streambuf<char,char_traits<char>::std>(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::ios_base::_Init(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::~LogMessage(void)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::_Mutex::_Mutex(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::basic_streambuf<char,char_traits<char>::std>::basic_streambuf<char,char_traits<char>::std>(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::ios_base::_Init(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::~LogMessage(void)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
CoTaskMemAlloc [OLE32.DLL]
Alloc Location
...
base/wmi_util.cc WMIUtil::CreateLocalConnection(bool)
base/wmi_util.cc WMIProcessUtil::Launch(class std::basic_string const &,int *)
base/wmi_util_unittest.cc WMIUtilTest_TestLaunchProcess_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,18 +0,0 @@
CoTaskMemAlloc [OLE32.DLL]
Alloc Location
...
base/wmi_util.cc WMIUtil::CreateLocalConnection(bool)
base/wmi_util.cc WMIProcessUtil::Launch(class std::basic_string const &,int *)
base/wmi_util_unittest.cc WMIUtilTest_TestLaunchProcess_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
base::ObjectWatcher::StartWatching(void *,Delegate::ObjectWatcher::base *) [base_unittests.exe]
Alloc Location
...
base/object_watcher.cc base::ObjectWatcher::StartWatching(void *,Delegate::ObjectWatcher::base *)
base/directory_watcher_win.cc DirectoryWatcher::Impl::OnObjectSignaled(void *)
base/object_watcher.cc base::ObjectWatcher::Watch::Run(void)
base/message_loop.cc MessageLoop::RunTask(Task *)
^^^

@ -1,93 +0,0 @@
# -----
# Leaks in ::RaiseException, called when we log a fatal error. See bug 1078612.
std::strstreambuf::overflow(int) [base_unittests.exe]
Alloc Location
...
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::_Mutex::_Mutex(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::basic_streambuf<char,char_traits<char>::std>::basic_streambuf<char,char_traits<char>::std>(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::ios_base::_Init(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::~LogMessage(void)
base/check_handler_unittest.cc ThisFunctionAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckFunc_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::strstreambuf::overflow(int) [base_unittests.exe]
Alloc Location
...
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::_Mutex::_Mutex(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::basic_streambuf<char,char_traits<char>::std>::basic_streambuf<char,char_traits<char>::std>(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::ios_base::_Init(void) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::LogMessage(char const*,int,int)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [base_unittests.exe]
Alloc Location
...
base/logging.cc logging::LogMessage::~LogMessage(void)
base/check_handler_unittest.cc SimpleTestClass::ThisMethodAsserts(void)
base/check_handler_unittest.cc CheckHandlerTest_TestMacroCheckObj_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
# End of leaks in ::RaiseException
# -----

@ -1,8 +0,0 @@
# Probably a Purify error. See bug 1076843.
WideCharToMultiByte: Invalid size (0x27) for destination buffer.
Error Location
...
base/file_util_unittest.cc FileUtilTest_ResolveShortcutTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,48 +0,0 @@
Uninitialized memory read in `anonymous namespace'::PrependInteger
Error Location
base/crypto/rsa_private_key_win.cc `anonymous namespace'::PrependInteger
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/rsa_private_key_unittest.cc RSAPrivateKeyUnitTest_InitRandomTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/rsa_private_key_unittest.cc RSAPrivateKeyUnitTest_InitRandomTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list<BYTE,allocator<BYTE>::std>::std *,bool)
Error Location
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
...
Alloc Location
...
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
...
Uninitialized memory read in base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list<BYTE,allocator<BYTE>::std>::std *,bool)
Error Location
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/signature_creator_unittest.cc SignatureCreatorTest_BasicTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/signature_creator_unittest.cc SignatureCreatorTest_BasicTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -222,28 +222,6 @@
'../chrome_frame/chrome_frame.gyp:chrome_frame_perftests',
],
},
{
'target_name': 'purify_builder_ui',
'type': 'none',
'dependencies': [
'../chrome/chrome.gyp:ui_tests',
],
},
{
'target_name': 'purify_builder_unit',
'type': 'none',
'dependencies': [
'../chrome/chrome.gyp:unit_tests',
],
},
{
'target_name': 'purify_builder_webkit',
'type': 'none',
'dependencies': [
'../webkit/tools/test_shell/test_shell.gyp:test_shell_tests',
'../webkit/tools/test_shell/test_shell.gyp:test_shell',
],
},
], # targets
}], # OS="win"
], # conditions

@ -1,6 +0,0 @@
# See bug 1157381
Pure: Trap bits found in live chunk
# See bug 1128489
NSSDecryptor::Init
NSSDecryptor::Free

@ -1,157 +0,0 @@
Uninitialized memory read in strlen
Error Location
...
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::ProcessNextObject(void)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in WriteFile
Error Location
...
chrome/common/ipc_channel.cc IPC::Channel::ProcessOutgoingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
chrome/common/ipc_channel.cc IPC::Channel::Send(Message::IPC *)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::ProcessNextObject(void)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Alloc Location
...
base/pickle.cc Pickle::Resize(UINT)
base/pickle.cc Pickle::BeginWrite(UINT)
base/pickle.cc Pickle::WriteBytes(void const*,int)
base/pickle.cc Pickle::WriteString(basic_string::std const&)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::ProcessNextObject(void)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in strlen
Error Location
...
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in WriteFile
Error Location
...
chrome/common/ipc_channel.cc IPC::Channel::ProcessOutgoingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
chrome/common/ipc_channel.cc IPC::Channel::Send(Message::IPC *)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Alloc Location
...
base/pickle.cc Pickle::Resize(UINT)
base/pickle.cc Pickle::BeginWrite(UINT)
base/pickle.cc Pickle::WriteBytes(void const*,int)
base/pickle.cc Pickle::WriteString(basic_string::std const&)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in WriteFile
Error Location
...
chrome/common/ipc_channel.cc IPC::Channel::ProcessOutgoingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::Send(Message::IPC *)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Alloc Location
...
base/pickle.cc Pickle::Resize(UINT)
base/pickle.cc Pickle::BeginWrite(UINT)
base/pickle.cc Pickle::WriteBytes(void const*,int)
base/pickle.cc Pickle::WriteString(basic_string::std const&)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc MyChannelListener::OnMessageReceived(Message::IPC const&)
chrome/common/ipc_channel.cc IPC::Channel::ProcessIncomingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::OnObjectSignaled(void *)
base/message_loop.cc MessageLoop::SignalWatcher(DWORD)
base/message_loop.cc MessageLoop::Run(Dispatcher::MessageLoop *)
base/message_loop.cc MessageLoop::Run(void)
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in strlen
Error Location
...
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Uninitialized memory read in WriteFile
Error Location
...
chrome/common/ipc_channel.cc IPC::Channel::ProcessOutgoingMessages(void)
chrome/common/ipc_channel.cc IPC::Channel::Send(Message::IPC *)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...
Alloc Location
...
base/pickle.cc Pickle::Resize(UINT)
base/pickle.cc Pickle::BeginWrite(UINT)
base/pickle.cc Pickle::WriteBytes(void const*,int)
base/pickle.cc Pickle::WriteString(basic_string::std const&)
chrome/common/ipc_tests.cc Send
chrome/common/ipc_tests.cc RunTestClient
chrome/common/ipc_tests.cc main
...

@ -1,18 +0,0 @@
# These tests seem to stall out and not complete. Adjusting various timeouts
# didn't seem to help, but more investigation is needed.
# Bug: http://crbug.com/6492
UnloadTest.BrowserCloseBeforeUnloadOK
UnloadTest.BrowserCloseBeforeUnloadCancel
# These tests stall out, more investigation needed.
# Bug: http://crbug.com/6493
NPAPITester.ManyPlugins
# Bug: http://crbug.com/6584
SSLUITest.*
# Bug: http://crbug.com/8675
SessionRestoreUITest.RestoresCrossSiteForwardAndBackwardNavs
# Intentional memory leak.
ChromeThreadTest.NotReleasedIfTargetThreadNonExistent

@ -1,37 +0,0 @@
# buganizer 1178136
ImporterTest.Firefox35Importer
# issue 2468
URLFetcherBadHTTPSTest.BadHTTPSTest
SafeBrowsingProtocolParsingTest.TestSubChunk
# testing to see if this gets rid of intermittent leaks
IPCSyncChannelTest.SendWithTimeout*
# issue 7891
FindInPageControllerTest.FindInPageFrames
# Takes 10 minutes to run.
IPCSyncChannelTest.ChattyServer
# issue 9897
ExtensionContentScriptInjectTest.Simple
# issue 15276
CompactLangDetTest.*
# issue 17370
FirefoxImporterTest.Firefox3NSS3Decryptor
# issue 18122
DnsMasterTest.MassiveConcurrentLookupTest
# issue 19834
SpellCheckTest.*
# issue 21401
ResourceDispatcherHostTest.TooManyOutstandingRequests
# issue 22252
HistoryQueryTest.*

@ -1,12 +0,0 @@
Freeing invalid memory in free
Free Location
...
chrome/third_party/hunspell/src/hunspell/hashmgr.cxx HashMgr::~HashMgr(void)
chrome/release/unit_tests.exe HashMgr::`scalar deleting destructor'(UINT)
chrome/third_party/hunspell/src/hunspell/hunspell.cxx Hunspell::~Hunspell(void)
chrome/release/unit_tests.exe Hunspell::`scalar deleting destructor'(UINT)
chrome/browser/spellchecker.cc SpellChecker::~SpellChecker(void)
chrome/renderer/spellcheck_unittest.cc SpellCheckTest_SpellCheckStrings_EN_US_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,146 +0,0 @@
IPC::Channel::ChannelImpl::Connect(void) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::Connect(void)
ipc/ipc_channel_win.cc IPC::Channel::Connect(void)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnChannelOpened(void)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncContext::OnChannelOpened(void)
base/tuple.h ?DispatchToMethod@VContext@ChannelProxy@IPC@@P8123@AEXXZ@@YAXPAVContext@ChannelProxy@IPC@@P8012@AEXXZABUTuple0@@@Z
^^^
IPC::SyncChannel::SyncChannel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::ChannelProxy::Context::CreateChannel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC const&) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::Channel::Channel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC,Listener::Channel::IPC *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
RevocableStore::RevocableStore(void) [unit_tests.exe]
Alloc Location
...
base/revocable_store.cc RevocableStore::RevocableStore(void)
base/task.h ScopedRunnableMethodFactory::ScopedRunnableMethodFactory(ChannelImpl::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@PAPAVMessage@IPC@@@std@@YAPAPAPAVMessage@IPC@@IPAPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::CreatePipe(basic_string::std const&,Mode::Channel::IPC)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@PAVMessage@IPC@@@std@@YAPAPAVMessage@IPC@@IPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::CreatePipe(basic_string::std const&,Mode::Channel::IPC)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::SyncChannel::ReceivedSyncMsgQueue::AddContext(void) [unit_tests.exe]
Alloc Location
...
ipc/ipc_sync_channel.cc IPC::SyncChannel::ReceivedSyncMsgQueue::AddContext(void)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncContext::SyncContext(Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,WaitableEvent::base *)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::SyncChannel::SyncChannel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_sync_channel.cc:362 IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc:43 ChildThread::Init(void)
chrome/common/child_thread.cc:28 ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc:128 RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc:22 RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc:2064 testing::Test::Run(void)
^^^
ChromeThreadTest_NotReleasedIfTargetThreadNonExistent_Test::TestBody(void) [unit_tests.exe]
Alloc Location
...
chrome/browser/chrome_thread_unittest.cc ChromeThreadTest_NotReleasedIfTargetThreadNonExistent_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,298 +0,0 @@
sqlite3GenericRealloc [unit_tests.exe]
Alloc Location
...
chrome/browser/history/history_unittest.cc history::HistoryProfileTest_TypicalProfileVersion_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
sqlite3GenericRealloc [unit_tests.exe]
Alloc Location
...
chrome/browser/history/history_unittest.cc history::HistoryProfileTest_TypicalProfileVersion_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
sqlite3GenericRealloc [unit_tests.exe]
Alloc Location
...
chrome/browser/history/history_unittest.cc history::HistoryProfileTest_TypicalProfileVersion_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
sqlite3GenericMalloc [unit_tests.exe]
Alloc Location
...
chrome/common/sqlite_utils.h SQLStatement::prepare(sqlite3 *,char const*,int)
chrome/common/sqlite_utils.h SQLStatement::prepare(sqlite3 *,char const*)
chrome/browser/history/history_unittest.cc history::HistoryProfileTest_TypicalProfileVersion_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
sqlite3GenericMalloc [unit_tests.exe]
Alloc Location
...
chrome/common/sqlite_utils.h SQLStatement::step(void)
chrome/browser/history/history_unittest.cc history::HistoryProfileTest_TypicalProfileVersion_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@V?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@@std@@YAPAV?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@IPAV1@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnAddFilter(MessageFilter::ChannelProxy::IPC *)
base/tuple.h ?DispatchToMethod@VContext@ChannelProxy@IPC@@P8123@AEXPAVMessageFilter@23@@ZPAV423@@@YAXPAVContext@ChannelProxy@IPC@@P8012@AEXPAVMessageFilter@12@@ZABU?$Tuple1@PAVMessageFilter@ChannelProxy@IPC@@@@@Z
^^^
IPC::Channel::ChannelImpl::Connect(void) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::Connect(void)
ipc/ipc_channel_win.cc IPC::Channel::Connect(void)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnChannelOpened(void)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncContext::OnChannelOpened(void)
base/tuple.h ?DispatchToMethod@VContext@ChannelProxy@IPC@@P8123@AEXXZ@@YAXPAVContext@ChannelProxy@IPC@@P8012@AEXXZABUTuple0@@@Z
^^^
IPC::SyncChannel::SyncChannel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::D::_Allocate(unsigned int,char *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::Channel::Channel(basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,Mode::Channel::IPC,Listener::Channel::IPC *) [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
RevocableStore::RevocableStore(void) [unit_tests.exe]
Alloc Location
...
base/revocable_store.cc RevocableStore::RevocableStore(void)
base/task.h ScopedRunnableMethodFactory::ScopedRunnableMethodFactory(ChannelImpl::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@PAVMessage@IPC@@@std@@YAPAPAVMessage@IPC@@IPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::CreatePipe(basic_string::std const&,Mode::Channel::IPC)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@PAVMessage@IPC@@@std@@YAPAPAVMessage@IPC@@IPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::CreatePipe(basic_string::std const&,Mode::Channel::IPC)
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::ChannelImpl(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Channel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::CreateChannel(basic_string::std const&,Mode::Channel::IPC const&)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Init(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,bool)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::ChannelProxy(basic_string::std const&,Mode::Channel::IPC,MessageLoop *,Context::ChannelProxy::IPC *,bool)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
IPC::SyncChannel::ReceivedSyncMsgQueue::AddContext(void) [unit_tests.exe]
Alloc Location
...
ipc/ipc_sync_channel.cc IPC::SyncChannel::ReceivedSyncMsgQueue::AddContext(void)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncContext::SyncContext(Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,WaitableEvent::base *)
ipc/ipc_sync_channel.cc IPC::SyncChannel::SyncChannel(basic_string::std const&,Mode::Channel::IPC,Listener::Channel::IPC *,MessageFilter::ChannelProxy::IPC *,MessageLoop *,bool,WaitableEvent::base *)
chrome/common/child_thread.cc ChildThread::Init(void)
chrome/common/child_thread.cc ChildThread::ChildThread(basic_string::std const&)
chrome/renderer/render_thread.cc RenderThread::RenderThread(basic_string::std const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@V?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@@std@@YAPAV?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@IPAV1@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnAddFilter(MessageFilter::ChannelProxy::IPC *)
base/tuple.h ?DispatchToMethod@VContext@ChannelProxy@IPC@@P8123@AEXPAVMessageFilter@23@@ZPAV423@@@YAXPAVContext@ChannelProxy@IPC@@P8012@AEXPAVMessageFilter@12@@ZABU?$Tuple1@PAVMessageFilter@ChannelProxy@IPC@@@@@Z
^^^
Pickle::Resize(UINT) [unit_tests.exe]
Alloc Location
...
base/pickle.cc Pickle::Resize(UINT)
base/pickle.cc Pickle::Pickle(int)
ipc/ipc_message.cc IPC::Message::Message(int,WORD,PriorityValue::Message::IPC)
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple1 const&)
chrome/common/render_messages_internal.h ViewMsg_VisitedLink_NewTable::ViewMsg_VisitedLink_NewTable(void * const const&)
chrome/renderer/render_thread_unittest.cc RenderThreadTest_TestVisitedMsg_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@PAVMessage@IPC@@@std@@YAPAPAVMessage@IPC@@IPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::Send(Message::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Send(Message::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnSendMessage(Message::IPC *)
ipc/ipc_channel_proxy.cc IPC::SendTask::Run(void)
base/message_loop.cc MessageLoop::RunTask(Task *)
^^^
?_Allocate@PAVMessage@IPC@@@std@@YAPAPAVMessage@IPC@@IPAPAV12@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_win.cc IPC::Channel::ChannelImpl::Send(Message::IPC *)
ipc/ipc_channel_win.cc IPC::Channel::Send(Message::IPC *)
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnSendMessage(Message::IPC *)
ipc/ipc_channel_proxy.cc IPC::SendTask::Run(void)
base/message_loop.cc MessageLoop::RunTask(Task *)
^^^
?A0xc590570c::RenderThreadTest_TestVisitedMsg_Test::TestBody(void) [unit_tests.exe]
Alloc Location
...
chrome/renderer/render_thread_unittest.cc RenderThreadTest_TestVisitedMsg_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?_Allocate@V?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@@std@@YAPAV?$scoped_refptr@VMessageFilter@ChannelProxy@IPC@@@@IPAV1@@Z [unit_tests.exe]
Alloc Location
...
ipc/ipc_channel_proxy.cc IPC::ChannelProxy::Context::OnAddFilter(MessageFilter::ChannelProxy::IPC *)
base/tuple.h ?DispatchToMethod@VContext@ChannelProxy@IPC@@P8123@AEXPAVMessageFilter@23@@ZPAV423@@@YAXPAVContext@ChannelProxy@IPC@@P8012@AEXPAVMessageFilter@12@@ZABU?$Tuple1@PAVMessageFilter@ChannelProxy@IPC@@@@@Z
^^^
Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string<char,char_traits<char>::std,allocator<char>::std>::std *) [unit_tests.exe]
Alloc Location
...
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
build/release/unit_tests.exe ExtensionAction::ExtensionAction(void)
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
build/release/unit_tests.exe ExtensionAction::ExtensionAction(void)
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
build/release/unit_tests.exe ExtensionAction::ExtensionAction(void)
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
build/release/unit_tests.exe ExtensionAction::ExtensionAction(void)
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
build/release/unit_tests.exe ExtensionAction::ExtensionAction(void)
chrome/common/extensions/extension.cc:359 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@H_NU?$less@H@std@@V?$allocator@U?$pair@$$CBH_N@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
chrome/common/extensions/extension_action.h:139 ExtensionAction::_N::SetValue(class std::map *,int,bool)
chrome/common/extensions/extension_action.h:117 ExtensionAction::SetIsVisible(int,bool)
chrome/common/extensions/extension.cc:364 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^
?_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@@2@$0A@@std@@@0@IPAU120@@Z [unit_tests.exe]
Alloc Location
...
chrome/common/extensions/extension_action.h:139 ?SetValue@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@ExtensionAction@@AAEXPAV?$map@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@@2@@std@@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z
chrome/common/extensions/extension_action.h:55 ExtensionAction::SetTitle(int,basic_string::std const&)
chrome/common/extensions/extension.cc:418 Extension::LoadExtensionActionHelper(DictionaryValue const*,basic_string::std *)
chrome/common/extensions/extension_unittest.cc:306 ExtensionTest_LoadPageActionHelper_Test::TestBody(void)
testing/gtest/src/gtest.cc:2074 testing::Test::Run(void)
^^^

@ -1,213 +0,0 @@
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h:150 IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h:116 IPC::WriteParam
chrome/common/render_messages.h:1267 IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h:116 IPC::WriteParam
ipc/ipc_message_utils.h:880 IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h:116 IPC::WriteParam
ipc/ipc_message_utils.h:983 IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
...
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/extensions/user_script_listener_unittest.cc ResourceDispatcherHostTester::MakeTestRequestOnIOThread(int,GURL const&)
base/tuple.h ?DispatchToMethod@VResourceDispatcherHostTester@@P81@AEXHABVGURL@@@ZHV2@@@YAXPAVResourceDispatcherHostTester@@P80@AEXHABVGURL@@@ZABU?$Tuple2@HVGURL@@@@@Z
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_Cancel_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_MimeNotSniffed2_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_MimeNotSniffed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_MimeSniff204_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_MimeSniffed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestBlockedRequestsDontLeak_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestBlockedRequestsProcessDies_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestBlockingCancelingRequests_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestBlockingResumingRequests_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestMany_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestProcessCancel_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in IPC::ParamTraits<int>::Write(Message::IPC *,int const&)
Error Location
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,int const&)
ipc/ipc_message_utils.h IPC::WriteParam
chrome/common/render_messages.h IPC::ParamTraits::Write(Message::IPC *,ViewHostMsg_Resource_Request const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::ParamTraits::Write(Message::IPC *,Tuple2 const&)
ipc/ipc_message_utils.h IPC::WriteParam
ipc/ipc_message_utils.h IPC::MessageWithTuple::MessageWithTuple(int,WORD,Tuple2 const&)
chrome/common/render_messages_internal.h ViewHostMsg_RequestResource::ViewHostMsg_RequestResource(int,int const&,ViewHostMsg_Resource_Request const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(Receiver::ResourceDispatcherHost *,int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest::MakeTestRequest(int,int,GURL const&)
chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc ResourceDispatcherHostTest_TestProcessCancel_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,154 +0,0 @@
Uninitialized memory read in WriteFile
Error Location
...
chrome/browser/session_backend.cc SessionBackend::AppendCommandsToFile(void *,vector::std const&)
chrome/browser/session_backend.cc SessionBackend::AppendCommands(vector::std *,bool)
chrome/browser/session_service.cc SessionService::Save(void)
chrome/browser/session_service.cc SessionService::~SessionService(void)
chrome/release/unit_tests.exe SessionService::`vector deleting destructor'(UINT)
base/ref_counted.h base::RefCountedThreadSafe::Release(void)
base/ref_counted.h scoped_refptr::=(SessionService *)
chrome/browser/session_service_test_helper.h SessionServiceTestHelper::set_service(SessionService *)
chrome/browser/session_service_unittest.cc SessionServiceTest::ReadWindows(vector::std *)
chrome/browser/session_service_unittest.cc SessionServiceTest_ClosingTabStaysClosed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
chrome/browser/session_backend.cc SessionCommand::SessionCommand(BYTE,WORD)
chrome/browser/session_service.cc SessionService::CreateTabClosedCommand(int)
chrome/browser/session_service.cc SessionService::TabClosed(SessionID const&,SessionID const&)
chrome/browser/session_service_unittest.cc SessionServiceTest_ClosingTabStaysClosed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in WriteFile
Error Location
...
chrome/browser/session_backend.cc SessionBackend::AppendCommandsToFile(void *,vector::std const&)
chrome/browser/session_backend.cc SessionBackend::AppendCommands(vector::std *,bool)
chrome/browser/session_service.cc SessionService::Save(void)
chrome/browser/session_service.cc SessionService::~SessionService(void)
chrome/release/unit_tests.exe SessionService::`vector deleting destructor'(UINT)
base/ref_counted.h base::RefCountedThreadSafe::Release(void)
base/ref_counted.h scoped_refptr::=(SessionService *)
chrome/browser/session_service_test_helper.h SessionServiceTestHelper::set_service(SessionService *)
chrome/browser/session_service_unittest.cc SessionServiceTest::ReadWindows(vector::std *)
chrome/browser/session_service_unittest.cc SessionServiceTest_WindowCloseCommittedAfterNavigate_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
chrome/browser/session_backend.cc SessionCommand::SessionCommand(BYTE,WORD)
chrome/browser/session_service.cc SessionService::CreateTabClosedCommand(int)
chrome/browser/session_service.cc SessionService::CommitPendingCloses(void)
chrome/browser/session_service.cc SessionService::UpdateTabNavigation(SessionID const&,int,NavigationEntry const&)
chrome/browser/session_service_unittest.cc SessionServiceTest::UpdateNavigation(SessionID const&,TabNavigation const&,bool)
chrome/browser/session_service_unittest.cc SessionServiceTest_WindowCloseCommittedAfterNavigate_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in WriteFile
Error Location
...
chrome/browser/session_backend.cc SessionBackend::AppendCommandsToFile(void *,vector::std const&)
chrome/browser/session_backend.cc SessionBackend::AppendCommands(vector::std *,bool)
chrome/browser/session_service.cc SessionService::Save(void)
chrome/browser/session_service.cc SessionService::~SessionService(void)
chrome/release/unit_tests.exe SessionService::`scalar deleting destructor'(UINT)
base/ref_counted.h base::RefCountedThreadSafe::Release(void)
base/ref_counted.h scoped_refptr::=(SessionService *)
chrome/browser/session_service_test_helper.h SessionServiceTestHelper::set_service(SessionService *)
chrome/browser/session_service_unittest.cc SessionServiceTest::ReadWindows(vector::std *)
chrome/browser/session_service_unittest.cc SessionServiceTest_WindowCloseCommittedAfterNavigate_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
chrome/browser/session_backend.cc SessionCommand::SessionCommand(BYTE,WORD)
chrome/browser/session_service.cc SessionService::CreateTabClosedCommand(int)
chrome/browser/session_service.cc SessionService::CommitPendingCloses(void)
chrome/browser/session_service.cc SessionService::UpdateTabNavigation(SessionID const&,int,NavigationEntry const&)
chrome/browser/session_service_unittest.cc SessionServiceTest::UpdateNavigation(SessionID const&,TabNavigation const&,bool)
chrome/browser/session_service_unittest.cc SessionServiceTest_WindowCloseCommittedAfterNavigate_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in WriteFile
Error Location
...
chrome/browser/session_backend.cc SessionBackend::AppendCommandsToFile(void *,vector::std const&)
chrome/browser/session_backend.cc SessionBackend::AppendCommands(vector::std *,bool)
chrome/browser/session_service.cc SessionService::Save(void)
chrome/browser/session_service.cc SessionService::~SessionService(void)
chrome/release/unit_tests.exe SessionService::`scalar deleting destructor'(UINT)
base/ref_counted.h base::RefCountedThreadSafe::Release(void)
base/ref_counted.h scoped_refptr::=(SessionService *)
chrome/browser/session_service_test_helper.h SessionServiceTestHelper::set_service(SessionService *)
chrome/browser/session_service_unittest.cc SessionServiceTest::ReadWindows(vector::std *)
chrome/browser/session_service_unittest.cc SessionServiceTest_ClosingTabStaysClosed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
chrome/browser/session_backend.cc SessionCommand::SessionCommand(BYTE,WORD)
chrome/browser/session_service.cc SessionService::CreateTabClosedCommand(int)
chrome/browser/session_service.cc SessionService::TabClosed(SessionID const&,SessionID const&)
chrome/browser/session_service_unittest.cc SessionServiceTest_ClosingTabStaysClosed_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in `anonymous namespace'::PrependInteger
Error Location
base/crypto/rsa_private_key_win.cc `anonymous namespace'::PrependInteger
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::GenerateKey(FilePath const&)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::Run(FilePath const&,FilePath const&,FilePath const&,FilePath const&)
chrome/browser/extensions/extensions_service_unittest.cc ExtensionsServiceTest_PackExtension_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::GenerateKey(FilePath const&)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::Run(FilePath const&,FilePath const&,FilePath const&,FilePath const&)
chrome/browser/extensions/extensions_service_unittest.cc ExtensionsServiceTest_PackExtension_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in `anonymous namespace'::PrependInteger
Error Location
base/crypto/rsa_private_key_win.cc `anonymous namespace'::PrependInteger
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/signature_creator_unittest.cc SignatureCreatorTest_BasicTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
base/crypto/signature_creator_unittest.cc SignatureCreatorTest_BasicTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list<BYTE,allocator<BYTE>::std>::std *,bool)
Error Location
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::GenerateKey(FilePath const&)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::Run(FilePath const&,FilePath const&,FilePath const&,FilePath const&)
chrome/browser/extensions/extensions_service_unittest.cc ExtensionsServiceTest_PackExtension_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependIntegerImpl(BYTE *,int,list::std *,bool)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::PrependInteger(vector::std const&,list::std *)
base/crypto/rsa_private_key.cc base::PrivateKeyInfoCodec::Export(vector::std *)
base/crypto/rsa_private_key_win.cc base::RSAPrivateKey::ExportPrivateKey(vector::std *)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::GenerateKey(FilePath const&)
chrome/browser/extensions/extension_creator.cc ExtensionCreator::Run(FilePath const&,FilePath const&,FilePath const&,FilePath const&)
chrome/browser/extensions/extensions_service_unittest.cc ExtensionsServiceTest_PackExtension_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,17 +0,0 @@
# bug 1339772
# These tests leak data intentionally, so are not appropriate for Purify tests.
# Similar list in ../valgrind/net_unittests.gtest.txt
# TODO(dkegel): either merge the two files or keep them in sync, see
# http://code.google.com/p/chromium/issues/detail?id=8951
DiskCacheBackendTest.InvalidEntry
DiskCacheBackendTest.InvalidEntryRead
DiskCacheBackendTest.InvalidEntryWithLoad
DiskCacheBackendTest.TrimInvalidEntry
DiskCacheBackendTest.TrimInvalidEntry2
DiskCacheBackendTest.InvalidEntryEnumeration
DiskCacheBackendTest.NewEvictionInvalidEntry
DiskCacheBackendTest.NewEvictionInvalidEntryRead
DiskCacheBackendTest.NewEvictionInvalidEntryWithLoad
DiskCacheBackendTest.NewEvictionTrimInvalidEntry
DiskCacheBackendTest.NewEvictionTrimInvalidEntry2
DiskCacheBackendTest.NewEvictionInvalidEntryEnumeration

@ -1,20 +0,0 @@
DirectoryLister::ThreadFunc(void *) [net_unittests.exe]
Alloc Location
...
net/base/directory_lister.cc net::DirectoryLister::ThreadFunc(void *)
...
DirectoryListerTest_BigDirTest_Test::TestBody(void) [net_unittests.exe]
Alloc Location
...
net/base/directory_lister_unittest.cc DirectoryListerTest_BigDirTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
std::_W::_Allocate(unsigned int,wchar_t *) [net_unittests.exe]
Alloc Location
...
net/base/directory_lister.cc net::DirectoryLister::DirectoryLister(class std::basic_string const &,class DirectoryLister::DirectoryLister::Delegate *)
net/base/directory_lister_unittest.cc DirectoryListerTest_BigDirTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,7 +0,0 @@
WideCharToMultiByte: Invalid size (0x27) for destination buffer.
Error Location
...
net/url_request/url_request_unittest.cc URLRequestTest_ResolveShortcutTest_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,8 +0,0 @@
UnmapViewOfFile(0x47d0000) arg #1 (lpBaseAddress) not within a mapped view.
Error Location
...
base/file_util.cc file_util::Delete(class std::basic_string const &,bool)
net/disk_cache/backend_impl.cc CleanupTask::Run(void)
base/message_loop.cc MessageLoop::RunTask(Task *)
^^^

@ -1,50 +0,0 @@
Uninitialized memory read in WriteFileEx
Error Location
...
net/disk_cache/file.cc disk_cache::File::AsyncWrite(void const*,UINT,UINT,bool,FileIOCallback::disk_cache *,bool *)
net/disk_cache/file.cc disk_cache::File::Write(void const*,UINT,UINT,FileIOCallback::disk_cache *,bool *)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::Flush(int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::~EntryImpl(void)
chrome/release/net_unittests.exe disk_cache::EntryImpl::`vector deleting destructor'(UINT)
base/ref_counted.h base::RefCounted::Release(void)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::Close(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest::GrowData(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest_GrowData_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::MoveToLocalBuffer(int)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::GrowUserBuffer(int,int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::PrepareTarget(int,int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::WriteData(int,int,char const*,int,CallbackRunner *,bool)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest::GrowData(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest_GrowData_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Uninitialized memory read in WriteFileEx
Error Location
...
net/disk_cache/file.cc disk_cache::File::AsyncWrite(void const*,UINT,UINT,bool,FileIOCallback::disk_cache *,bool *)
net/disk_cache/file.cc disk_cache::File::Write(void const*,UINT,UINT,FileIOCallback::disk_cache *,bool *)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::Flush(int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::~EntryImpl(void)
chrome/release/net_unittests.exe disk_cache::EntryImpl::`scalar deleting destructor'(UINT)
base/ref_counted.h base::RefCounted::Release(void)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::Close(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest::GrowData(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest_GrowData_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
Alloc Location
...
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::MoveToLocalBuffer(int)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::GrowUserBuffer(int,int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::PrepareTarget(int,int,int,bool)
net/disk_cache/entry_impl.cc disk_cache::EntryImpl::WriteData(int,int,char const*,int,CallbackRunner *,bool)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest::GrowData(void)
net/disk_cache/entry_unittest.cc DiskCacheEntryTest_GrowData_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,523 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# chrome_tests.py
''' Runs various chrome tests through purify_test.py
'''
import glob
import logging
import optparse
import os
import stat
import sys
import google.logging_utils
import google.path_utils
import google.platform_utils
import common
class TestNotFound(Exception): pass
class ChromeTests:
def __init__(self, options, args, test):
# the known list of tests
self._test_list = {"test_shell": self.TestTestShell,
"unit": self.TestUnit,
"net": self.TestNet,
"ipc": self.TestIpc,
"base": self.TestBase,
"layout": self.TestLayout,
"dll": self.TestDll,
"layout_all": self.TestLayoutAll,
"ui": self.TestUI,
"v8": self.TestV8}
if test not in self._test_list:
raise TestNotFound("Unknown test: %s" % test)
# Make sure tests running under purify are using the
# normal memory allocator instead of tcmalloc.
os.environ["CHROME_ALLOCATOR"] = "winheap"
self._options = options
self._args = args
self._test = test
script_dir = google.path_utils.ScriptDir()
utility = google.platform_utils.PlatformUtility(script_dir)
# Compute the top of the tree (the "source dir") from the script dir (where
# this script lives). We assume that the script dir is in tools/purify
# relative to the top of the tree.
self._source_dir = os.path.dirname(os.path.dirname(script_dir))
# since this path is used for string matching, make sure it's always
# an absolute Windows-style path
self._source_dir = utility.GetAbsolutePath(self._source_dir)
self._report_dir = options.report_dir
if not self._report_dir:
if not options.buildbot:
self._report_dir = os.path.join(script_dir, "latest", test)
else:
# On the buildbot, we archive to a specific location on chrome-web
# with a directory based on the test name and the current svn revision.
# NOTE: These modules are located in trunk/tools/buildbot, which is not
# in the default config. You'll need to check this out and add
# scripts/* to your PYTHONPATH to test outside of the buildbot.
import slave_utils
import chromium_config
chrome_web_dir = chromium_config.Archive.purify_test_result_archive
current_version = str(slave_utils.SubversionRevision(self._source_dir))
# This line is how the buildbot master figures out our directory.
print "last change:", current_version
self._report_dir = os.path.join(chrome_web_dir, test, current_version)
if not os.path.exists(self._report_dir):
os.makedirs(self._report_dir)
purify_test = os.path.join(script_dir, "purify_test.py")
self._command_preamble = ["python.exe", purify_test, "--echo_to_stdout",
"--source_dir=%s" % (self._source_dir),
"--save_cache"]
def FindBuildDir(self, target, module, exe):
module_dir = os.path.join(self._source_dir, module)
dir_chrome = os.path.join(self._source_dir, "chrome", target)
dir_module = os.path.join(module_dir, target)
if not os.path.isdir(dir_chrome) and not os.path.isdir(dir_module):
return None
if exe:
exe_chrome = os.path.join(dir_chrome, exe)
exe_module = os.path.join(dir_module, exe)
if not os.path.isfile(exe_chrome) and not os.path.isfile(exe_module):
return None
if os.path.isfile(exe_chrome) and not os.path.isfile(exe_module):
return dir_chrome
elif os.path.isfile(exe_module) and not os.path.isfile(exe_chrome):
return dir_module
elif (os.stat(exe_module)[stat.ST_MTIME] >
os.stat(exe_chrome)[stat.ST_MTIME]):
return dir_module
else:
return dir_chrome
else:
if os.path.isdir(dir_chrome) and not os.path.isdir(dir_module):
return dir_chrome
elif os.path.isdir(dir_module) and not os.path.isdir(dir_chrome):
return dir_module
elif (os.stat(dir_module)[stat.ST_MTIME] >
os.stat(dir_chrome)[stat.ST_MTIME]):
return dir_module
else:
return dir_chrome
def ComputeBuildDir(self, module, exe=None):
''' Computes the build dir for the given module / exe '''
if self._options.build_dir:
self._build_dir = self._options.build_dir
return self._build_dir
# Use whatever build dir matches and was built most recently. We prefer
# the 'Purify' build dir, so warn in other cases.
dirs = []
dir = self.FindBuildDir("Purify", module, exe)
if dir:
dirs.append(dir)
dir = self.FindBuildDir("Release", module, exe)
if dir:
dirs.append(dir)
dir = self.FindBuildDir("Debug", module, exe)
if dir:
dirs.append(dir)
while True:
if len(dirs) == 0:
raise Exception("Can't find appropriate build dir")
if len(dirs) == 1:
self._build_dir = dirs[0]
if self._build_dir.endswith("Debug"):
logging.warning("Using Debug build. "
"This is not recommended under Purify.")
elif self._build_dir.endswith("Release"):
logging.warning("Using Release build. "
"Consider building the 'Purify' target instead since "
"you don't need to worry about setting a magic "
"environment variable for it to behave correctly.")
return self._build_dir
if os.stat(dirs[0])[stat.ST_MTIME] > os.stat(dirs[1])[stat.ST_MTIME]:
dirs.remove(dirs[0])
else:
dirs.remove(dirs[1])
def _DefaultCommand(self, module, exe=None):
'''Generates the default command array that most tests will use.'''
module_dir = os.path.join(self._source_dir, module)
if module == "chrome":
# unfortunately, not all modules have the same directory structure
self._data_dir = os.path.join(module_dir, "test", "data", "purify")
else:
self._data_dir = os.path.join(module_dir, "data", "purify")
cmd = list(self._command_preamble)
cmd.append("--data_dir=%s" % self._data_dir)
cmd.append("--report_dir=%s" % self._report_dir)
if self._options.baseline:
cmd.append("--baseline")
if self._options.verbose:
cmd.append("--verbose")
# Recompute _build_dir since the module and exe might have changed from
# a previous call (we might be running multiple tests).
self.ComputeBuildDir(module, exe);
if exe:
cmd.append(os.path.join(self._build_dir, exe))
return cmd
def Run(self):
''' Runs the test specified by command-line argument --test '''
logging.info("running test %s" % (self._test))
return self._test_list[self._test]()
def _ReadGtestFilterFile(self, name, cmd):
'''Read a file which is a list of tests to filter out with --gtest_filter
and append the command-line option to cmd.
'''
filters = []
filename = os.path.join(self._data_dir, name + ".gtest.txt")
if os.path.exists(filename):
logging.info("using gtest filter from %s" % filename)
f = open(filename, 'r')
for line in f.readlines():
if line.startswith("#") or line.startswith("//") or line.isspace():
continue
line = line.rstrip()
filters.append(line)
gtest_filter = self._options.gtest_filter
if len(filters):
if gtest_filter:
gtest_filter += ":"
if gtest_filter.find("-") < 0:
gtest_filter += "-"
else:
gtest_filter = "-"
gtest_filter += ":".join(filters)
if gtest_filter:
cmd.append("--gtest_filter=%s" % gtest_filter)
def SimpleTest(self, module, name, total_shards=None):
cmd = self._DefaultCommand(module, name)
exe = cmd[-1]
current_path = os.path.dirname(sys.argv[0])
# TODO(nsylvain): Add a flag to disable this.
if total_shards:
script = ["python.exe",
os.path.join(current_path, "sharded_test_runner.py"), exe,
str(total_shards)]
return self.ScriptedTest(module, name, name, script, multi=True)
elif self._options.run_singly:
script = ["python.exe",
os.path.join(current_path, "test_runner.py"), exe]
return self.ScriptedTest(module, name, name, script, multi=True)
else:
self._ReadGtestFilterFile(name, cmd)
cmd.append("--gtest_print_time")
return common.RunSubprocess(cmd, 0)
def ScriptedTest(self, module, exe, name, script, multi=False, cmd_args=None,
out_dir_extra=None):
'''Purify a target exe, which will be executed one or more times via a
script or driver program.
Args:
module - which top level component this test is from (webkit, base, etc.)
exe - the name of the exe (it's assumed to exist in build_dir)
name - the name of this test (used to name output files)
script - the driver program or script. If it's python.exe, we use
search-path behavior to execute, otherwise we assume that it is in
build_dir.
multi - a boolean hint that the exe will be run multiple times, generating
multiple output files (without this option, only the last run will be
recorded and analyzed)
cmd_args - extra arguments to pass to the purify_test.py script
'''
if out_dir_extra:
self._report_dir = os.path.join(self._report_dir, out_dir_extra)
cmd = self._DefaultCommand(module)
exe = os.path.join(self._options.build_dir, exe)
cmd.append("--exe=%s" % exe)
cmd.append("--name=%s" % name)
if multi:
if out_dir_extra:
if os.path.exists(self._report_dir):
old_files = glob.glob(os.path.join(self._report_dir, "*.txt"))
for f in old_files:
os.remove(f)
else:
os.makedirs(self._report_dir)
out_file = os.path.join(self._report_dir, "%s%%5d.txt" % name)
cmd.append("--out_file=%s" % out_file)
if cmd_args:
cmd.extend(cmd_args)
if script[0] != "python.exe" and not os.path.exists(script[0]):
script[0] = os.path.join(self._options.build_dir, script[0])
cmd.extend(script)
self._ReadGtestFilterFile(name, cmd)
return common.RunSubprocess(cmd, 0)
def InstrumentDll(self):
'''Does a blocking Purify instrumentation of chrome.dll.'''
# TODO(paulg): Make this code support any DLL.
cmd = self._DefaultCommand("chrome")
cmd.append("--instrument_only")
cmd.append(os.path.join(self._options.build_dir, "chrome.dll"))
result = common.RunSubprocess(cmd, 0)
if result:
logging.error("Instrumentation error: %d" % result)
return result
def TestDll(self):
return self.InstrumentDll()
def TestBase(self):
return self.SimpleTest("base", "base_unittests.exe")
def TestIpc(self):
return self.SimpleTest("chrome", "ipc_tests.exe")
def TestNet(self):
return self.SimpleTest("net", "net_unittests.exe")
def TestTestShell(self):
return self.SimpleTest("webkit", "test_shell_tests.exe")
def TestUnit(self):
return self.SimpleTest("chrome", "unit_tests.exe", total_shards=5)
def TestLayoutAll(self):
return self.TestLayout(run_all=True)
def TestLayout(self, run_all=False):
# A "chunk file" is maintained in the local directory so that each test
# runs a slice of the layout tests of size chunk_size that increments with
# each run. Since tests can be added and removed from the layout tests at
# any time, this is not going to give exact coverage, but it will allow us
# to continuously run small slices of the layout tests under purify rather
# than having to run all of them in one shot.
chunk_num = 0
# Tests currently seem to take about 20-30s each.
chunk_size = 120 # so about 40-60 minutes per run
chunk_file = os.path.join(os.environ["TEMP"], "purify_layout_chunk.txt")
if not run_all:
try:
f = open(chunk_file)
if f:
str = f.read()
if len(str):
chunk_num = int(str)
# This should be enough so that we have a couple of complete runs
# of test data stored in the archive (although note that when we loop
# that we almost guaranteed won't be at the end of the test list)
if chunk_num > 10000:
chunk_num = 0
f.close()
except IOError, (errno, strerror):
logging.error("error reading from file %s (%d, %s)" % (chunk_file,
errno, strerror))
script = os.path.join(self._source_dir, "webkit", "tools", "layout_tests",
"run_webkit_tests.py")
script_cmd = ["python.exe", script, "--run-singly", "-v",
"--noshow-results", "--time-out-ms=200000",
"--nocheck-sys-deps"]
if len(self._args):
# if the arg is a txt file, then treat it as a list of tests
if os.path.isfile(self._args[0]) and self._args[0][-4:] == ".txt":
script_cmd.append("--test-list=%s" % self._args[0])
else:
script_cmd.extend(self._args)
if run_all:
ret = self.ScriptedTest("webkit", "test_shell.exe", "layout",
script_cmd, multi=True, cmd_args=["--timeout=0"])
return ret
# Store each chunk in its own directory so that we can find the data later.
chunk_dir = os.path.join("chunk_%05d" % chunk_num)
script_cmd.append("--run-chunk=%d:%d" % (chunk_num, chunk_size))
# Put the layout test results in the chunk dir as well.
script_cmd.append("--results-dir=%s" % os.path.join(self._report_dir,
chunk_dir));
ret = self.ScriptedTest("webkit", "test_shell.exe", "layout",
script_cmd, multi=True, cmd_args=["--timeout=0"],
out_dir_extra=chunk_dir)
# Wait until after the test runs to completion to write out the new chunk
# number. This way, if the bot is killed, we'll start running again from
# the current chunk rather than skipping it.
try:
f = open(chunk_file, "w")
chunk_num += 1
f.write("%d" % chunk_num)
f.close()
except IOError, (errno, strerror):
logging.error("error writing to file %s (%d, %s)" % (chunk_file, errno,
strerror))
# Since we're running small chunks of the layout tests, it's important to
# mark the ones that have errors in them. These won't be visible in the
# summary list for long, but will be useful for someone reviewing this bot.
#return ret
# For now, since a fair number of layout tests are still red, we'll use the
# magic orange indicator return code to avoid making the tree look red when
# nothing has changed. When We get the layout tests into a stable green,
# this code should be undone.
# BUG=7516
if ret:
return 88
return 0
def TestUIAll(self):
if not self._options.no_reinstrument:
instrumentation_error = self.InstrumentDll()
if instrumentation_error:
return instrumentation_error
return self.ScriptedTest("chrome", "chrome.exe", "ui_tests",
["ui_tests.exe",
"--single-process",
"--ui-test-timeout=180000",
"--ui-test-action-timeout=80000",
"--ui-test-action-max-timeout=180000",
"--ui-test-sleep-timeout=40000"],
multi=True)
def TestUI(self):
# If --gtest_filter is set, then we need to ignore the batch index.
if self._options.gtest_filter:
return self.TestUIAll()
# Similar to layout test, we run a slice of UI tests with each run.
# This is achieved by using --batch-count (total number of slices) and
# --batch-index (current slice index) command line switches of UI tests.
# A "batch index file" is maintained in the local directory so that each
# test runs the kth slice of UI tests and increments k for next run.
# Note: a full cycle of UI tests is finished in batch_count runs.
# If new test cases are added in the middle of a cycle, some tests
# may get skipped in the current cycle. For more discussion on this issue,
# see http://codereview.chromium.org/149600.
# Break UI tests into 16 slices so we have about 30-40 minutes per run.
batch_count = 16
batch_index = 0
batch_index_file = os.path.join(os.environ["TEMP"],
"purify_ui_batch_index.txt")
try:
f = open(batch_index_file)
if f:
str = f.read()
if len(str):
batch_index = int(str)
if batch_index >= batch_count:
batch_index = 0
f.close()
except IOError, (errno, strerror):
logging.error("error reading from file %s (%d, %s)" % (batch_index_file,
errno, strerror))
script_cmd = ["ui_tests.exe", "--single-process",
"--ui-test-timeout=180000",
"--ui-test-action-timeout=80000",
"--ui-test-action-max-timeout=180000",
"--ui-test-sleep-timeout=40000",
"--batch-count=%s" % batch_count,
"--batch-index=%s" % batch_index]
ret = self.ScriptedTest("chrome", "chrome.exe", "ui_tests",
script_cmd, multi=True)
# Wait until after the test runs to completion to write out the new batch
# index. This way, if the bot is killed, we'll start running again from
# the current chunk rather than skipping it.
try:
f = open(batch_index_file, "w")
batch_index += 1
if batch_index == batch_count:
batch_index = 0
f.write("%d" % batch_index)
f.close()
except IOError, (errno, strerror):
logging.error("error writing to file %s (%d, %s)" % (batch_index_file,
errno, strerror))
# As we just started to run full pass UI test under purify, there are a
# fair number of test errors.
if ret:
return 88
return 0
def TestV8(self):
shell = "v8_shell.exe"
# We need to compute _build_dir early to in order to pass in the
# shell path as an argument to the test script.
self.ComputeBuildDir("chrome", shell)
script = os.path.join(self._source_dir, "v8", "tools", "test.py")
shell_path = os.path.join(self._options.build_dir, shell)
return self.ScriptedTest("chrome", shell, "v8",
["python.exe",
script,
"--no-build",
"--progress=dots",
"--shell=" + shell_path],
multi = True)
def _main(argv):
parser = optparse.OptionParser("usage: %prog -b <dir> -t <test> "
"[-t <test> ...]")
parser.disable_interspersed_args()
parser.add_option("-b", "--build_dir",
help="the location of the output of the compiler output")
parser.add_option("-t", "--test", action="append",
help="which test to run")
parser.add_option("", "--baseline", action="store_true", default=False,
help="generate baseline data instead of validating")
parser.add_option("", "--gtest_filter",
help="additional arguments to --gtest_filter")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="verbose output - enable debug log messages")
parser.add_option("", "--no-reinstrument", action="store_true", default=False,
help="Don't force a re-instrumentation for ui_tests")
parser.add_option("", "--run-singly", action="store_true", default=False,
help="run tests independently of each other so that they "
"don't interfere with each other and so that errors "
"can be accurately attributed to their source");
parser.add_option("", "--report_dir",
help="path where report files are saved")
parser.add_option("", "--buildbot", action="store_true", default=False,
help="whether we're being run in a buildbot environment")
options, args = parser.parse_args()
if options.verbose:
google.logging_utils.config_root(logging.DEBUG)
else:
google.logging_utils.config_root()
if not options.test or not len(options.test):
parser.error("--test not specified")
for t in options.test:
tests = ChromeTests(options, args, t)
ret = tests.Run()
if ret: return ret
return 0
if __name__ == "__main__":
ret = _main(sys.argv)
sys.exit(ret)

@ -1,13 +0,0 @@
#!/bin/sh
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
system_root=`cygpath "$SYSTEMROOT"`
export PATH="/usr/bin:$system_root/system32:$system_root:$system_root/system32/WBEM"
exec_dir=$(dirname $0)
"$exec_dir/../../third_party/python_24/python.exe" \
"$exec_dir/chrome_tests.py" "$@"

@ -1,344 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# common.py
""" Common code used by purify_test.py and quantify_test.py in order to automate
running of Rational Purify and Quantify in a consistent manner.
"""
# Purify and Quantify have a front-end (e.g. quantifyw.exe) which talks to a
# back-end engine (e.g. quantifye.exe). The back-end seems to handle
# instrumentation, while the front-end controls program execution and
# measurement. The front-end will dynamically launch the back-end if
# instrumentation is needed (sometimes in the middle of a run if a dll is
# loaded dynamically).
# In an ideal world, this script would simply execute the front-end and check
# the output. However, purify is not the most reliable or well-documented app
# on the planet, and my attempts to get it to run this way led to the back-end
# engine hanging during instrumentation. The workaround to this was to run two
# passes, first running the engine to do instrumentation rather than letting
# the front-end do it for you, then running the front-end to actually do the
# run. Each time through we're deleting all of the instrumented files in the
# cache to ensure that we're testing that instrumentation works from scratch.
# (although this can be changed with an option)
import datetime
import logging
import optparse
import os
import signal
import subprocess
import sys
import tempfile
import time
import google.logging_utils
# hard-coded location of Rational files and directories
PROGRAMFILES_PATH = os.environ.get('PROGRAMFILES',
os.path.join("C:\\", "Program Files"))
RATIONAL_PATH = os.path.join(PROGRAMFILES_PATH, "Rational")
COMMON_PATH = os.path.join(RATIONAL_PATH, "common")
PPLUS_PATH = os.path.join(RATIONAL_PATH, "PurifyPlus")
PURIFY_PATH = os.path.join(COMMON_PATH, "purify.exe")
PURIFYW_PATH = os.path.join(PPLUS_PATH, "purifyW.exe")
PURIFYE_PATH = os.path.join(PPLUS_PATH, "purifye.exe")
QUANTIFYE_PATH = os.path.join(PPLUS_PATH, "quantifye.exe")
QUANTIFYW_PATH = os.path.join(PPLUS_PATH, "quantifyw.exe")
class TimeoutError(Exception): pass
def _print_line(line, flush=True):
# Printing to a text file (including stdout) on Windows always winds up
# using \r\n automatically. On buildbot, this winds up being read by a master
# running on Linux, so we manually convert crlf to '\n'
print line.rstrip() + '\n',
if flush:
sys.stdout.flush()
def RunSubprocess(proc, timeout=0, detach=False):
""" Runs a subprocess, until it finishes or |timeout| is exceeded and the
process is killed with taskkill. A |timeout| <= 0 means no timeout.
Args:
proc: list of process components (exe + args)
timeout: how long to wait before killing, <= 0 means wait forever
detach: Whether to pass the DETACHED_PROCESS argument to CreateProcess
on Windows. This is used by Purify subprocesses on buildbot which
seem to get confused by the parent console that buildbot sets up.
"""
logging.info("running %s, timeout %d sec" % (" ".join(proc), timeout))
if detach:
# see MSDN docs for "Process Creation Flags"
DETACHED_PROCESS = 0x8
p = subprocess.Popen(proc, creationflags=DETACHED_PROCESS)
else:
# For non-detached processes, manually read and print out stdout and stderr.
# By default, the subprocess is supposed to inherit these from its parent,
# however when run under buildbot, it seems unable to read data from a
# grandchild process, so we have to read the child and print the data as if
# it came from us for buildbot to read it. We're not sure why this is
# necessary.
# TODO(erikkay): should we buffer stderr and stdout separately?
p = subprocess.Popen(proc, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
logging.info("started subprocess")
# How long to wait (in seconds) before printing progress log messages.
progress_delay = 300
progress_delay_time = time.time() + progress_delay
did_timeout = False
if timeout > 0:
wait_until = time.time() + timeout
while p.poll() is None and not did_timeout:
if not detach:
line = p.stdout.readline()
while line and not did_timeout:
_print_line(line)
line = p.stdout.readline()
if timeout > 0:
did_timeout = time.time() > wait_until
else:
# When we detach, blocking on reading stdout doesn't work, so we sleep
# a short time and poll.
time.sleep(0.5)
if time.time() >= progress_delay_time:
# Force output on a periodic basis to avoid getting killed off by the
# buildbot.
# TODO(erikkay): I'd prefer a less obtrusive 'print ".",' with a flush
# but because of how we're doing subprocesses, this doesn't appear to
# work reliably.
logging.info("%s still running..." % os.path.basename(proc[0]))
progress_delay_time = time.time() + progress_delay
if timeout > 0:
did_timeout = time.time() > wait_until
if did_timeout:
logging.info("process timed out")
else:
logging.info("process ended, did not time out")
if did_timeout:
if sys.platform == "win32":
subprocess.call(["taskkill", "/T", "/F", "/PID", str(p.pid)])
else:
# Does this kill all children, too?
os.kill(p.pid, signal.SIGINT)
logging.error("KILLED %d" % p.pid)
# Give the process a chance to actually die before continuing
# so that cleanup can happen safely.
time.sleep(1.0)
logging.error("TIMEOUT waiting for %s" % proc[0])
raise TimeoutError(proc[0])
elif not detach:
for line in p.stdout.readlines():
_print_line(line, False)
if sys.platform != 'darwin': # stdout flush fails on Mac
logging.info("flushing stdout")
p.stdout.flush()
logging.info("collecting result code")
result = p.poll()
if result:
logging.error("%s exited with non-zero result code %d" % (proc[0], result))
return result
def FixPath(path):
"""We pass computed paths to Rational as arguments, so these paths must be
valid windows paths. When running in cygwin's python, computed paths
wind up looking like /cygdrive/c/..., so we need to call out to cygpath
to fix them up.
"""
if sys.platform != "cygwin":
return path
p = subprocess.Popen(["cygpath", "-a", "-m", path], stdout=subprocess.PIPE)
return p.communicate()[0].rstrip()
class Rational(object):
''' Common superclass for Purify and Quantify automation objects. Handles
common argument parsing as well as the general program flow of Instrument,
Execute, Analyze.
'''
def __init__(self):
google.logging_utils.config_root()
self._out_file = None
def Run(self):
'''Call this to run through the whole process:
Setup, Instrument, Execute, Analyze'''
start = datetime.datetime.now()
retcode = -1
if self.Setup():
retcode = self._Run()
self.Cleanup()
else:
logging.error("Setup failed")
end = datetime.datetime.now()
seconds = (end - start).seconds
hours = seconds / 3600
seconds = seconds % 3600
minutes = seconds / 60
seconds = seconds % 60
logging.info("elapsed time: %02d:%02d:%02d" % (hours, minutes, seconds))
return retcode
def _Run(self):
retcode = -1
if not self.Instrument():
logging.error("Instrumentation failed.")
return retcode
if self._instrument_only:
logging.info("Instrumentation completed successfully.")
return 0
if not self.Execute():
logging.error("Execute failed.")
return
retcode = self.Analyze()
if retcode:
logging.error("Analyze failed.")
return retcode
logging.info("Instrumentation and execution completed successfully.")
return 0
def CreateOptionParser(self):
'''Creates OptionParser with shared arguments. Overridden by subclassers
to add custom arguments.'''
parser = optparse.OptionParser("usage: %prog [options] <program to test>")
# since the trailing program likely has command-line args of itself
# we need to stop parsing when we reach the first positional arg
parser.disable_interspersed_args()
parser.add_option("-o", "--out_file", dest="out_file", metavar="OUTFILE",
default="",
help="output data is written to OUTFILE")
parser.add_option("-s", "--save_cache",
dest="save_cache", action="store_true", default=False,
help="don't delete instrumentation cache")
parser.add_option("-c", "--cache_dir", dest="cache_dir", metavar="CACHEDIR",
default="",
help="location of instrumentation cache is CACHEDIR")
parser.add_option("-m", "--manual",
dest="manual_run", action="store_true", default=False,
help="target app is being run manually, don't timeout")
parser.add_option("-t", "--timeout",
dest="timeout", metavar="TIMEOUT", default=10000,
help="timeout in seconds for the run (default 10000)")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="verbose output - enable debug log messages")
parser.add_option("", "--instrument_only", action="store_true",
default=False,
help="Only instrument the target without running")
self._parser = parser
def Setup(self):
if self.ParseArgv():
logging.info("instrumentation cache in %s" % self._cache_dir)
logging.info("output saving to %s" % self._out_file)
# Ensure that Rational's common dir and cache dir are in the front of the
# path. The common dir is required for purify to run in any case, and
# the cache_dir is required when using the /Replace=yes option.
os.environ["PATH"] = (COMMON_PATH + ";" + self._cache_dir + ";" +
os.environ["PATH"])
# clear the cache to make sure we're starting clean
self.__ClearInstrumentationCache()
return True
return False
def Instrument(self, proc):
'''Instrument the app to be tested. Full instrumentation command-line
provided by subclassers via proc.'''
logging.info("starting instrumentation...")
if RunSubprocess(proc, self._timeout, detach=True) == 0:
if "/Replace=yes" in proc:
if os.path.exists(self._exe + ".Original"):
return True
elif self._instrument_only:
# TODO(paulg): Catch instrumentation errors and clean up properly.
return True
elif os.path.isdir(self._cache_dir):
for cfile in os.listdir(self._cache_dir):
# TODO(erikkay): look for the actual munged purify filename
ext = os.path.splitext(cfile)[1]
if ext == ".exe":
return True
logging.error("no instrumentation data generated")
return False
def Execute(self, proc):
''' Execute the app to be tested after successful instrumentation.
Full execution command-line provided by subclassers via proc.'''
logging.info("starting execution...")
# note that self._args begins with the exe to be run
proc += self._args
if RunSubprocess(proc, self._timeout) == 0:
return True
return False
def Analyze(self):
'''Analyze step after a successful Execution. Should be overridden
by the subclasser if instrumentation is desired.
Returns 0 for success, 88 for warning (see ReturnCodeCommand) and anything
else for error
'''
return -1
def ParseArgv(self):
'''Parses arguments according to CreateOptionParser
Subclassers must override if they have extra arguments.'''
self.CreateOptionParser()
self._options, self._args = self._parser.parse_args()
if self._options.verbose:
google.logging_utils.config_root(logging.DEBUG)
self._save_cache = self._options.save_cache
self._manual_run = self._options.manual_run
if self._manual_run:
logging.info("manual run - timeout disabled")
self._timeout = 0
else:
self._timeout = int(self._options.timeout)
logging.info("timeout set to %ds" % (self._timeout))
if self._save_cache:
logging.info("saving instrumentation cache")
if not self._options.cache_dir:
try:
temp_dir = os.environ["TEMP"]
except KeyError:
temp_dir = tempfile.mkdtemp()
self._cache_dir = os.path.join(FixPath(temp_dir),
"instrumentation_cache")
else:
self._cache_dir = FixPath(os.path.abspath(self._options.cache_dir))
if self._options.out_file:
self._out_file = FixPath(os.path.abspath(self._options.out_file))
if len(self._args) == 0:
self._parser.error("missing program to %s" % (self.__class__.__name__,))
return False
self._exe = self._args[0]
self._exe_dir = FixPath(os.path.abspath(os.path.dirname(self._exe)))
self._instrument_only = self._options.instrument_only
return True
def Cleanup(self):
# delete the cache to avoid filling up the hard drive when we're using
# temporary directory names
self.__ClearInstrumentationCache()
def __ClearInstrumentationCache(self):
if not self._save_cache:
logging.info("clearing instrumentation cache %s" % self._cache_dir)
if os.path.isdir(self._cache_dir):
for cfile in os.listdir(self._cache_dir):
file = os.path.join(self._cache_dir, cfile)
if os.path.isfile(file):
try:
os.remove(file)
except:
logging.warning("unable to delete file %s: %s" % (file,
sys.exc_info()[0]))

Binary file not shown.

@ -1,12 +0,0 @@
# See bug 1157381
Pure: Trap bits found in live chunk
# See bugs 1151263 and 1164562
Memory leak .+ allocated in InitSecurityInterfaceA \[SECUR32\.DLL\]
# See bug 1163766
# Ugly regexps are trying to deal with Purify's demangling bugs.
Memory leak .+ allocated in \?NewRunnableMethod.+ExpireHistoryBackend.+ScopedRunnableMethodFactory
Memory leak .+ allocated in RevocableStore::RevokeAll\(void\)
Memory leak .+ allocated in \?NewRunnableMethod.+CommitLaterTask.+CancelableTask.+CommitLaterTask
Memory leak .+ allocated in history::HistoryBackend::ScheduleCommit\(void\)

@ -1,939 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# purify_analyze.py
''' Given a Purify text file, parses messages, normalizes and uniques them.
If there's an existing baseline of this data, it can compare against that
baseline and return an error code if there are any new errors not in the
baseline. '''
import logging
import optparse
import os
import re
import sys
import google.logging_utils
import google.path_utils
import purify_message
class MemoryTreeNode(object):
''' A node in a tree representing stack traces of memory allocation.
Essentially, each node in the tree is a hashtable mapping a child
function name to a child node. Each node contains the total number
of bytes of all of its descendants.
See also: PurifyAnalyze.PrintMemoryInUse()
'''
pat_initializer = re.compile('(.*)\`dynamic initializer for \'(.*)\'\'')
@classmethod
def CreateTree(cls, message_list):
'''Creates a tree from message_list. All of the Message objects are built
into a tree with a default "ROOT" root node that is then returned.
Args:
message_list: a MessageList object.
'''
root = MemoryTreeNode("ROOT", 0, 0)
msgs = message_list.AllMessages()
for msg in msgs:
bytes = msg._bytes
blocks = msg._blocks
stack = msg.GetAllocStack()
stack_lines = stack.GetLines()
size = len(stack_lines)
node = root
node._AddAlloc(bytes, blocks)
counted = False
# process stack lines from the bottom up to build a call-stack tree
functions = [line["function"] for line in stack_lines]
functions.reverse()
for func in functions:
if node == root:
m = MemoryTreeNode.pat_initializer.match(func)
if m:
node = node._AddChild("INITIALIZERS", bytes, blocks)
func = m.group(1) + m.group(2)
# don't process ellided or truncated stack lines
if func:
node = node._AddChild(func, bytes, blocks)
counted = True
if not counted:
# Nodes with no stack frames in our code wind up not being counted
# above. These seem to be attributable to Windows DLL
# initialization, so just throw them into that bucket.
node._AddChild("WINDOWS", bytes, blocks)
return root
def __init__(self, function, bytes, blocks):
'''
Args:
function: A string representing a unique method or function.
bytes: initial number of bytes allocated in this node
blocks: initial number of blocks allocated in this node
'''
self._function = function
self._bytes = bytes
self._blocks = blocks
self._allocs = 1
self._children = {}
def _AddAlloc(self, bytes, blocks):
'''Adds bytes and blocks to this node's allocation totals
'''
self._allocs += 1
self._bytes += bytes
self._blocks += blocks
def _AddChild(self, function, bytes, blocks):
'''Adds a child node if not present. Otherwise, adds
bytes and blocks to it's allocation total.
'''
if function not in self._children:
self._children[function] = MemoryTreeNode(function, bytes, blocks)
else:
self._children[function]._AddAlloc(bytes, blocks)
return self._children[function]
def __cmp__(self, other):
# sort by size, then blocks, then function name
return cmp((self._bytes, self._blocks, self._function),
(other._bytes, other._blocks, other._function))
def __str__(self):
return "(%d bytes, %d blocks, %d allocs) %s" % (
self._bytes, self._blocks, self._allocs, self._function)
def PrintRecursive(self, padding="", byte_filter=0):
'''Print the tree and all of its children recursively (depth-first). All
nodes at a given level of the tree are sorted in descending order by size.
Args:
padding: Printed at the front of the line. Each recursive call adds a
single space character.
byte_filter: a number of bytes below which we'll prune the tree
'''
print "%s%s" % (padding, self)
padding = padding + " "
# sort the children in descending order (see __cmp__)
swapped = self._children.values()
swapped.sort(reverse=True)
rest_bytes = 0
rest_blocks = 0
rest_allocs = 0
for node in swapped:
if node._bytes < byte_filter:
rest_bytes += node._bytes
rest_blocks += node._blocks
rest_allocs += node._allocs
else:
node.PrintRecursive(padding, byte_filter)
if rest_bytes:
print "%s(%d bytes, %d blocks, %d allocs) PRUNED" % (padding,
rest_bytes, rest_blocks, rest_allocs)
class PurifyAnalyze:
''' Given a Purify text file, parses all of the messages inside of it and
normalizes them. Provides a mechanism for comparing this normalized set
against a baseline and detecting if new errors have been introduced. '''
# a line which is the start of a new message
pat_msg_start = re.compile('^\[([A-Z])\] (.*)$')
# a message with a specific type
pat_msg_type = re.compile('^([A-Z]{3}): (.*)$')
pat_leak_summary = re.compile("Summary of ... memory leaks")
pat_miu_summary = re.compile("Summary of ... memory in use")
pat_starting = re.compile("Starting Purify'd ([^\\s]+\\\\[^\\s]+)")
pat_arguments = re.compile("\s+Command line arguments:\s+([^\s].*)")
pat_terminate = re.compile('Message: TerminateProcess called with code')
# Purify treats this as a warning, but for us it's a fatal error.
pat_instrumentation_failed = re.compile('^.* file not instrumented')
# misc to ignore
pat_ignore = (re.compile('^(Start|Exit)ing'),
re.compile('^Program terminated'),
re.compile('^Terminating thread'),
re.compile('^Message: CryptVerifySignature'))
# message types that aren't analyzed
# handled, ignored and continued exceptions will likely never be interesting
# TODO(erikkay): MPK ("potential" memory leaks) may be worth turning on
types_excluded = ("EXH", "EXI", "EXC", "MPK")
def __init__(self, files, echo, name=None, source_dir=None, data_dir=None,
report_dir=None):
# The input file we're analyzing.
self._files = files
# Whether the input file contents should be echoed to stdout.
self._echo = echo
# A symbolic name for the run being analyzed, often the name of the
# exe which was purified.
self._name = name
# The top of the source code tree of the code we're analyzing.
# This prefix is stripped from all filenames in stacks for normalization.
if source_dir:
purify_message.Stack.SetSourceDir(source_dir)
script_dir = google.path_utils.ScriptDir()
if data_dir:
self._data_dir = data_dir
self._global_data_dir = os.path.join(script_dir, "data")
else:
self._data_dir = os.path.join(script_dir, "data")
self._global_data_dir = None
if report_dir:
self._report_dir = report_dir
else:
self._report_dir = os.path.join(script_dir, "latest")
# A map of message_type to a MessageList of that type.
self._message_lists = {}
self._ReadIgnoreFile()
def _ReadIgnoreFile(self):
'''Read a file which is a list of regexps for either the title or the
top-most visible stack line.
'''
self._pat_ignore = []
filenames = [os.path.join(self._data_dir, "ignore.txt")]
if self._global_data_dir:
filenames.append(os.path.join(self._global_data_dir, "ignore.txt"))
for filename in filenames:
if os.path.exists(filename):
f = open(filename, 'r')
for line in f.readlines():
if line.startswith("#") or line.startswith("//") or line.isspace():
continue
line = line.rstrip()
pat = re.compile(line)
if pat:
self._pat_ignore.append(pat)
def ShouldIgnore(self, msg):
'''Should the message be ignored as irrelevant to analysis '''
# never ignore memory in use
if msg.Type() == "MIU":
return False
# check ignore patterns against title and top-most visible stack frames
strings = [msg._title]
err = msg.GetErrorStack()
if err:
line = err.GetTopVisibleStackLine().get('function', None)
if line:
strings.append(line)
alloc = msg.GetAllocStack()
if alloc:
line = alloc.GetTopVisibleStackLine().get('function', None)
if line:
strings.append(line)
for pat in self._pat_ignore:
for str in strings:
if pat.match(str):
logging.debug("Igorning message based on ignore.txt")
logging.debug(msg.NormalizedStr(verbose=True))
return True
# unless it's explicitly in the ignore file, never ignore these
if msg.Type() == purify_message.FATAL:
return False
# certain message types aren't that interesting
if msg.Type() in PurifyAnalyze.types_excluded:
logging.debug("Igorning message because type is excluded")
logging.debug(msg.NormalizedStr(verbose=True))
return True
# if the message stacks have no local stack frames, we can ignore them
if msg.StacksAllExternal():
logging.debug("Igorning message because stacks are all external")
logging.debug(msg.NormalizedStr(verbose=True))
return True
# Microsoft's STL has a bunch of non-harmful UMRs in it. Most of them
# are filtered out by Purify's default filters and by our explicit ignore
# list. This code notices ones that have made it through so we can add
# them to the ignore list later.
if msg.Type() == "UMR":
if err.GetTopStackLine()['file'].endswith('.'):
logging.debug("non-ignored UMR in STL: %s" % msg._title)
return False
def AddMessage(self, msg):
''' Append the message to an array for its type. Returns boolean indicating
whether the message was actually added or was ignored.'''
if msg:
if self.ShouldIgnore(msg):
return False
if msg.Type() not in self._message_lists:
self._message_lists[msg.Type()] = purify_message.MessageList(msg.Type())
self._message_lists[msg.Type()].AddMessage(msg)
return True
return False
def _BeginNewSublist(self, key):
'''See MessageList.BeginNewSublist for details.
'''
if key in self._message_lists:
self._message_lists[key].BeginNewSublist()
def ReadFile(self):
''' Reads a Purify ASCII file and parses and normalizes the messages in
the file.
Returns False if a fatal error was detected, True otherwise.
'''
# Purify files consist of a series of "messages". These messages have a type
# (designated as a three letter code - see message_type), a severity
# (designated by a one letter code - see message_severity) and some
# textual details. It will often also have a stack trace of the error
# location, and (for memory errors) may also have a stack trace of the
# allocation location.
fatal_errors = 0
fatal_exe = ""
for file in self._files:
exe = ""
error = None
message = None
for line in open(file, mode='rb'):
line = line.rstrip()
m = PurifyAnalyze.pat_msg_start.match(line)
if m:
if exe == fatal_exe:
# since we hit a fatal error in this program, ignore all messages
# until the program changes
continue
# we matched a new message, so if there's an existing one, it's time
# to finish processing it
if message:
message.SetProgram(exe)
if not self.AddMessage(message):
# error is only set if the message we just tried to add would
# otherwise be considered a fatal error. Since AddMessage failed
# (presumably the messages matched the ignore list), we reset
# error to None
error = None
message = None
if error:
if error.Type() == "EXU":
# Don't treat EXU as fatal, since unhandled exceptions
# in other threads don't necessarily lead to the app to exit.
# TODO(erikkay): verify that we still do trap exceptions that lead
# to early termination.
logging.warning(error.NormalizedStr(verbose=True))
error = None
else:
if len(self._files) > 1:
logging.error("Fatal error in program: %s" % error.Program())
logging.error(error.NormalizedStr(verbose=True))
fatal_errors += 1
error = None
fatal_exe = exe
continue
severity = m.group(1)
line = m.group(2)
m = PurifyAnalyze.pat_msg_type.match(line)
if m:
type = m.group(1)
message = purify_message.Message(severity, type, m.group(2))
if type == "EXU":
error = message
elif severity == "O":
message = purify_message.Message(severity, purify_message.FATAL,
line)
# This is an internal Purify error, and it means that this run can't
# be trusted and analysis should be aborted.
error = message
elif PurifyAnalyze.pat_instrumentation_failed.match(line):
message = purify_message.Message(severity, purify_message.FATAL,
line)
error = message
elif PurifyAnalyze.pat_terminate.match(line):
message = purify_message.Message(severity, purify_message.FATAL,
line)
error = message
elif PurifyAnalyze.pat_leak_summary.match(line):
# TODO(erikkay): should we do sublists for MLK and MPK too?
# Maybe that means we need to handle "new" and "all" messages
# separately.
#self._BeginNewSublist("MLK")
#self._BeginNewSublist("MPK")
pass
elif PurifyAnalyze.pat_miu_summary.match(line):
# Each time Purify is asked to do generate a list of all memory in use
# or new memory in use, it first emits this summary line. Since the
# different lists can overlap, we need to tell MessageList to begin
# a new sublist.
# TODO(erikkay): should we tag "new" and "all" sublists explicitly
# somehow?
self._BeginNewSublist("MIU")
elif PurifyAnalyze.pat_starting.match(line):
m = PurifyAnalyze.pat_starting.match(line)
exe = m.group(1)
last_slash = exe.rfind("\\")
if not purify_message.Stack.source_dir:
path = os.path.abspath(os.path.join(exe[:last_slash], "..", ".."))
purify_message.Stack.SetSourceDir(path)
if not self._name:
self._name = exe[(last_slash+1):]
else:
unknown = True
for pat in PurifyAnalyze.pat_ignore:
if pat.match(line):
unknown = False
break
if unknown:
logging.error("unknown line " + line)
else:
if message:
message.AddLine(line)
elif PurifyAnalyze.pat_arguments.match(line):
m = PurifyAnalyze.pat_arguments.match(line)
exe += " " + m.group(1)
# Purify output should never end with a real message
if message:
logging.error("Unexpected message at end of file %s" % file)
return fatal_errors == 0
def GetMessageList(self, key):
if key in self._message_lists:
return self._message_lists[key]
else:
return None
def Summary(self, echo=None, save=True):
''' Print a summary of how many messages of each type were found. '''
# make sure everyone else is done first
sys.stderr.flush()
sys.stdout.flush()
if echo == None:
echo = self._echo
if save:
filename = os.path.join(self._report_dir, "Summary.txt")
file = open(filename, "w")
else:
file = None
logging.info("summary of Purify messages:")
self._ReportFixableMessages()
for key in self._message_lists:
list = self._message_lists[key]
unique = list.UniqueMessages()
all = list.AllMessages()
count = 0
for msg in all:
count += msg._count
self._PrintAndSave("%s(%s) unique:%d total:%d" % (self._name,
purify_message.GetMessageType(key), len(unique), count), file)
if key not in ["MIU"]:
ignore_file = "%s_%s_ignore.txt" % (self._name, key)
ignore_hashes = self._MessageHashesFromFile(ignore_file)
ignored = 0
groups = list.UniqueMessageGroups()
group_keys = groups.keys()
group_keys.sort(cmp=lambda x,y: len(groups[y]) - len(groups[x]))
for group in group_keys:
# filter out ignored messages
kept_msgs= [x for x in groups[group] if hash(x) not in ignore_hashes]
ignored += len(groups[group]) - len(kept_msgs)
groups[group] = kept_msgs
if ignored:
self._PrintAndSave("%s(%s) ignored:%d" % (self._name,
purify_message.GetMessageType(key), ignored), file)
total = reduce(lambda x, y: x + len(groups[y]), group_keys, 0)
if total:
self._PrintAndSave("%s(%s) group summary:" % (self._name,
purify_message.GetMessageType(key)), file)
self._PrintAndSave(" TOTAL: %d" % total, file)
for group in group_keys:
if len(groups[group]):
self._PrintAndSave(" %s: %d" % (group, len(groups[group])),
file)
if echo:
for group in group_keys:
msgs = groups[group]
if len(msgs) == 0:
continue
self._PrintAndSave("messages from %s (%d)" % (group, len(msgs)),
file)
self._PrintAndSave("="*79, file)
for msg in msgs:
# for the summary output, line numbers are useful
self._PrintAndSave(msg.NormalizedStr(verbose=True), file)
# make sure stdout is flushed to avoid weird overlaps with logging
sys.stdout.flush()
if file:
file.close()
def PrintMemoryInUse(self, byte_filter=16384):
''' Print one or more trees showing a hierarchy of memory allocations.
Args:
byte_filter: a number of bytes below which we'll prune the tree
'''
list = self.GetMessageList("MIU")
sublists = list.GetSublists()
if not sublists:
sublists = [list]
trees = []
summaries = []
# create the trees and summaries
for sublist in sublists:
tree = MemoryTreeNode.CreateTree(sublist)
trees.append(tree)
# while the tree is a hierarchical assignment from the root/bottom of the
# stack down, the summary is simply adding the total of the top-most
# stack item from our code
summary = {}
total = 0
summaries.append(summary)
for msg in sublist.AllMessages():
total += msg._bytes
stack = msg.GetAllocStack()
if stack._all_external:
alloc_caller = "WINDOWS"
else:
lines = stack.GetLines()
for line in lines:
alloc_caller = line["function"]
if alloc_caller:
break
summary[alloc_caller] = summary.get(alloc_caller, 0) + msg._bytes
summary["TOTAL"] = total
# print out the summaries and trees.
# TODO(erikkay): perhaps we should be writing this output to a file
# instead?
tree_number = 1
num_trees = len(trees)
for tree, summary in zip(trees, summaries):
print "MEMORY SNAPSHOT %d of %d" % (tree_number, num_trees)
lines = summary.keys()
lines.sort(cmp=lambda x,y: summary[y] - summary[x])
rest = 0
for line in lines:
bytes = summary[line]
if bytes < byte_filter:
rest += bytes
else:
print "%d: %s" % (bytes, line)
print "%d: REST" % rest
print
print "BEGIN TREE"
tree.PrintRecursive(byte_filter=byte_filter)
tree_number += 1
# make sure stdout is flushed to avoid weird overlaps with logging
sys.stdout.flush()
def BugReport(self, save=True):
''' Print a summary of how many messages of each type were found and write
to BugReport.txt
'''
if save:
filename = os.path.join(self._report_dir, "BugReport.txt")
file = open(filename, "w")
else:
file = None
# make sure everyone else is done first
sys.stderr.flush()
sys.stdout.flush()
logging.info("summary of Purify bugs:")
# This is a specialized set of counters for unit tests, with some
# unfortunate hard-coded knowledge.
test_counts = {}
total_count = 0
for key in self._message_lists:
bug = {}
list = self._message_lists[key]
unique = list.UniqueMessages()
all = list.AllMessages()
count = 0
for msg in all:
if msg._title not in bug:
# use a single sample message to represent all messages
# that match this title
bug[msg._title] = {"message":msg,
"total":0,
"count":0,
"programs":set()}
total_count += 1
this_bug = bug[msg._title]
this_bug["total"] += msg._count
this_bug["count"] += 1
prog = msg.Program()
if self._name == "layout":
# For layout tests, use the last argument, which is the URL that's
# passed into test_shell.
this_bug["programs"].add(prog)
prog_args = prog.split(" ")
if len(prog_args):
path = prog_args[-1].replace('\\', '/')
index = path.rfind("layout_tests/")
if index >= 0:
path = path[(index + len("layout_tests/")):]
else:
index = path.rfind("127.0.0.1:")
if index >= 0:
# the port number is 8000 or 9000, but length is the same
path = "http: " + path[(index + len("127.0.0.1:8000/")):]
count = 1 + test_counts.get(path, 0)
test_counts[path] = count
elif self._name == "ui":
# ui_tests.exe appends a --test-name= argument to chrome.exe
prog_args = prog.split(" ")
arg_prefix = "--test-name="
test_name = "UNKNOWN"
for arg in prog_args:
index = arg.find(arg_prefix)
if index >= 0:
test_name = arg[len(arg_prefix):]
count = 1 + test_counts.get(test_name, 0)
test_counts[test_name] = count
break
this_bug["programs"].add(test_name)
else:
this_bug["programs"].add(prog)
for title in bug:
b = bug[title]
self._PrintAndSave("[%s] %s" % (key, title), file)
self._PrintAndSave("%d tests, %d stacks, %d instances" % (
len(b["programs"]), b["count"], b["total"]), file)
self._PrintAndSave("Reproducible with:", file)
for program in b["programs"]:
self._PrintAndSave(" %s" % program, file)
self._PrintAndSave("Sample error details:", file)
self._PrintAndSave("=====================", file)
self._PrintAndSave(b["message"].NormalizedStr(verbose=True), file)
if len(test_counts):
self._PrintAndSave("", file)
self._PrintAndSave("test error counts", file)
self._PrintAndSave("========================", file)
tests = test_counts.keys()
tests.sort()
for test in tests:
self._PrintAndSave("%s: %d" % (test, test_counts[test]), file)
if total_count == 0:
self._PrintAndSave("No bugs. Shocking, I know.", file)
# make sure stdout is flushed to avoid weird overlaps with logging
sys.stdout.flush()
if file:
file.close()
def SaveStrings(self, string_list, key, fname_extra=""):
'''Output a list of strings to a file in the report dir.
'''
out = os.path.join(self._report_dir,
"%s_%s%s.txt" % (self._name, key, fname_extra))
logging.info("saving %s" % (out))
try:
f = open(out, "w+")
f.write('\n'.join(string_list))
except IOError, (errno, strerror):
logging.error("error writing to file %s (%d, %s)" % out, errno, strerror)
if f:
f.close()
return True
def SaveResults(self, path=None, verbose=False):
''' Output normalized data to baseline files for future comparison runs.
Messages are saved in sorted order into a separate file for each message
type. See Message.NormalizedStr() for details of what's written.
'''
if not path:
path = self._report_dir
for key in self._message_lists:
out = os.path.join(path, "%s_%s.txt" % (self._name, key))
logging.info("saving %s" % (out))
f = open(out, "w+")
list = self._message_lists[key].UniqueMessages()
# TODO(erikkay): should the count of each message be a diff factor?
# (i.e. the same error shows up, but more frequently)
for message in list:
f.write(message.NormalizedStr(verbose=verbose))
f.write("\n")
f.close()
return True
def _PrintAndSave(self, msg, file):
''' Print |msg| to both stdout and to file. '''
if file:
file.write(msg + "\n")
print msg
sys.stdout.flush()
def _ReportFixableMessages(self):
''' Collects all baseline files for the executable being tested, including
lists of flakey results, and logs the total number of messages in them.
'''
# TODO(pamg): As long as we're looking at all the files, we could use the
# information to report any message types that no longer happen at all.
fixable = 0
flakey = 0
paths = [os.path.join(self._data_dir, x)
for x in os.listdir(self._data_dir)]
for path in paths:
# We only care about this executable's files, and not its gtest filters.
if (not os.path.basename(path).startswith(self._name) or
not path.endswith(".txt") or
path.endswith("gtest.txt") or
path.endswith("_ignore.txt") or
not os.path.isfile(path)):
continue
msgs = self._MessageHashesFromFile(path)
if path.find("flakey") == -1:
fixable += len(msgs)
else:
flakey += len(msgs)
logging.info("Fixable errors: %s" % fixable)
logging.info("Flakey errors: %s" % flakey)
def _MessageHashesFromFile(self, filename):
''' Reads a file of normalized messages (see SaveResults) and creates a
dictionary mapping the hash of each message to its text.
'''
# NOTE: this uses the same hashing algorithm as Message.__hash__.
# Unfortunately, we can't use the same code easily since Message is based
# on parsing an original Purify output file and this code is reading a file
# of already normalized messages. This means that these two bits of code
# need to be kept in sync.
msgs = {}
if not os.path.isabs(filename):
filename = os.path.join(self._data_dir, filename)
if os.path.exists(filename):
logging.info("reading messages from %s" % filename)
file = open(filename, "r")
msg = ""
title = None
lines = file.readlines()
# in case the file doesn't end in a blank line
lines.append("\n")
for line in lines:
# allow these files to have comments in them
if line.startswith('#') or line.startswith('//'):
continue
if not title:
if not line.isspace():
# first line of each message is a title
title = line
continue
elif not line.isspace():
msg += line
else:
# note that the hash doesn't include the title, see Message.__hash__
h = hash(msg)
msgs[h] = title + msg
title = None
msg = ""
logging.info("%s: %d msgs" % (filename, len(msgs)))
return msgs
def _SaveGroupSummary(self, message_list):
'''Save a summary of message groups and their counts to a file in report_dir
'''
string_list = []
groups = message_list.UniqueMessageGroups()
group_keys = groups.keys()
group_keys.sort(cmp=lambda x,y: len(groups[y]) - len(groups[x]))
for group in group_keys:
string_list.append("%s: %d" % (group, len(groups[group])))
self.SaveStrings(string_list, message_list.GetType(), "_GROUPS")
def CompareResults(self):
''' Compares the results from the current run with the baseline data
stored in data/<name>_<key>.txt returning False if it finds new errors
that are not in the baseline. See ReadFile() and SaveResults() for
details of what's in the original file and what's in the baseline.
Errors that show up in the baseline but not the current run are not
considered errors (they're considered "fixed"), but they do suggest
that the baseline file could be re-generated.'''
errors = 0
fixes = 0
for type in purify_message.message_type:
if type in ["MIU"]:
continue
# number of new errors for this message type
type_errors = []
# number of new unexpected fixes for this message type
type_fixes = []
# the messages from the current run that are in the baseline
new_baseline = []
# a common prefix used to describe the program being analyzed and the
# type of message which is used to generate filenames and descriptive
# error messages
type_name = "%s_%s" % (self._name, type)
# open the baseline file to compare against
baseline_file = "%s.txt" % type_name
baseline_hashes = self._MessageHashesFromFile(baseline_file)
# read the flakey file if it exists
flakey_file = "%s_flakey.txt" % type_name
flakey_hashes = self._MessageHashesFromFile(flakey_file)
# read the ignore file if it exists
ignore_file = "%s_ignore.txt" % type_name
ignore_hashes = self._MessageHashesFromFile(ignore_file)
# messages from the current run
current_list = self.GetMessageList(type)
if current_list:
# Since we're looking at the list of unique messages,
# if the number of occurrances of a given unique message
# changes, it won't show up as an error.
current_messages = current_list.UniqueMessages()
else:
current_messages = []
current_hashes = {}
# compute errors and new baseline
for message in current_messages:
msg_hash = hash(message)
current_hashes[msg_hash] = message
if msg_hash in ignore_hashes or msg_hash in flakey_hashes:
continue
if msg_hash in baseline_hashes:
new_baseline.append(msg_hash)
continue
type_errors.append(msg_hash)
# compute unexpected fixes
for msg_hash in baseline_hashes:
if (msg_hash not in current_hashes and
msg_hash not in ignore_hashes and
msg_hash not in flakey_hashes):
type_fixes.append(baseline_hashes[msg_hash])
if len(current_messages) or len(type_errors) or len(type_fixes):
logging.info("%d '%s(%s)' messages "
"(%d new, %d unexpectedly fixed)" % (len(current_messages),
purify_message.GetMessageType(type), type,
len(type_errors), len(type_fixes)))
if len(type_errors):
strs = [current_hashes[x].NormalizedStr(verbose=True)
for x in type_errors]
logging.error("%d new '%s(%s)' errors found\n%s" % (len(type_errors),
purify_message.GetMessageType(type), type,
'\n'.join(strs)))
strs = [current_hashes[x].NormalizedStr() for x in type_errors]
self.SaveStrings(strs, type, "_NEW")
errors += len(type_errors)
if len(type_fixes):
# we don't have access to the original message, so all we can do is log
# the non-verbose normalized text
logging.warning("%d new '%s(%s)' unexpected fixes found\n%s" % (
len(type_fixes), purify_message.GetMessageType(type),
type, '\n'.join(type_fixes)))
self.SaveStrings(type_fixes, type, "_FIXED")
fixes += len(type_fixes)
if len(current_messages) == 0:
logging.warning("all errors fixed in %s" % baseline_file)
if len(type_fixes) or len(type_errors):
strs = [baseline_hashes[x] for x in new_baseline]
self.SaveStrings(strs, type, "_BASELINE")
if current_list:
self._SaveGroupSummary(current_list)
if errors:
logging.error("%d total new errors found" % errors)
return -1
else:
logging.info("no new errors found - yay!")
if fixes:
logging.warning("%d total errors unexpectedly fixed" % fixes)
# magic return code to turn the builder orange (via ReturnCodeCommand)
return 88
return 0
# The following code is here for testing and development purposes.
def _main():
retcode = 0
parser = optparse.OptionParser("usage: %prog [options] <files to analyze>")
parser.add_option("-b", "--baseline", action="store_true", default=False,
help="save output to baseline files")
parser.add_option("-m", "--memory_in_use",
action="store_true", default=False,
help="print memory in use summary")
parser.add_option("", "--validate",
action="store_true", default=False,
help="validate results vs. baseline")
parser.add_option("-e", "--echo_to_stdout",
action="store_true", default=False,
help="echo purify output to standard output")
parser.add_option("", "--source_dir",
help="path to top of source tree for this build"
"(used to normalize source paths in output)")
parser.add_option("", "--byte_filter", default=16384,
help="prune the tree below this number of bytes")
parser.add_option("-n", "--name",
help="name of the test being run "
"(used for output filenames)")
parser.add_option("", "--data_dir",
help="path to where purify data files live")
parser.add_option("", "--bug_report", default=False,
action="store_true",
help="print output as an attempted summary of bugs")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="verbose output - enable debug log messages")
parser.add_option("", "--report_dir",
help="path where report files are saved")
(options, args) = parser.parse_args()
if not len(args) >= 1:
parser.error("no filename specified")
filenames = args
if options.verbose:
google.logging_utils.config_root(level=logging.DEBUG)
else:
google.logging_utils.config_root(level=logging.INFO)
pa = PurifyAnalyze(filenames, options.echo_to_stdout, options.name,
options.source_dir, options.data_dir, options.report_dir)
execute_crash = not pa.ReadFile()
if options.bug_report:
pa.BugReport()
pa.Summary(False)
elif options.memory_in_use:
pa.PrintMemoryInUse(int(options.byte_filter))
elif execute_crash:
retcode = -1
logging.error("Fatal error during test execution. Analysis skipped.")
elif options.validate:
if pa.CompareResults() != 0:
retcode = -1
pa.SaveResults()
pa.Summary()
elif options.baseline:
if not pa.SaveResults(verbose=True):
retcode = -1
pa.Summary(False)
else:
pa.Summary(False)
sys.exit(retcode)
if __name__ == "__main__":
_main()

@ -1,87 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# purify_coverage.py
import logging
import optparse
import os
import re
import sys
import google.path_utils
# local modules
import common
import purify_analyze
import purify_message
class PurifyCoverage(common.Rational):
def __init__(self):
common.Rational.__init__(self)
script_dir = google.path_utils.ScriptDir()
self._latest_dir = os.path.join(script_dir, "latest")
def CreateOptionParser(self):
common.Rational.CreateOptionParser(self)
self._parser.description = __doc__
self._parser.add_option("-n", "--name",
dest="name", default=None,
help="name of the test being run "
"(used for output filenames)")
self._parser.add_option("", "--source_dir",
help="path to top of source tree for this build"
"(used to normalize source paths in baseline)")
def ParseArgv(self):
if common.Rational.ParseArgv(self):
self._name = self._options.name
if not self._name:
self._name = os.path.basename(self._exe)
# _out_file can be set in common.Rational.ParseArgv
if not self._out_file:
self._out_file = os.path.join(self._latest_dir,
"%s_coverage.txt" % (self._name))
self._source_dir = self._options.source_dir
return True
return False
def _PurifyCommand(self):
cmd = [common.PURIFYW_PATH, "/CacheDir=" + self._cache_dir,
"/ShowInstrumentationProgress=no", "/ShowLoadLibraryProgress=no",
"/AllocCallStackLength=30", "/Coverage",
"/CoverageDefaultInstrumentationType=line"]
return cmd
def Instrument(self):
cmd = self._PurifyCommand()
# /Run=no means instrument only
cmd.append("/Run=no")
cmd.append(os.path.abspath(self._exe))
return common.Rational.Instrument(self, cmd)
def Execute(self):
cmd = self._PurifyCommand()
cmd.append("/SaveTextData=" + self._out_file)
# TODO(erikkay): should we also do /SaveMergeTextData?
return common.Rational.Execute(self, cmd)
def Analyze(self):
if not os.path.isfile(self._out_file):
logging.info("no output file %s" % self._out_file)
return -1
# TODO(erikkay): parse the output into a form we could use on the buildbots
return 0
if __name__ == "__main__":
rational = PurifyCoverage()
if rational.Run():
retcode = 0
else:
retcode = -1
sys.exit(retcode)

@ -1,92 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# purify_inuse.py
import logging
import optparse
import os
import re
import sys
import google.path_utils
# local modules
import common
import purify_analyze
import purify_message
class PurifyInUse(common.Rational):
def __init__(self):
common.Rational.__init__(self)
script_dir = google.path_utils.ScriptDir()
self._latest_dir = os.path.join(script_dir, "latest")
def CreateOptionParser(self):
common.Rational.CreateOptionParser(self)
self._parser.description = __doc__
self._parser.add_option("-n", "--name",
dest="name", default=None,
help="name of the test being run "
"(used for output filenames)")
self._parser.add_option("", "--source_dir",
help="path to top of source tree for this build"
"(used to normalize source paths in baseline)")
self._parser.add_option("", "--byte_filter", default=16384,
help="prune the tree below this number of bytes")
def ParseArgv(self):
if common.Rational.ParseArgv(self):
self._name = self._options.name
if not self._name:
self._name = os.path.basename(self._exe)
# _out_file can be set in common.Rational.ParseArgv
if not self._out_file:
self._out_file = os.path.join(self._latest_dir, "%s.txt" % (self._name))
self._source_dir = self._options.source_dir
self._byte_filter = int(self._options.byte_filter)
return True
return False
def _PurifyCommand(self):
cmd = [common.PURIFYW_PATH, "/CacheDir=" + self._cache_dir,
"/ShowInstrumentationProgress=no", "/ShowLoadLibraryProgress=no",
"/AllocCallStackLength=30", "/ErrorCallStackLength=30",
"/LeaksAtExit=no", "/InUseAtExit=yes"]
return cmd
def Instrument(self):
cmd = self._PurifyCommand()
# /Run=no means instrument only
cmd.append("/Run=no")
cmd.append(os.path.abspath(self._exe))
return common.Rational.Instrument(self, cmd)
def Execute(self):
cmd = self._PurifyCommand()
cmd.append("/SaveTextData=" + self._out_file)
return common.Rational.Execute(self, cmd)
def Analyze(self):
if not os.path.isfile(self._out_file):
logging.info("no output file %s" % self._out_file)
return -1
pa = purify_analyze.PurifyAnalyze(self._out_file, False,
self._name, self._source_dir)
if not pa.ReadFile():
logging.warning("inuse summary suspect due to fatal error during run")
pa.PrintMemoryInUse(byte_filter=self._byte_filter)
return 0
if __name__ == "__main__":
rational = PurifyInUse()
if rational.Run():
retcode = 0
else:
retcode = -1
sys.exit(retcode)

@ -1,610 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# purify_message.py
''' Utility objects and functions to parse and unique Purify messages '''
import cStringIO
import logging
import re
import sys
import google.logging_utils
# used to represent one or more elided frames
ELIDE = "..."
# used to represent stack truncation at a known entry point
TRUNCATE = "^^^"
# a file that's outside of our source directory
EXTERNAL_FILE = "EXTERNAL_FILE"
# mapping of purify message types to descriptions
message_type = {
"ABR": "Array Bounds Read",
"ABW": "Array Bounds Write",
"ABWL": "Array Bounds Write (late detect)",
"BSR": "Beyond Stack Read",
"BSW": "Beyond Stack Write",
"COM": "COM API/Interface Failure",
"EXC": "Continued Exception",
"EXH": "Handled Exception",
"EXI": "Ignored Exception",
"EXU": "Unhandled Exception",
"FFM": "Freeing Freed Memory",
"FIM": "Freeing Invalid Memory",
"FMM": "Freeing Mismatched Memory",
"FMR": "Free Memory Read",
"FMW": "Free Memory Write",
"FMWL": "Free Memory Write (late detect)",
"HAN": "Invalid Handle",
"HIU": "Handle In Use",
"ILK": "COM Interface Leak",
"IPR": "Invalid Pointer Read",
"IPW": "Invalid Pointer Write",
"MAF": "Memory Allocation Failure",
"MIU": "Memory In Use",
"MLK": "Memory Leak",
"MPK": "Potential Memory Leak",
"NPR": "Null Pointer Read",
"NPW": "Null Pointer Write",
"PAR": "Bad Parameter",
"UMC": "Uninitialized Memory Copy",
"UMR": "Uninitialized Memory Read",
}
# a magic message type which is not enumerated with the normal message type dict
FATAL = "FATAL"
def GetMessageType(key):
if key in message_type:
return message_type[key]
elif key == FATAL:
return key
logging.warn("unknown message type %s" % key)
return "UNKNOWN"
# currently unused, but here for documentation purposes
message_severity = {
"I": "Informational",
"E": "Error",
"W": "Warning",
"O": "Internal Purify Error",
}
class Stack:
''' A normalized Purify Stack. The stack is constructed by adding one line
at a time from a stack in a Purify text file via AddLine.
Supports cmp and hash so that stacks which normalize the same can be sorted
and uniqued.
The original stack contents are preserved so that it's possible to drill
down into the full details if necessary. '''
# The top of the source tree. This is stripped from the filename as part
# of normalization.
source_dir = ""
@classmethod
def SetSourceDir(cls, dir):
# normalize the dir
cls.source_dir = dir.replace("\\", "/").lower()
logging.debug("Stack.source_dir = %s" % cls.source_dir)
# a line in a stack trace
pat_stack_line = re.compile('(.*)\[(\w:)?([^\:\s]*)(:\d+)?(\s+.*)?]')
# Known stack entry points that allow us to truncate the rest of the stack
# below that point.
pat_known_entries = (
re.compile('RunnableMethod::Run\(void\)'),
re.compile('ChromeMain'),
re.compile('BrowserMain'),
re.compile('wWinMain'),
re.compile('TimerManager::ProcessPendingTimer\(void\)'),
re.compile('RunnableMethod::RunableMethod\(.*\)'),
re.compile('RenderViewHost::OnMessageReceived\(Message::IPC const&\)'),
re.compile('testing::Test::Run\(void\)'),
re.compile('testing::TestInfoImpl::Run\(void\)'),
re.compile('Thread::ThreadFunc\\(void \*\)'),
re.compile('TimerTask::Run\(void\)'),
re.compile('MessageLoop::RunTask\(Task \*\)'),
re.compile('.DispatchToMethod\@.*'),
)
# if functions match the following, elide them from the stack
pat_func_elide = (re.compile('^std::'), re.compile('^new\('))
# if files match the following, elide them from the stack
pat_file_elide = (re.compile('.*platformsdk_win2008.*'),
re.compile('.*.(dll|DLL)$'),
# bug 1069902
re.compile('webkit/pending/wtf/fastmalloc\.h'),
# When we leak sqlite stuff, we leak a lot, and the stacks
# are all over the place. For now, let's assume that
# sqlite itself is leak free and focus on our calling code.
re.compile('third_party/sqlite/.*'),
)
pat_unit_test = re.compile('^([a-zA-Z0-9]+)_(\w+)_Test::.*')
def __init__(self, title):
self._title = title.lstrip()
self._stack = []
self._orig = ""
# are we currently in an eliding block
self._eliding = False
# have we truncated the stack?
self._truncated = False
# is the stack made up completely of external code? (i.e. elided)
self._all_external = True
# a logical group that this stack belongs to
self._group = None
# top stack line (preserved even if elided)
self._top_stack_line = None
def GetLines(self):
return self._stack
def GetTopStackLine(self):
return self._top_stack_line
def GetTopVisibleStackLine(self):
for line in self._stack:
if line['function']:
return line
return {}
def GetGroup(self):
'''A logical grouping for this stack, allowing related stacks to be grouped
together. Subgroups within a group are separated by ".".
(e.g. group.subgroup.subsubgroup)
'''
return self._group;
def _ComputeStackLine(self, line):
line = line.lstrip()
m = Stack.pat_stack_line.match(line)
if m:
func = m.group(1).rstrip()
func = self._DemangleSymbol(func)
func = self._DetemplatizeSymbol(func)
if m.group(2):
file = m.group(2) + m.group(3)
else:
file = m.group(3)
# paths are normalized to use / and be lower case
file = file.replace("\\", "/").lower()
if not file.startswith(Stack.source_dir):
file = EXTERNAL_FILE
else:
file = file[len(Stack.source_dir):]
# trim leading / if present
if file[0] == "/":
file = file[1:]
loc = m.group(4)
if loc:
loc = int(loc[1:])
else:
loc = 0
return {'function': func, 'file': file, 'line_number': loc}
return None
def _ShouldElide(self, stack_line):
func = stack_line['function']
file = stack_line['file']
# elide certain common functions from the stack such as the STL
for pat in Stack.pat_func_elide:
if pat.match(func):
logging.debug("eliding due to func pat match: %s" % func)
return True
if file == EXTERNAL_FILE:
# if it's not in our source tree, then elide
logging.debug("eliding due to external file: %s" % file)
return True
# elide certain common file sources from the stack, usually this
# involves system libraries
for pat in Stack.pat_file_elide:
if pat.match(file):
logging.debug("eliding due to file pat match: %s" % file)
return True
return False
def AddLine(self, line):
''' Add one line from a stack in a Purify text file. Lines must be
added in order (top down). Lines are added to two internal structures:
an original string copy and an array of normalized lines, split into
(function, file, line number).
Stack normalization does several things:
* elides sections of the stack that are in external code
* truncates the stack at so called "known entry points"
* removes template type information from symbols
Returns False if the line was elided or otherwise omitted.
'''
self._orig += line + "\n"
stack_line = self._ComputeStackLine(line)
if stack_line:
if not self._top_stack_line:
self._top_stack_line = stack_line
# Unit test entry points are good groupings. Even if we already have a
# group set, a later unit-test stack line will override.
# Note that we also do this even if the stack has already been truncated
# since this is useful information.
# TODO(erikkay): Maybe in this case, the truncation should be overridden?
test_match = Stack.pat_unit_test.match(stack_line["function"])
if test_match:
self._group = test_match.group(1) + "." + test_match.group(2)
if self._truncated:
return False
if self._ShouldElide(stack_line):
if not self._eliding:
self._eliding = True
self._stack.append({'function': "", 'file': ELIDE, 'line_number': 0})
return False
else:
self._stack.append(stack_line)
self._eliding = False
self._all_external = False
# when we reach one of the known common stack entry points, truncate
# the stack to avoid printing overly redundant information
if len(self._stack) > 1:
for f in Stack.pat_known_entries:
if f.match(stack_line["function"]):
if not self._group:
# we're at the end of the stack, so use the path to the file
# as the group if we don't already have one
# This won't be incredibly reliable, but might still be useful.
prev = self._stack[-2]
if prev['file']:
self._group = '.'.join(prev['file'].split('/')[:-1])
self._stack.append({'function': "", 'file': TRUNCATE,
'line_number': 0})
self._truncated = True
return False
return True
else:
# skip these lines
logging.debug(">>>" + line)
return False
def _DemangleSymbol(self, symbol):
# TODO(erikkay) - I'm not sure why Purify prepends an address on the
# front of some of these as if it were a namespace (?A<addr>::). From an
# analysis standpoint, it seems meaningless and can change from machine to
# machine, so it's best if it's thrown away
if symbol.startswith("?A0x"):
skipto = symbol.find("::")
if skipto >= 0:
symbol = symbol[(skipto+2):]
else:
logging.warn("unable to strip address off of symbol (%s)" % symbol)
# TODO(erikkay) there are more symbols not being properly demangled
# in Purify's output. Some of these look like template-related issues.
return symbol
def _DetemplatizeSymbol(self, symbol):
''' remove all of the template arguments and return values from the
symbol, normalizing it, making it more readable, and less precise '''
ret = ""
nested = 0
for i in range(len(symbol)):
if nested > 0:
if symbol[i] == '>':
nested -= 1
elif symbol[i] == '<':
nested += 1
elif symbol[i] == '<':
nested += 1
else:
ret += symbol[i]
return ret
def __hash__(self):
return hash(self.NormalizedStr())
def __cmp__(self, other):
if not other:
return 1
len_self = len(self._stack)
len_other = len(other._stack)
min_len = min(len_self, len_other)
# sort stacks from the bottom up
for i in range(-1, -(min_len + 1), -1):
# compare file, then func, but omit line number
ret = cmp((self._stack[i]['file'], self._stack[i]['function']),
(other._stack[i]['file'], other._stack[i]['function']))
if ret:
return ret
return cmp(len_self, len_other)
def NormalizedStr(self, verbose=False):
''' String version of the normalized stack. See AddLine for normalization
details. '''
# use cStringIO for more efficient string building
out = cStringIO.StringIO()
for line in self._stack:
out.write(" ")
out.write(line['file'])
if verbose and line['line_number'] > 0:
out.write(":%d" % line['line_number'])
out.write(" ")
out.write(line['function'])
out.write("\n")
ret = out.getvalue()
out.close()
return ret
def __str__(self):
return self._orig
class Message:
'''A normalized message from a Purify text file. Messages all have a
severity, most have a type, and many have an error stack and/or an
allocation stack.
Supports cmp and hash so that messages which normalize the same can be
sorted and uniqued.'''
pat_count = re.compile('^(.*) \{(\d+) occurrences?\}')
pat_leak = re.compile('(Potential )?[Mm]emory leak of (\d+) bytes? '
'from (\d+) blocks? allocated in (.+)')
pat_miu = re.compile('Memory use of (\d+) bytes? '
'(\((\d+)% initialized\) )?from (\d+) blocks? '
'allocated .. (.+)')
# these are headings to different types of stack traces
pat_loc_error = re.compile('\s*(Exception|Error|Call) location')
pat_loc_alloc = re.compile('\s*Allocation location')
pat_loc_free = re.compile('\s*Free location')
pat_loc_free2 = re.compile('\s*Location of free attempt')
def __init__(self, severity, type, title):
self._severity = severity
self._type = type
self._program = None
self._head = ""
self._loc_alloc = None
self._loc_error = None
self._loc_free = None
self._stack = None
self._count = 1
self._bytes = 0
self._blocks = 0
m = Message.pat_count.match(title)
if m:
self._title = m.group(1)
self._count = int(m.group(2))
else:
m = Message.pat_leak.match(title)
if m:
self._title = m.group(4)
self._bytes = int(m.group(2))
self._blocks = int(m.group(3))
else:
m = Message.pat_miu.match(title)
if m:
self._title = m.group(5)
self._bytes = int(m.group(1))
self._blocks = int(m.group(4))
#print "%d/%d - %s" % (self._bytes, self._blocks, title[0:60])
elif type == "MIU":
logging.error("%s didn't match" % title)
sys.exit(-1)
else:
self._title = title
def GetAllocStack(self):
return self._loc_alloc
def GetErrorStack(self):
return self._loc_error
def GetGroup(self):
'''An attempted logical grouping for this Message computed by the contained
Stack objects.
'''
group = None
if self._loc_alloc:
group = self._loc_alloc.GetGroup()
if not group and self._loc_error:
group = self._loc_error.GetGroup()
if not group and self._loc_free:
group = self._loc_free.GetGroup()
if not group:
group = "UNKNOWN"
return group
def AddLine(self, line):
'''Add a line one at a time (in order from the Purify text file) to
build up the message and its associated stacks. '''
if Message.pat_loc_error.match(line):
self._stack = Stack(line)
self._loc_error = self._stack
elif Message.pat_loc_alloc.match(line):
self._stack = Stack(line)
self._loc_alloc = self._stack
elif Message.pat_loc_free.match(line) or Message.pat_loc_free2.match(line):
self._stack = Stack(line)
self._loc_free = self._stack
elif self._stack:
if not line.startswith(" "):
logging.debug("*** " + line)
self._stack.AddLine(line)
else:
self._head += line.lstrip()
def Type(self):
return self._type
def Program(self):
return self._program
def SetProgram(self, program):
self._program = program
def StacksAllExternal(self):
'''Returns True if the stacks it contains are made up completely of
external (elided) symbols'''
return ((not self._loc_error or self._loc_error._all_external) and
(not self._loc_alloc or self._loc_alloc._all_external) and
(not self._loc_free or self._loc_free._all_external))
def __hash__(self):
# NOTE: see also _MessageHashesFromFile. If this method changes, then
# _MessageHashesFromFile must be updated to match.
s = ""
if self._loc_error:
s += "Error Location\n" + self._loc_error.NormalizedStr()
if self._loc_alloc:
s += "Alloc Location\n" + self._loc_alloc.NormalizedStr()
if self._loc_free:
s += "Free Location\n" + self._loc_free.NormalizedStr()
return hash(s)
def NormalizedStr(self, verbose=False):
'''String version of the normalized message. Only includes title
and normalized versions of error and allocation stacks if present.
Example:
Unitialized Memory Read in Foo::Bar()
Error Location
foo/Foo.cc Foo::Bar(void)
foo/main.cc start(void)
foo/main.cc main(void)
Alloc Location
foo/Foo.cc Foo::Foo(void)
foo/main.cc start(void)
foo/main.cc main(void)
'''
ret = ""
# some of the message types are more verbose than others and we
# don't need to indicate their type
if verbose and self._type not in ["UMR", "IPR", "IPW"]:
ret += GetMessageType(self._type) + ": "
if verbose and self._bytes > 0:
ret += "(%d bytes, %d blocks) " % (self._bytes, self._blocks)
ret += "%s\n" % self._title
if self._loc_error:
ret += "Error Location\n" + self._loc_error.NormalizedStr(verbose)
if self._loc_alloc:
ret += "Alloc Location\n" + self._loc_alloc.NormalizedStr(verbose)
if self._loc_free:
ret += "Free Location\n" + self._loc_free.NormalizedStr(verbose)
return ret
def __str__(self):
ret = self._title + "\n" + self._head
if self._loc_error:
ret += "Error Location\n" + str(self._loc_error)
if self._loc_alloc:
ret += "Alloc Location\n" + str(self._loc_alloc)
if self._loc_free:
ret += "Free Location\n" + str(self._loc_free)
return ret
def __cmp__(self, other):
if not other:
return 1
ret = 0
if self._loc_error:
ret = cmp(self._loc_error, other._loc_error)
if ret == 0 and self._loc_alloc:
ret = cmp(self._loc_alloc, other._loc_alloc)
if ret == 0 and self._loc_free:
ret = cmp(self._loc_free, other._loc_free)
# since title is often not very interesting, we sort against that last
if ret == 0:
ret = cmp(self._title, other._title)
return ret
class MessageList:
'''A collection of Message objects of a given message type.'''
def __init__(self, type):
self._type = type
self._messages = []
self._unique_messages = None
self._sublists = None
self._bytes = 0
def GetType(self):
return self._type
def BeginNewSublist(self):
'''Some message types are logically grouped into sets of messages which
should not be mixed in the same list. Specifically, Memory In Use (MIU),
Memory Leak (MLK) and Potential Memory Leak (MPK) are generated in a set
all at once, but this generation can happen at multiple distinct times,
either via the Purify UI or through Purify API calls. For example, if
Purify is told to dump a list all memory leaks once, and then a few minutes
later, the two lists will certainly overlap, so they should be kept
in separate lists.
In order to accommodate this, MessageList supports the notion of sublists.
When the caller determines that one list of messages of a type has ended
and a new list has begun, it calls BeginNewSublist() which takes the current
set of messages, puts them into a new MessageList and puts that into the
sublists array. Later, when the caller needs to get at these messages,
GetSublists() should be called.
'''
if len(self._messages):
# if this is the first list, no need to make a new one
list = MessageList(self._type)
list._messages = self._messages
if not self._sublists:
self._sublists = [list]
else:
self._sublists.append(list)
self._messages = []
logging.info("total size: %d" % self._bytes)
self._bytes = 0
def GetSublists(self):
'''Returns the current list of sublists. If there are currently sublists
and there are any messages that aren't in a sublist, BeginNewSublist() is
called implicitly by this method to force those ungrouped messages into
their own sublist.
'''
if self._sublists and len(self._sublists) and len(self._messages):
self.BeginNewSublist()
return self._sublists
def AddMessage(self, msg):
'''Adds a message to this MessageList.'''
# TODO(erikkay): assert if _unique_messages exists
self._messages.append(msg)
self._bytes += msg._bytes
def AllMessages(self):
'''Returns an array of all Message objects in this MessageList. '''
# TODO(erikkay): handle case with sublists
return self._messages
def UniqueMessages(self):
'''Returns an array of the unique normalized Message objects in this
MessageList.
'''
# the list is lazily computed since we have to create a sorted list,
# which is only valid once all messages have been added
# TODO(erikkay): handle case with sublists
if not self._unique_messages:
self._unique_messages = list(set(self._messages))
self._unique_messages.sort()
return self._unique_messages
def UniqueMessageGroups(self):
'''Returns a dictionary mapping Message group names to arrays of uniqued
normalized Message objects in this MessageList.
'''
unique = self.UniqueMessages()
groups = {}
for msg in unique:
group = msg.GetGroup()
if not group in groups:
groups[group] = []
groups[group].append(msg)
return groups

@ -1,251 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# purify_test.py
'''Runs an exe through Purify and verifies that Purify was
able to successfully instrument and run it. The original purpose was
to be able to identify when a change to our code breaks our ability to Purify
the app. This can happen with seemingly innocuous changes to code due to bugs
in Purify, and is notoriously difficult to track down when it does happen.
Perhaps more importantly in the long run, this can also automate detection of
leaks and other memory bugs. It also may be useful to allow people to run
Purify in a consistent manner without having to worry about broken PATHs,
corrupt instrumentation, or other per-machine flakiness that Purify is
sometimes subject to.
'''
import glob
import logging
import optparse
import os
import re
import shutil
import sys
import time
import google.path_utils
# local modules
import common
import purify_analyze
class Purify(common.Rational):
def __init__(self):
common.Rational.__init__(self)
self._data_dir = None
def CreateOptionParser(self):
common.Rational.CreateOptionParser(self)
self._parser.description = __doc__
self._parser.add_option("-e", "--echo_to_stdout",
dest="echo_to_stdout", action="store_true", default=False,
help="echo purify output to standard output")
self._parser.add_option("-b", "--baseline",
dest="baseline", action="store_true", default=False,
help="create baseline error files")
self._parser.add_option("-n", "--name",
dest="name", default=None,
help="name of the test being run "
"(used for output filenames)")
self._parser.add_option("", "--source_dir",
help="path to top of source tree for this build"
"(used to normalize source paths in baseline)")
self._parser.add_option("", "--exe",
help="The actual exe to instrument which is "
"different than the program being run. This "
"is useful when the exe you want to purify is "
"run by another script or program.")
self._parser.add_option("", "--data_dir",
help="path where global purify data files live")
self._parser.add_option("", "--report_dir",
help="path where report files are saved")
def ParseArgv(self):
script_dir = google.path_utils.ScriptDir()
if common.Rational.ParseArgv(self):
if self._options.exe:
self._exe = self._options.exe;
if not os.path.isfile(self._exe):
logging.error("file doesn't exist " + self._exe)
return False
self._exe_dir = common.FixPath(os.path.abspath(os.path.dirname(self._exe)))
self._echo_to_stdout = self._options.echo_to_stdout
self._baseline = self._options.baseline
self._name = self._options.name
if not self._name:
self._name = os.path.basename(self._exe)
self._report_dir = self._options.report_dir
if not self._report_dir:
self._report_dir = os.path.join(script_dir, "latest")
# _out_file can be set in common.Rational.ParseArgv
if not self._out_file:
self._out_file = os.path.join(self._report_dir, "%s.txt" % self._name)
self._source_dir = self._options.source_dir
self._data_dir = self._options.data_dir
if not self._data_dir:
self._data_dir = os.path.join(script_dir, "data")
return True
return False
def _PurifyCommand(self):
cmd = [common.PURIFY_PATH, "/CacheDir=" + self._cache_dir]
return cmd
def Setup(self):
script_dir = google.path_utils.ScriptDir()
if common.Rational.Setup(self):
if self._instrument_only:
return True
pft_file = os.path.join(script_dir, "data", "filters.pft")
shutil.copyfile(pft_file, self._exe.replace(".exe", "_exe.pft"))
string_list = [
"[Purify]",
"option -cache-dir=\"%s\"" % (self._cache_dir),
"option -save-text-data=\"%s\"" % (common.FixPath(self._out_file)),
# Change the recorded stack depth to be much larger than the default.
# (webkit/v8 stacks in particular seem to get quite deep)
"option -alloc-call-stack-length=30",
"option -error-call-stack-length=30",
"option -free-call-stack-length=30",
# Report leaks.
"option -leaks-at-exit=yes",
# Don't report memory in use (that's for memory profiling).
"option -in-use-at-exit=no",
# The maximum number of subprocesses. If this is exceeded, Purify
# seems to lose its mind, and we have a number of tests that use
# much larger than the default of 5.
"option -number-of-puts=30",
# With our large pdbs, purify's default timeout (30) isn't always
# enough. If this isn't enough, -1 means no timeout.
"option -server-comm-timeout=120",
# check stack memory loads for UMRs, etc.
# currently disabled due to noisiness (see bug 5189)
#"option -stack-load-checking=yes",
]
ini_file = self._exe.replace(".exe", "_pure.ini")
if os.path.isfile(ini_file):
ini_file_orig = ini_file + ".Original"
if not os.path.isfile(ini_file_orig):
os.rename(ini_file, ini_file_orig)
try:
f = open(ini_file, "w+")
f.write('\n'.join(string_list))
except IOError, (errno, strerror):
logging.error("error writing to file %s (%d, %s)" % ini_file, errno,
strerror)
return False
if f:
f.close()
return True
return False
def Instrument(self):
if not os.path.isfile(self._exe):
logging.error("file doesn't exist " + self._exe)
return False
cmd = self._PurifyCommand()
# /Run=no means instrument
cmd.extend(["/Run=no"])
if not self._instrument_only:
# /Replace=yes means replace the exe in place
cmd.extend(["/Replace=yes"])
cmd.append(os.path.abspath(self._exe))
return common.Rational.Instrument(self, cmd)
def _ExistingOutputFiles(self):
pat_multi = re.compile('(.*)%[0-9]+d(.*)')
m = pat_multi.match(self._out_file)
if m:
g = m.group(1) + '[0-9]*' + m.group(2)
out = glob.glob(g)
if os.path.isfile(m.group(1) + m.group(2)):
out.append(m.group(1) + m.group(2))
return out
if not os.path.isfile(self._out_file):
return []
return [self._out_file]
def Execute(self):
# delete the old file(s) to make sure that this run actually generated
# something new
out_files = self._ExistingOutputFiles()
for f in out_files:
os.remove(f)
common.Rational.Execute(self, [])
# Unfortunately, when we replace the exe, there's no way here to figure out
# if purify is actually going to output a file or if the exe just crashed
# badly. The reason is that it takes some small amount of time for purify
# to dump out the file.
count = 60
while count > 0 and not os.path.isfile(self._out_file):
time.sleep(0.2)
count -= 1
# Always return true, even if Execute failed - we'll depend on Analyze to
# determine if the run was valid.
return True
def Analyze(self):
out_files = self._ExistingOutputFiles()
if not len(out_files):
logging.info("no output files matching %s" % self._out_file)
return -1
pa = purify_analyze.PurifyAnalyze(out_files, self._echo_to_stdout,
self._name, self._source_dir,
self._data_dir, self._report_dir)
if not pa.ReadFile():
# even though there was a fatal error during Purify, it's still useful
# to see the normalized output
pa.Summary()
if self._baseline:
logging.warning("baseline not generated due to fatal error")
else:
logging.warning("baseline comparison skipped due to fatal error")
return -1
if self._baseline:
pa.Summary(False)
if pa.SaveResults():
return 0
return -1
else:
retcode = pa.CompareResults()
if retcode != 0:
pa.SaveResults(self._report_dir)
pa.Summary()
# with more than one output file, it's also important to emit the bug
# report which includes info on the arguments that generated each stack
if len(out_files) > 1:
pa.BugReport()
return retcode
def Cleanup(self):
common.Rational.Cleanup(self);
if self._instrument_only:
return
cmd = self._PurifyCommand()
# undo the /Replace=yes that was done in Instrument(), which means to
# remove the instrumented exe, and then rename exe.Original back to exe.
cmd.append("/UndoReplace")
cmd.append(os.path.abspath(self._exe))
common.RunSubprocess(cmd, self._timeout, detach=True)
# if we overwrote an existing ini file, restore it
ini_file = self._exe.replace(".exe", "_pure.ini")
if os.path.isfile(ini_file):
os.remove(ini_file)
ini_file_orig = ini_file + ".Original"
if os.path.isfile(ini_file_orig):
os.rename(ini_file_orig, ini_file)
# remove the pft file we wrote out
pft_file = self._exe.replace(".exe", "_exe.pft")
if os.path.isfile(pft_file):
os.remove(pft_file)
if __name__ == "__main__":
rational = Purify()
retcode = rational.Run()
sys.exit(retcode)

@ -1,61 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# quantify_test.py
'''Runs an app through Quantify and verifies that Quantify was able to
successfully instrument and run it. The original purpose was to allow people
to run Quantify in a consistent manner without having to worry about broken
PATHs, corrupt instrumentation, or other per-machine flakiness that Quantify is
sometimes subject to. Unlike purify_test, the output from quantify_test is
a binary file, which is much more useful in manual analysis. As such, this
tool is not particularly interesting for automated analysis yet.
'''
import os
import sys
# local modules
import common
class Quantify(common.Rational):
def __init__(self):
common.Rational.__init__(self)
def CreateOptionParser(self):
common.Rational.CreateOptionParser(self)
self._parser.description = __doc__
def ParseArgv(self):
if common.Rational.ParseArgv(self):
if not self._out_file:
self._out_file = os.path.join(self._cache_dir,
"%s.qfy" % (os.path.basename(self._exe)))
return True
return False
def Instrument(self):
proc = [common.QUANTIFYE_PATH, "-quantify",
'-quantify_home="' + common.PPLUS_PATH + '"' ,
"/CacheDir=" + self._cache_dir,
"-first-search-dir=" + self._exe_dir, self._exe]
return common.Rational.Instrument(self, proc)
def Execute(self):
# TODO(erikkay): add an option to also do /SaveTextData and add an
# Analyze method for automated analysis of that data.
proc = [common.QUANTIFYW_PATH, "/CacheDir=" + self._cache_dir,
"/ShowInstrumentationProgress=no", "/ShowLoadLibraryProgress=no",
"/SaveData=" + self._out_file]
return common.Rational.Execute(self, proc)
if __name__ == "__main__":
retcode = -1
rational = Quantify()
if rational.Run():
retcode = 0
sys.exit(retcode)

@ -1,33 +0,0 @@
#!/bin/env python
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# sharded_test_runner
import optparse
import os
import re
import subprocess
import sys
import common
def RunShardedTests(exe, total_shards, params):
os.environ['GTEST_TOTAL_SHARDS'] = str(total_shards)
for shard in range(total_shards):
os.environ['GTEST_SHARD_INDEX'] = str(shard)
cmd = [exe]
cmd.extend(params)
common.RunSubprocess(cmd)
def main():
exe = sys.argv[1]
total_shards = int(sys.argv[2])
params = sys.argv[3:]
RunShardedTests(exe, total_shards, params)
if __name__ == "__main__":
main()

@ -1,51 +0,0 @@
#!/bin/env python
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# test_runner
import optparse
import os
import re
import subprocess
import sys
import google.logging_utils
import google.path_utils
import common
def GetAllTests(exe):
cmd = [exe, "--gtest_list_tests"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
line = p.stdout.readline().rstrip()
test = line
tests = []
while line:
line = p.stdout.readline().rstrip()
if line.startswith(' '):
tests.append(test + line.lstrip())
else:
test = line
return tests
def RunTestsSingly(exe, tests):
for test in tests:
filter = test
if len(sys.argv) > 2:
filter = filter + ":" + sys.argv[2]
cmd = [exe, "--gtest_filter=" + filter]
common.RunSubprocess(cmd)
def main():
exe = sys.argv[1]
all_tests = GetAllTests(exe)
RunTestsSingly(exe, all_tests)
if __name__ == "__main__":
main()

@ -1,5 +0,0 @@
# Way too slow under Purify at the moment; http://crbug.com/9177
BMPImageDecoderTest.ChunkedDecodingSlow
BMPImageDecoderTest.DecodingSlow
# Started timing out (again) at r22659 (prev r22420); Bug 18598
PluginTest.*

@ -1,429 +0,0 @@
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
third_party/webkit/webcore/page/frameview.cpp WebCore::FrameViewPrivate::FrameViewPrivate(FrameView::WebCore *)
third_party/webkit/webcore/page/frameview.cpp WebCore::FrameView::FrameView(Frame::WebCore *)
webkit/glue/webframe_impl.cc WebFrameImpl::CreateFrameView(void)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::makeDocumentView(void)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::transitionToCommittedForNewPage(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::transitionToCommitted(PassRefPtr::WTF)
webkit/pending/frameloader.cpp WebCore::FrameLoader::commitProvisionalLoad(PassRefPtr::WTF)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::commitIfReady(void)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::finishedLoading(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::init(void)
webkit/pending/frame.cpp WebCore::Frame::init(void)
webkit/glue/webframe_impl.cc WebFrameImpl::InitMainFrame(WebViewImpl *)
webkit/glue/webview_impl.cc WebView::Create(WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/webview_host.cc WebViewHost::Create(HWND__ *,WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::SetUp(void)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
webkit/pending/document.cpp WebCore::Document::Document(DOMImplementation::WebCore *,Frame::WebCore *,bool)
third_party/webkit/webcore/html/htmldocument.cpp WebCore::HTMLDocument::HTMLDocument(DOMImplementation::WebCore *,Frame::WebCore *)
third_party/webkit/webcore/dom/domimplementation.cpp WebCore::DOMImplementation::createDocument(String::WebCore const&,Frame::WebCore *,bool)
webkit/pending/frameloader.cpp WebCore::FrameLoader::begin(KURL::WebCore const&,bool,SecurityOrigin::WebCore *)
webkit/pending/frameloader.cpp WebCore::FrameLoader::init(void)
webkit/pending/frame.cpp WebCore::Frame::init(void)
webkit/glue/webframe_impl.cc WebFrameImpl::InitMainFrame(WebViewImpl *)
webkit/glue/webview_impl.cc WebView::Create(WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/webview_host.cc WebViewHost::Create(HWND__ *,WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::SetUp(void)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::DeprecatedStringData::createAndAdopt(DeprecatedStringData::WebCore&) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedStringData::createAndAdopt(DeprecatedStringData::WebCore&)
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedString::detachIfInternal(void)
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedString::~DeprecatedString(void)
chrome/release/test_shell_tests.exe WebCore::KURL::~KURL(void)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedStringData::initialize(char const*,UINT)
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedString::DeprecatedString(char const*,int)
webkit/port/platform/gkurl.cpp WebCore::KURL::KURL(char const*,int,Parsed::url_parse const&,bool)
webkit/glue/glue_util.cc webkit_glue::GURLToKURL(GURL const&)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/deprecatedstring.cpp WebCore::allocateHandle
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedString::DeprecatedString(char const*,int)
webkit/port/platform/gkurl.cpp WebCore::KURL::KURL(char const*,int,Parsed::url_parse const&,bool)
webkit/glue/glue_util.cc webkit_glue::GURLToKURL(GURL const&)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool) [test_shell_tests.exe]
Alloc Location
...
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::ResourceHandle::ResourceHandle(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,bool,bool,bool) [test_shell_tests.exe]
Alloc Location
...
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::ResourceHandle(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,bool,bool,bool)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
RevocableStore::RevocableStore(void) [test_shell_tests.exe]
Alloc Location
...
base/revocable_store.cc RevocableStore::RevocableStore(void)
base/task.h ScopedRunnableMethodFactory::ScopedRunnableMethodFactory(ResourceHandleInternal::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::ResourceHandleInternal(ResourceHandle::WebCore *,ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::ResourceHandle(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,bool,bool,bool)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
third_party/webkit/javascriptcore/wtf/hashtable.h WTF::HashTable::allocateTable(int)
third_party/webkit/javascriptcore/wtf/hashtable.h WTF::HashTable::rehash(int)
third_party/webkit/javascriptcore/wtf/hashtable.h WTF::HashTable::expand(void)
third_party/webkit/javascriptcore/wtf/hashtable.h ???
third_party/webkit/javascriptcore/wtf/hashmap.h WTF::HashMap::inlineAdd(String::WebCore const&,String::WebCore const&)
third_party/webkit/javascriptcore/wtf/hashmap.h WTF::HashMap::add(String::WebCore const&,String::WebCore const&)
third_party/webkit/webcore/platform/network/resourcerequestbase.cpp WebCore::ResourceRequestBase::addHTTPHeaderField(String::WebCore const&,String::WebCore const&)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/deprecatedstring.cpp WebCore::DeprecatedStringData::makeUnicode(void)
third_party/webkit/webcore/platform/deprecatedstring.h WebCore::DeprecatedStringData::unicode(void)
third_party/webkit/webcore/platform/deprecatedstring.h WebCore::DeprecatedString::unicode(void)const
webkit/pending/string.cpp WebCore::String::String(DeprecatedString::WebCore const&)
webkit/pending/kurl.h WebCore::KURL::string(void)const
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::StringImpl::create(char const*) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?A0x33be9879::SimpleResourceLoaderBridge::Start(Peer::ResourceLoaderBridge::webkit_glue *) [test_shell_tests.exe]
Alloc Location
...
webkit/tools/test_shell/simple_resource_loader_bridge.cc SimpleResourceLoaderBridge::Start(Peer::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
webkit_glue::ResourceLoaderBridge::Create(WebFrame *,basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,GURL const&,GURL const&,basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,int,int,Type::ResourceType,bool) [test_shell_tests.exe]
Alloc Location
...
webkit/tools/test_shell/simple_resource_loader_bridge.cc webkit_glue::ResourceLoaderBridge::Create(WebFrame *,basic_string::std const&,GURL const&,GURL const&,basic_string::std const&,int,int,Type::ResourceType,bool)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::StringImpl::create(char const*) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
third_party/webkit/webcore/platform/network/resourcerequestbase.h WebCore::ResourceRequestBase::ResourceRequestBase(KURL::WebCore const&,ResourceRequestCachePolicy::WebCore)
webkit/port/platform/network/resourcerequest.h WebCore::ResourceRequest::ResourceRequest(KURL::WebCore const&)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*,UINT)
webkit/pending/string.cpp WebCore::String::String(char const*,UINT)
webkit/glue/glue_util.cc webkit_glue::StdStringToString(basic_string::std const&)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::userAgent(KURL::WebCore const&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::applyUserAgent(ResourceRequest::WebCore&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::addExtraFieldsToRequest(ResourceRequest::WebCore&,bool,bool)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::startLoadingMainResource(DWORD)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueLoadAfterWillSubmitForm(PolicyAction::WebCore)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueLoadAfterNavigationPolicy(ResourceRequest::WebCore const&,PassRefPtr::WTF,bool)
webkit/pending/frameloader.cpp WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void *,ResourceRequest::WebCore const&,PassRefPtr::WTF,bool)
webkit/pending/frameloader.cpp WebCore::PolicyCheck::call(bool)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueAfterNavigationPolicy(PolicyAction::WebCore)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction((FrameLoader::WebCore::*)(void),...)
webkit/pending/frameloader.cpp WebCore::FrameLoader::checkNavigationPolicy(ResourceRequest::WebCore const&,DocumentLoader::WebCore *,PassRefPtr::WTF,(*)(void *,ResourceRequest::WebCore const&,PassRefPtr::WTF,bool),void *)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(DocumentLoader::WebCore *,FrameLoadType::WebCore,PassRefPtr::WTF)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(DocumentLoader::WebCore *)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(ResourceRequest::WebCore const&,SubstituteData::WebCore const&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(ResourceRequest::WebCore const&)
webkit/glue/webframe_impl.cc WebFrameImpl::LoadRequest(WebRequest *)
webkit/tools/test_shell/test_shell.cc TestShell::Navigate(NavigationEntry const&,bool)
webkit/tools/test_shell/test_navigation_controller.cc TestNavigationController::NavigateToPendingEntry(bool)
webkit/tools/test_shell/temp/navigation_controller_base.cc NavigationControllerBase::LoadEntry(NavigationEntry *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURLForFrame(wchar_t const *,wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURL(wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::SetUp(void)
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
third_party/webkit/webcore/platform/network/resourcerequestbase.h WebCore::ResourceRequestBase::ResourceRequestBase(KURL::WebCore const&,ResourceRequestCachePolicy::WebCore)
webkit/port/platform/network/resourcerequest.h WebCore::ResourceRequest::ResourceRequest(void)
webkit/pending/frameloader.cpp WebCore::PolicyCheck::clearRequest(void)
webkit/pending/frameloader.cpp WebCore::PolicyCheck::cancel(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::stopPolicyCheck(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::stopAllLoaders(void)
webkit/glue/webframe_impl.cc WebFrameImpl::StopLoading(void)
webkit/glue/webframe_impl.cc WebFrameImpl::LoadRequest(WebRequest *,SubstituteData::WebCore const&)
webkit/glue/webframe_impl.cc WebFrameImpl::LoadRequest(WebRequest *)
webkit/tools/test_shell/test_shell.cc TestShell::Navigate(NavigationEntry const&,bool)
webkit/tools/test_shell/test_navigation_controller.cc TestNavigationController::NavigateToPendingEntry(bool)
webkit/tools/test_shell/temp/navigation_controller_base.cc NavigationControllerBase::LoadEntry(NavigationEntry *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURLForFrame(wchar_t const *,wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURL(wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::SetUp(void)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*)
webkit/pending/string.cpp WebCore::String::String(char const*)
webkit/pending/frameview.cpp WebCore::FrameViewPrivate::FrameViewPrivate(FrameView::WebCore *)
webkit/pending/frameview.cpp WebCore::FrameView::FrameView(Frame::WebCore *)
webkit/glue/webframe_impl.cc WebFrameImpl::CreateFrameView(void)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::makeDocumentView(void)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::transitionToCommittedForNewPage(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::transitionToCommitted(PassRefPtr::WTF)
webkit/pending/frameloader.cpp WebCore::FrameLoader::commitProvisionalLoad(PassRefPtr::WTF)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::commitIfReady(void)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::finishedLoading(void)
webkit/pending/frameloader.cpp WebCore::FrameLoader::init(void)
webkit/pending/frame.cpp WebCore::Frame::init(void)
webkit/glue/webframe_impl.cc WebFrameImpl::InitMainFrame(WebViewImpl *)
webkit/glue/webview_impl.cc WebView::Create(WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/webview_host.cc WebViewHost::Create(HWND__ *,WebViewDelegate *,WebPreferences const&)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::SetUp(void)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests::SetUp(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::CString::init(char const*,UINT) [test_shell_tests.exe]
Alloc Location
...
third_party/webkit/webcore/platform/text/cstring.cpp WebCore::CString::init(char const*,UINT)
third_party/webkit/webcore/platform/text/cstring.cpp WebCore::CString::CString(char const*,UINT)
webkit/port/platform/gkurl.cpp WebCore::KURL::URLString::setAscii(char const*,int)
webkit/port/platform/gkurl.cpp WebCore::KURL::KURL(char const*,int,Parsed::url_parse const&,bool)
webkit/glue/glue_util.cc webkit_glue::GURLToKURL(GURL const&)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
third_party/webkit/javascriptcore/wtf/vector.h WTF::VectorBufferBase::allocateBuffer(UINT)
third_party/webkit/javascriptcore/wtf/vector.h WTF::VectorBuffer::VectorBuffer(UINT)
third_party/webkit/javascriptcore/wtf/vector.h WTF::Vector::Vector(UINT)
third_party/webkit/webcore/platform/text/cstring.h WebCore::CStringBuffer::CStringBuffer(UINT)
third_party/webkit/webcore/platform/text/cstring.cpp WebCore::CString::init(char const*,UINT)
third_party/webkit/webcore/platform/text/cstring.cpp WebCore::CString::CString(char const*,UINT)
webkit/port/platform/gkurl.cpp WebCore::KURL::URLString::setAscii(char const*,int)
webkit/port/platform/gkurl.cpp WebCore::KURL::KURL(char const*,int,Parsed::url_parse const&,bool)
webkit/glue/glue_util.cc webkit_glue::GURLToKURL(GURL const&)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WTF::fastMalloc(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/pending/stringimpl.cpp WebCore::newUCharVector
webkit/pending/stringimpl.cpp WebCore::StringImpl::StringImpl(char const*,UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*,UINT)
webkit/pending/string.cpp WebCore::String::String(char const*,UINT)
webkit/port/platform/gkurl.cpp WebCore::KURL::URLString::string(void)const
webkit/pending/kurl.h WebCore::KURL::string(void)const
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
?A0x40e06119::ResourceLoaderBridgeImpl::Start(Peer::ResourceLoaderBridge::webkit_glue *) [test_shell_tests.exe]
Alloc Location
...
webkit/tools/test_shell/simple_resource_loader_bridge.cc ResourceLoaderBridgeImpl::Start(Peer::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^
WebCore::AllocCache<StringImpl::WebCore,5>::new(UINT) [test_shell_tests.exe]
Alloc Location
...
webkit/port/platform/alloccache.h WebCore::AllocCache::new(UINT)
webkit/pending/stringimpl.cpp WebCore::StringImpl::create(char const*,UINT)
webkit/pending/string.cpp WebCore::String::String(char const*,UINT)
webkit/glue/glue_util.cc webkit_glue::StdStringToString(basic_string::std const&)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::userAgent(KURL::WebCore const&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::applyUserAgent(ResourceRequest::WebCore&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::addExtraFieldsToRequest(ResourceRequest::WebCore&,bool,bool)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::startLoadingMainResource(DWORD)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueLoadAfterWillSubmitForm(PolicyAction::WebCore)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueLoadAfterNavigationPolicy(ResourceRequest::WebCore const&,PassRefPtr::WTF,bool)
webkit/pending/frameloader.cpp WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void *,ResourceRequest::WebCore const&,PassRefPtr::WTF,bool)
webkit/pending/frameloader.cpp WebCore::PolicyCheck::call(bool)
webkit/pending/frameloader.cpp WebCore::FrameLoader::continueAfterNavigationPolicy(PolicyAction::WebCore)
webkit/glue/webframeloaderclient_impl.cc WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction((FrameLoader::WebCore::*)(void),...)
webkit/pending/frameloader.cpp WebCore::FrameLoader::checkNavigationPolicy(ResourceRequest::WebCore const&,DocumentLoader::WebCore *,PassRefPtr::WTF,(*)(void *,ResourceRequest::WebCore const&,PassRefPtr::WTF,bool),void *)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(DocumentLoader::WebCore *,FrameLoadType::WebCore,PassRefPtr::WTF)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(DocumentLoader::WebCore *)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(ResourceRequest::WebCore const&,SubstituteData::WebCore const&)
webkit/pending/frameloader.cpp WebCore::FrameLoader::load(ResourceRequest::WebCore const&)
webkit/glue/webframe_impl.cc WebFrameImpl::LoadRequest(WebRequest *,SubstituteData::WebCore const&)
webkit/glue/webframe_impl.cc WebFrameImpl::LoadRequest(WebRequest *)
webkit/tools/test_shell/test_shell.cc TestShell::Navigate(NavigationEntry const&,bool)
webkit/tools/test_shell/test_navigation_controller.cc TestNavigationController::NavigateToPendingEntry(bool)
webkit/tools/test_shell/temp/navigation_controller_base.cc NavigationControllerBase::LoadEntry(NavigationEntry *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURLForFrame(wchar_t const *,wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::LoadURL(wchar_t const *)
webkit/tools/test_shell/test_shell.cc TestShell::Initialize(class std::basic_string const &)
webkit/tools/test_shell/test_shell.cc TestShell::CreateNewWindow(class std::basic_string const &,class TestShell * *)
webkit/tools/test_shell/test_shell_test.cc TestShellTest::CreateEmptyWindow(void)
webkit_glue::ResourceLoaderBridge::Create(WebFrame *,basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,GURL const&,GURL const&,GURL const&,basic_string<char,char_traits<char>::std,allocator<char>::std>::std const&,int,int,Type::ResourceType,bool) [test_shell_tests.exe]
Alloc Location
...
webkit/tools/test_shell/simple_resource_loader_bridge.cc webkit_glue::ResourceLoaderBridge::Create(WebFrame *,basic_string::std const&,GURL const&,GURL const&,GURL const&,basic_string::std const&,int,int,Type::ResourceType,bool)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandleInternal::Start(SyncLoadResponse::ResourceLoaderBridge::webkit_glue *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::start(Frame::WebCore *)
webkit/glue/resource_handle_win.cc WebCore::ResourceHandle::create(ResourceRequest::WebCore const&,ResourceHandleClient::WebCore *,Frame::WebCore *,bool,bool,bool)
webkit/glue/resource_fetcher.cc ResourceFetcher::Start(Frame::WebCore *)
webkit/glue/resource_fetcher.cc ResourceFetcher::ResourceFetcher(GURL const&,Frame::WebCore *,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher.cc ResourceFetcherWithTimeout::ResourceFetcherWithTimeout(GURL const&,Frame::WebCore *,double,Delegate::ResourceFetcher *)
webkit/glue/resource_fetcher_unittest.cc ResourceFetcherTests_ResourceFetcherTimeout_Test::TestBody(void)
testing/gtest/src/gtest.cc testing::Test::Run(void)
^^^

@ -1,78 +0,0 @@
Uninitialized memory read in v8::TryCatch::CanContinue(void)const
Error Location
v8/src/api.cc v8::TryCatch::CanContinue(void)const
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::invokeEventHandler(Handle::v8,Event::WebCore *,Handle::v8,bool)
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::handleEvent(Event::WebCore *,bool)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::handleEvent(Event::WebCore *,bool,Vector::WTF *)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::dispatchEventWithDocumentAsTarget(PassRefPtr::WTF,Vector::WTF *)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::dispatchLoadEvent(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::dispatchLoadEvent(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::implicitClose(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::checkCallImplicitClose(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::checkCompleted(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::finishedParsing(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::finishedParsing(void)
third_party/webkit/webcore/html/htmlparser.cpp WebCore::HTMLParser::finished(void)
third_party/webkit/webcore/html/htmltokenizer.cpp WebCore::HTMLTokenizer::end(void)
third_party/webkit/webcore/html/htmltokenizer.cpp WebCore::HTMLTokenizer::finish(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::finishParsing(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::endIfNotLoadingMainResource(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::end(void)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::finishedLoading(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::finishedLoading(void)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::didFinishLoading(void)
third_party/webkit/webcore/loader/resourceloader.cpp WebCore::ResourceLoader::didFinishLoading(ResourceHandle::WebCore *)
third_party/webkit/webkit/chromium/src/resourcehandle.cpp WebCore::ResourceHandleInternal::didFinishLoading(WebURLLoader::WebKit *)
webkit/glue/weburlloader_impl.cc webkit_glue::WebURLLoaderImpl::Context::OnCompletedRequest(URLRequestStatus const&,basic_string::std const&)
webkit/tools/test_shell/simple_resource_loader_bridge.cc RequestProxy::NotifyCompletedRequest(URLRequestStatus const&,basic_string::std const&)
base/tuple.h ?DispatchToMethod@VRequestProxy@?A0x517e93eb@@P812@AEXABVURLRequestStatus@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@ZV3@V45@@@YAXPAVRequestProxy@?A0x517e93eb@@P801@AEXABVURLRequestStatus@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@ZABU?$Tuple2@VURLRequestStatus@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@@Z
^^^
Uninitialized memory read in v8::TryCatch::CanContinue(void)const
Error Location
v8/src/api.cc v8::TryCatch::CanContinue(void)const
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::invokeEventHandler(Handle::v8,Event::WebCore *,Handle::v8,bool)
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::handleEvent(Event::WebCore *,bool)
third_party/webkit/webcore/dom/node.cpp WebCore::Node::handleLocalEvents(Event::WebCore *,bool)
third_party/webkit/webcore/dom/node.cpp WebCore::Node::dispatchGenericEvent(PassRefPtr::WTF)
third_party/webkit/webcore/dom/node.cpp WebCore::Node::dispatchEvent(PassRefPtr::WTF,int&)
third_party/webkit/webcore/html/htmlmediaelement.cpp WebCore::HTMLMediaElement::asyncEventTimerFired(Timer::WebCore *)
third_party/webkit/webcore/platform/timer.h WebCore::Timer::fired(void)
third_party/webkit/webcore/platform/threadtimers.cpp WebCore::ThreadTimers::sharedTimerFiredInternal(void)
third_party/webkit/webcore/platform/threadtimers.cpp WebCore::ThreadTimers::sharedTimerFired(void)
webkit/glue/webkitclient_impl.h webkit_glue::WebKitClientImpl::DoTimeout(void)
base/tuple.h ?DispatchToMethod@VWebKitClientImpl@webkit_glue@@P812@AEXXZ@@YAXPAVWebKitClientImpl@webkit_glue@@P801@AEXXZABUTuple0@@@Z
^^^
Uninitialized memory read in v8::TryCatch::CanContinue(void)const
Error Location
v8/src/api.cc v8::TryCatch::CanContinue(void)const
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::invokeEventHandler(Handle::v8,Event::WebCore *,Handle::v8,bool)
third_party/webkit/webcore/bindings/v8/v8abstracteventlistener.cpp WebCore::V8AbstractEventListener::handleEvent(Event::WebCore *,bool)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::handleEvent(Event::WebCore *,bool,Vector::WTF *)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::dispatchEventWithDocumentAsTarget(PassRefPtr::WTF,Vector::WTF *)
third_party/webkit/webcore/page/domwindow.cpp WebCore::DOMWindow::dispatchLoadEvent(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::dispatchLoadEvent(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::implicitClose(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::checkCallImplicitClose(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::checkCompleted(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::finishedParsing(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::finishedParsing(void)
third_party/webkit/webcore/html/htmlparser.cpp WebCore::HTMLParser::finished(void)
third_party/webkit/webcore/html/htmltokenizer.cpp WebCore::HTMLTokenizer::end(void)
third_party/webkit/webcore/html/htmltokenizer.cpp WebCore::HTMLTokenizer::finish(void)
third_party/webkit/webcore/dom/document.cpp WebCore::Document::finishParsing(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::endIfNotLoadingMainResource(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::end(void)
third_party/webkit/webcore/loader/documentloader.cpp WebCore::DocumentLoader::finishedLoading(void)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::finishedLoading(void)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::didFinishLoading(void)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::continueAfterContentPolicy(PolicyAction::WebCore,ResourceResponse::WebCore const&)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::continueAfterContentPolicy(PolicyAction::WebCore)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::callContinueAfterContentPolicy(void *,PolicyAction::WebCore)
third_party/webkit/webcore/loader/frameloader.cpp WebCore::FrameLoader::checkContentPolicy(String::WebCore const&,(*)(void *,PolicyAction::WebCore),void *)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::didReceiveResponse(ResourceResponse::WebCore const&)
third_party/webkit/webcore/loader/mainresourceloader.cpp WebCore::MainResourceLoader::handleDataLoadNow(Timer::WebCore *)
third_party/webkit/webcore/platform/timer.h WebCore::Timer::fired(void)
third_party/webkit/webcore/platform/threadtimers.cpp WebCore::ThreadTimers::sharedTimerFiredInternal(void)
third_party/webkit/webcore/platform/threadtimers.cpp WebCore::ThreadTimers::sharedTimerFired(void)