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

Side by Side Diff: src/client/linux/minidump_writer/minidump_writer.cc

Issue 1299593003: Remove obsolete seccomp_unwinder for legacy (pre-BPF) sandbox (Closed) Base URL: http://google-breakpad.googlecode.com/svn/trunk
Patch Set: Rebase Created 5 years, 4 months 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 | Annotate | Revision Log
« no previous file with comments | « src/client/linux/microdump_writer/microdump_writer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010, Google Inc. 1 // Copyright (c) 2010, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 #endif 57 #endif
58 #include <sys/types.h> 58 #include <sys/types.h>
59 #include <sys/ucontext.h> 59 #include <sys/ucontext.h>
60 #include <sys/user.h> 60 #include <sys/user.h>
61 #include <sys/utsname.h> 61 #include <sys/utsname.h>
62 #include <time.h> 62 #include <time.h>
63 #include <unistd.h> 63 #include <unistd.h>
64 64
65 #include <algorithm> 65 #include <algorithm>
66 66
67 #include "client/linux/dump_writer_common/seccomp_unwinder.h"
68 #include "client/linux/dump_writer_common/thread_info.h" 67 #include "client/linux/dump_writer_common/thread_info.h"
69 #include "client/linux/dump_writer_common/ucontext_reader.h" 68 #include "client/linux/dump_writer_common/ucontext_reader.h"
70 #include "client/linux/handler/exception_handler.h" 69 #include "client/linux/handler/exception_handler.h"
71 #include "client/linux/minidump_writer/cpu_set.h" 70 #include "client/linux/minidump_writer/cpu_set.h"
72 #include "client/linux/minidump_writer/line_reader.h" 71 #include "client/linux/minidump_writer/line_reader.h"
73 #include "client/linux/minidump_writer/linux_dumper.h" 72 #include "client/linux/minidump_writer/linux_dumper.h"
74 #include "client/linux/minidump_writer/linux_ptrace_dumper.h" 73 #include "client/linux/minidump_writer/linux_ptrace_dumper.h"
75 #include "client/linux/minidump_writer/proc_cpuinfo_reader.h" 74 #include "client/linux/minidump_writer/proc_cpuinfo_reader.h"
76 #include "client/minidump_file_writer.h" 75 #include "client/minidump_file_writer.h"
77 #include "common/linux/linux_libc_support.h" 76 #include "common/linux/linux_libc_support.h"
(...skipping 10 matching lines...) Expand all
88 using google_breakpad::LinuxDumper; 87 using google_breakpad::LinuxDumper;
89 using google_breakpad::LinuxPtraceDumper; 88 using google_breakpad::LinuxPtraceDumper;
90 using google_breakpad::MDTypeHelper; 89 using google_breakpad::MDTypeHelper;
91 using google_breakpad::MappingEntry; 90 using google_breakpad::MappingEntry;
92 using google_breakpad::MappingInfo; 91 using google_breakpad::MappingInfo;
93 using google_breakpad::MappingList; 92 using google_breakpad::MappingList;
94 using google_breakpad::MinidumpFileWriter; 93 using google_breakpad::MinidumpFileWriter;
95 using google_breakpad::PageAllocator; 94 using google_breakpad::PageAllocator;
96 using google_breakpad::ProcCpuInfoReader; 95 using google_breakpad::ProcCpuInfoReader;
97 using google_breakpad::RawContextCPU; 96 using google_breakpad::RawContextCPU;
98 using google_breakpad::SeccompUnwinder;
99 using google_breakpad::ThreadInfo; 97 using google_breakpad::ThreadInfo;
100 using google_breakpad::TypedMDRVA; 98 using google_breakpad::TypedMDRVA;
101 using google_breakpad::UContextReader; 99 using google_breakpad::UContextReader;
102 using google_breakpad::UntypedMDRVA; 100 using google_breakpad::UntypedMDRVA;
103 using google_breakpad::wasteful_vector; 101 using google_breakpad::wasteful_vector;
104 102
105 typedef MDTypeHelper<sizeof(void*)>::MDRawDebug MDRawDebug; 103 typedef MDTypeHelper<sizeof(void*)>::MDRawDebug MDRawDebug;
106 typedef MDTypeHelper<sizeof(void*)>::MDRawLinkMap MDRawLinkMap; 104 typedef MDTypeHelper<sizeof(void*)>::MDRawLinkMap MDRawLinkMap;
107 105
108 class MinidumpWriter { 106 class MinidumpWriter {
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 374
377 TypedMDRVA<RawContextCPU> cpu(&minidump_writer_); 375 TypedMDRVA<RawContextCPU> cpu(&minidump_writer_);
378 if (!cpu.Allocate()) 376 if (!cpu.Allocate())
379 return false; 377 return false;
380 my_memset(cpu.get(), 0, sizeof(RawContextCPU)); 378 my_memset(cpu.get(), 0, sizeof(RawContextCPU));
381 #if !defined(__ARM_EABI__) && !defined(__mips__) 379 #if !defined(__ARM_EABI__) && !defined(__mips__)
382 UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_); 380 UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_);
383 #else 381 #else
384 UContextReader::FillCPUContext(cpu.get(), ucontext_); 382 UContextReader::FillCPUContext(cpu.get(), ucontext_);
385 #endif 383 #endif
386 if (stack_copy)
387 SeccompUnwinder::PopSeccompStackFrame(cpu.get(), thread, stack_copy);
388 thread.thread_context = cpu.location(); 384 thread.thread_context = cpu.location();
389 crashing_thread_context_ = cpu.location(); 385 crashing_thread_context_ = cpu.location();
390 } else { 386 } else {
391 ThreadInfo info; 387 ThreadInfo info;
392 if (!dumper_->GetThreadInfoByIndex(i, &info)) 388 if (!dumper_->GetThreadInfoByIndex(i, &info))
393 return false; 389 return false;
394 390
395 uint8_t* stack_copy; 391 uint8_t* stack_copy;
396 int max_stack_len = -1; // default to no maximum for this thread 392 int max_stack_len = -1; // default to no maximum for this thread
397 if (minidump_size_limit_ >= 0 && i >= kLimitBaseThreadCount) 393 if (minidump_size_limit_ >= 0 && i >= kLimitBaseThreadCount)
398 max_stack_len = extra_thread_stack_len; 394 max_stack_len = extra_thread_stack_len;
399 if (!FillThreadStack(&thread, info.stack_pointer, max_stack_len, 395 if (!FillThreadStack(&thread, info.stack_pointer, max_stack_len,
400 &stack_copy)) 396 &stack_copy))
401 return false; 397 return false;
402 398
403 TypedMDRVA<RawContextCPU> cpu(&minidump_writer_); 399 TypedMDRVA<RawContextCPU> cpu(&minidump_writer_);
404 if (!cpu.Allocate()) 400 if (!cpu.Allocate())
405 return false; 401 return false;
406 my_memset(cpu.get(), 0, sizeof(RawContextCPU)); 402 my_memset(cpu.get(), 0, sizeof(RawContextCPU));
407 info.FillCPUContext(cpu.get()); 403 info.FillCPUContext(cpu.get());
408 if (stack_copy)
409 SeccompUnwinder::PopSeccompStackFrame(cpu.get(), thread, stack_copy);
410 thread.thread_context = cpu.location(); 404 thread.thread_context = cpu.location();
411 if (dumper_->threads()[i] == GetCrashThread()) { 405 if (dumper_->threads()[i] == GetCrashThread()) {
412 crashing_thread_context_ = cpu.location(); 406 crashing_thread_context_ = cpu.location();
413 if (!dumper_->IsPostMortem()) { 407 if (!dumper_->IsPostMortem()) {
414 // This is the crashing thread of a live process, but 408 // This is the crashing thread of a live process, but
415 // no context was provided, so set the crash address 409 // no context was provided, so set the crash address
416 // while the instruction pointer is already here. 410 // while the instruction pointer is already here.
417 dumper_->set_crash_address(info.GetInstructionPointer()); 411 dumper_->set_crash_address(info.GetInstructionPointer());
418 } 412 }
419 } 413 }
(...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 const MappingList& mappings, 1358 const MappingList& mappings,
1365 const AppMemoryList& appmem, 1359 const AppMemoryList& appmem,
1366 LinuxDumper* dumper) { 1360 LinuxDumper* dumper) {
1367 MinidumpWriter writer(filename, -1, NULL, mappings, appmem, dumper); 1361 MinidumpWriter writer(filename, -1, NULL, mappings, appmem, dumper);
1368 if (!writer.Init()) 1362 if (!writer.Init())
1369 return false; 1363 return false;
1370 return writer.Dump(); 1364 return writer.Dump();
1371 } 1365 }
1372 1366
1373 } // namespace google_breakpad 1367 } // namespace google_breakpad
OLDNEW
« no previous file with comments | « src/client/linux/microdump_writer/microdump_writer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698