Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: base/profiler/win32_stack_frame_unwinder_unittest.cc

Issue 1465273002: Stack sampling profiler: remove RUNTIME_FUNCTION sanity check (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: make variations add to 100 Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/profiler/win32_stack_frame_unwinder.h" 9 #include "base/profiler/win32_stack_frame_unwinder.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder(); 368 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
369 CONTEXT context = {0}; 369 CONTEXT context = {0};
370 ScopedModuleHandle module; 370 ScopedModuleHandle module;
371 unwind_functions_->SetNoRuntimeFunction(image_base_for_questionable_module, 371 unwind_functions_->SetNoRuntimeFunction(image_base_for_questionable_module,
372 &context); 372 &context);
373 EXPECT_TRUE(unwinder->TryUnwind(&context, &module)); 373 EXPECT_TRUE(unwinder->TryUnwind(&context, &module));
374 EXPECT_TRUE(module.IsValid()); 374 EXPECT_TRUE(module.IsValid());
375 } 375 }
376 } 376 }
377 377
378 // Checks that frames with RUNTIME_FUNCTION structures with nonsensical values
379 // are not unwound.
380 TEST_F(Win32StackFrameUnwinderTest, RuntimeFunctionSanityCheck) {
381 const DWORD64 image_base_for_sanity_check = 3072;
382 {
383 // Test the expected case: end address greater than begin address and
384 // instruction pointer between the two.
385 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
386 CONTEXT context = {0};
387 ScopedModuleHandle module;
388 RUNTIME_FUNCTION runtime_function = {0};
389 runtime_function.BeginAddress = 128;
390 runtime_function.EndAddress = 512;
391 unwind_functions_->SetHasRuntimeFunction(image_base_for_sanity_check,
392 runtime_function, 256,
393 &context);
394 EXPECT_TRUE(unwinder->TryUnwind(&context, &module));
395 EXPECT_TRUE(module.IsValid());
396 }
397
398 {
399 // Test begin address greater than end address.
400 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
401 CONTEXT context = {0};
402 ScopedModuleHandle module;
403 RUNTIME_FUNCTION runtime_function = {0};
404 runtime_function.BeginAddress = 512;
405 runtime_function.EndAddress = 128;
406 unwind_functions_->SetHasRuntimeFunction(image_base_for_sanity_check,
407 runtime_function, 256,
408 &context);
409 EXPECT_FALSE(unwinder->TryUnwind(&context, &module));
410 }
411
412 {
413 // Test instruction pointer before begin address.
414 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
415 CONTEXT context = {0};
416 ScopedModuleHandle module;
417 RUNTIME_FUNCTION runtime_function = {0};
418 runtime_function.BeginAddress = 128;
419 runtime_function.EndAddress = 512;
420 unwind_functions_->SetHasRuntimeFunction(image_base_for_sanity_check,
421 runtime_function, 50,
422 &context);
423 EXPECT_FALSE(unwinder->TryUnwind(&context, &module));
424 }
425
426 {
427 // Test instruction pointer after end address.
428 scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
429 CONTEXT context = {0};
430 ScopedModuleHandle module;
431 RUNTIME_FUNCTION runtime_function = {0};
432 runtime_function.BeginAddress = 128;
433 runtime_function.EndAddress = 512;
434 unwind_functions_->SetHasRuntimeFunction(image_base_for_sanity_check,
435 runtime_function, 600,
436 &context);
437 EXPECT_FALSE(unwinder->TryUnwind(&context, &module));
438 }
439 }
440
441 } // namespace base 378 } // namespace base
OLDNEW
« no previous file with comments | « base/profiler/win32_stack_frame_unwinder.cc ('k') | chrome/browser/stack_sampling_configuration.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698