Commit graph

135 commits

Author SHA1 Message Date
qsr@chromium.org
5d7f694f27 Creating minidump for uncaught exception on iOS.
This CL adds a minidump_generator that can write a minidump from a NSException
on iOS on an ARM cpu.

 This CL also install an uncaught exception handler on iOS, and use the
previous generator to write minidumps for any uncaught exception.
Review URL: https://breakpad.appspot.com/347001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@916 4c0a9323-5329-0410-9bdc-e9ce6186880e
2012-02-14 08:46:26 +00:00
mark@chromium.org
8e3dcd5a02 createDirectoryAtPath:attributes: is deprecated, use the suggested (10.5+)
replacement.

Patch by Nico Weber <thakis@chromium.org>

Review URL: https://breakpad.appspot.com/349001/


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@915 4c0a9323-5329-0410-9bdc-e9ce6186880e
2012-02-09 20:31:08 +00:00
mark@chromium.org
a4c66ebff5 Fix clang warning about format string.
Patch by Nico Weber <thakis@chromium.org>.

Review URL: https://breakpad.appspot.com/348001/


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@914 4c0a9323-5329-0410-9bdc-e9ce6186880e
2012-02-09 20:30:31 +00:00
mark@chromium.org
3aa10d2a87 NXSwapBigIntToHost is deprecated, use CFSwapInt32BigToHost instead.
Patch by Nico Weber <thakis@chromium.org>


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@913 4c0a9323-5329-0410-9bdc-e9ce6186880e
2012-02-06 17:33:12 +00:00
mark@chromium.org
1197f761a4 Fix several clang warnings in breakpad.
uploader.mm:549:5: warning: instance method '-uploadData:name:url:' not found (return type defaults to 'id')
[self uploadData:logFileData_ name:@"log" url:url];
=> it looks like this method does in fact not exist, the last parameter
needs to be removed.

breakpad_nlist_64.cc:193:59: warning: '&&' within '||' [-Wlogical-op-parentheses]
=> Just add parentheses, no functionality change.

Patch by Nico Weber <thakis@chromium.org>

BUG=none
TEST=breakpad stil works.


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@907 4c0a9323-5329-0410-9bdc-e9ce6186880e
2012-01-26 19:05:31 +00:00
qsr@chromium.org
e6a2f54c4d Create a static library to use Breakpad on iOS.
This obliged me to move BreakpadDefines.h to src/client/apple/Framework/BreakpadDefines.h
Review URL: http://breakpad.appspot.com/329001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@889 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-11-23 16:14:35 +00:00
qsr@chromium.org
bad70be095 Correct compilation warning.
1) Modify src/common/mac/macho_walker.cc to remove a signed  vs unsigned comparison.

 2) Replace mktemp in test using AutoTmpDir that has been moved from client/mac/tests to common/tests.
Review URL: http://breakpad.appspot.com/328001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@888 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-11-23 14:22:05 +00:00
ted.mielczarek
84571a2b91 Rename md5.c to md5.cc, put its contents inside the google_breakpad namespace.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@887 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-11-18 21:40:27 +00:00
qsr@chromium.org
976930db64 Add an API to Breakpad to upload custom file to the crash server.
On iOS, sending logs using the usual breakpad behavior is not possible, because
tar is not available. This allow to use Breakpad to send any file to the crash
server.

R=mark@chromium.org
Review URL: http://breakpad.appspot.com/327001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@885 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-11-16 17:04:28 +00:00
stuartmorgan
b2196565bd Fix several error-case leaks on the Mac found by clang analysis
Review URL: http://breakpad.appspot.com/325001


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@884 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-11-14 13:16:19 +00:00
qsr@chromium.org
ec24b1b19e Add mach_vm_deallocate to the set of function not available on iOS5.
Review URL: http://breakpad.appspot.com/318003

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@880 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-24 15:16:10 +00:00
qsr@chromium.org
09de69eca1 Do not use mach_vm.h on iOS.
mach_vm.h has been removed from iOS5. Use #define to use vm_ replacement of
mach_vm_ functions on iOS.

 Do not use mach_vm_allocate -> use a stack variable instead.
Review URL: http://breakpad.appspot.com/321001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@879 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-24 14:58:12 +00:00
qsr@chromium.org
446616ee22 Allow to retrieve id of a module from memory instead of going to disk for iOS.
Allow macho_id and macho_walker to read data from memory.
 Wire up this when reading module on iOS.
Review URL: http://breakpad.appspot.com/319001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@873 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-20 15:22:48 +00:00
qsr@chromium.org
375928a0a6 Breakpad implementation for ios.
To be noted:
 1) All is done in process, as multi-process is not allowed on ios.
 2) Dump are saved when a crash occures but are not automatically send to the
    server.
 3) Breakpad.h contains function to check if a dump must be uploaded, and to
    upload a dump.
 4) The code is copy pasting a log of Breakpad implementation for Mac OS. It
    might be possible to do some refactoring.
Review URL: http://breakpad.appspot.com/309003

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@868 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-12 14:00:19 +00:00
mark@chromium.org
6669714772 Remove duplicate definition of GTMLoggerDebug.
The actual defintion comes from common/mac/GTMLogger.h, #imported above.

This removes a compilation warning that showed up in r853:

uploader.m:52:9: warning: 'GTMLoggerDebug' macro redefined
GTMLogger.h:339:9: note: previous definition is here
Review URL: http://breakpad.appspot.com/310002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@859 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-11 17:37:32 +00:00
qsr@chromium.org
f53e77c011 Adding missing method.
parameters method was missing on Uploader.
Review URL: http://breakpad.appspot.com/312001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@858 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-11 16:55:19 +00:00
mark@chromium.org
3473acb12e #include BreakpadDefines.h as "BreakpadDefines.h" and not
<Breakpad/BreakpadDefines.h>.

During the build of Breakpad itself (especially in Chromium), there is no
Breakpad.framework/Headers in which to locate BreakpadDefines.h, so the
framework-style #include of <Breakpad/BreakpadDefines.h> is not able to find
anything to #include. Using the "BreakpadDefines.h" form should always locate
this file next to Breakpad.h whether it's in the framework or in the source
tree.

This fixes a Chromium build regression caused by Breakpad r856.
Review URL: http://breakpad.appspot.com/313001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@857 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-11 16:47:47 +00:00
qsr@chromium.org
0775bfd7ab Extract constants from Breakpad.h.
This is done to allow ios implementation to use the same constants.
Review URL: http://breakpad.appspot.com/311001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@856 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-11 14:40:57 +00:00
qsr@chromium.org
b958379739 Handle ios dump.
This change add a flag for ios minidumps and allow handler to recognize it.

 It doesn't recognize arm specific exceptions that will be logged as unknown
type.
Review URL: http://breakpad.appspot.com/311002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@855 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-11 14:17:02 +00:00
qsr@chromium.org
bf747d2dbb Extract the uploader process from crash_report_sender
The aim is to separate the process itself from the view, to be able to
reuse the process on the iOS platform.
Review URL: http://breakpad.appspot.com/309002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@853 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-10 14:40:26 +00:00
qsr@chromium.org
da1c36d03e Extracting the config file class from the Inspector to be able to reuse it.
This will be needed for iOS implementation, where the Inspector won't be
used, but where a config file will still be needed, because the uploads
won't happen just after the crash, but on a next run.
Review URL: http://breakpad.appspot.com/309001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@852 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-10 14:02:29 +00:00
qsr@chromium.org
9525fcd633 #ifdef cpu specific code.
Review URL: http://breakpad.appspot.com/307002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@848 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-07 15:57:23 +00:00
mark@chromium.org
be368a3d4a 10.4 SDK fix
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@847 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-06 18:03:17 +00:00
mark@chromium.org
405bb7aff7 Address review comments from r843 (http://breakpad.appspot.com/307001)
Review URL: http://breakpad.appspot.com/308001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@844 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-05 22:32:27 +00:00
mark@chromium.org
1e9dbde88a Ensure crash reports will be uploaded on the Mac.
Regression from Breakpad r842 (Chromium r103778) - browser crash reports were
uploaded, but renderer crash reports were not. Messages such as these may have
been logged:

com.apple.launchd.peruser.x[y] could not lookup DNS configuration info
service: (ipc/send) invalid destination port
com.apple.launchd.peruser.x[y] Breakpad Reporter: Send Error: Error
Domain=NSURLErrorDomain Code=-1009 UserInfo=z "This computer’s Internet
connection appears to be offline." Underlying Error=(Error
Domain=kCFErrorDomainCFNetwork Code=-1009 UserInfo=w "This computer’s Internet
connection appears to be offline.")

When OnDemandServer establishes the bootstrap subset, it will now register the
parent bootstrap port in the subset namespace so that the Inspector can
recover this port and switch to it. The Sender, launched by the Inspector,
relies on the bootstrap port being set properly.

BUG=chromium:99252
TEST=All test cases from Chromium r103778 (bug chromium:28547) plus:
     about:crash should generate a crash report which should be uploaded,
     provided that throttling is not in effect. Remove or edit
     ~/Library/Preferences/com.Breakpad.crash_report_sender.plist to defeat
     throttling. Also verify that about:inducebrowsercrashforrealz works.
Review URL: http://breakpad.appspot.com/307001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@843 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-05 21:58:10 +00:00
mark@chromium.org
e7b75dbcc3 Use a bootstrap subset port for the inspector, tying the subset to the
lifetime of the task to be monitored, the invoking task. This allows the
bootstrap server (in launchd) to automatically clean up the Mach server
registration when the task being monitored exits, avoiding leaks of
com.Breakpad.Inspector(pid) ports in "launchctl bslist".

BUG=chromium:28547
TEST=Handler should still crash catches, but inspector ports should no longer
     show up in "launchctl bslist". They should show up under a subset port in
     "launchctl bstree" instead. "launchctl bstree" must be invoked as root.
Review URL: http://breakpad.appspot.com/306001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@842 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-10-03 19:54:28 +00:00
mark@chromium.org
9dfe692010 Fix some compilation warnings and other errors due to API changes
Review URL: http://breakpad.appspot.com/305002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@841 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-09-29 16:14:01 +00:00
mark@chromium.org
742e915661 Build the Mac Breakpad utilities with the 10.5 SDK in x86_64 Debug mode. This
was already the SDK being used for x86_64 Release mode. The 10.6 SDK is not
necessary.

Explicitly set the file encoding to UTF-16 on the sender app's lproj's
InfoPlist.strings and Localizable.strings files.

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@840 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-09-28 20:10:34 +00:00
mark@chromium.org
86901970f2 Fix encoding of breakpad/src/client/mac/testapp/English.lproj/InfoPlist.strings
in breakpad/src/client/mac/Breakpad.xcodeproj - it's UTF-16, not UTF-8.


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@839 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-09-27 22:01:13 +00:00
mark@chromium.org
1f17be3171 Fix totally busted-up project file that was, for the most part, wrong for
non-Debug configurations and was probably even a little wrong for Debug too.


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@837 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-09-27 21:17:04 +00:00
mark@chromium.org
93257311a1 Fix a Breakpad crash during teardown when USE_PROTECTED_ALLOCATIONS is in
effect.

BUG=none
TEST=Apple Crash Reporter logs from processes in which Breakpad handles the
     crash should point the finger at the actual crash source, not the
     Breakpad thread's attempt to write to unwritable memory.
Review URL: http://breakpad.appspot.com/301001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@828 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-26 22:29:33 +00:00
mark@chromium.org
ce8d2156e8 Add missing (parentehses.)
BUG=247, chromium:94107
TEST=Minidump file sizes should be manageable
Review URL: http://breakpad.appspot.com/300002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@827 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-26 21:37:59 +00:00
mark@chromium.org
60a883212f Fix CalculateStackSize to behave properly when the main thread's stack is
split up into multiple regions.

An older workaround relyied on known fixed stack locations and only filled in
the initial page of the stack if it was in a distinct region. The new approach
looks upwards for additional regions that appear to be part of the same stack.

With PIE on Lion, the stack no longer begins at a fixed address, so the older
workaround became ineffective.

BUG=247, chromium:94107
TEST=Stacks should run through to _main/start and then stop when examining
     Chrome on Lion with PIE and "slid" stacks.
Review URL: http://breakpad.appspot.com/300001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@826 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-25 21:19:29 +00:00
mark@chromium.org
7b8b8632d3 The process_id field is unsigned, so we need this cast in c++0x.
Patch by Rafael Ávila de Espí­ndola <respindola@mozilla.com>

https://bugzilla.mozilla.org/show_bug.cgi?id=677644


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@825 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-11 13:47:38 +00:00
mark@chromium.org
8f2b058398 Fix clang warnings.
Review URL: http://breakpad.appspot.com/298002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@823 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-11 13:40:13 +00:00
mark@chromium.org
ba5ee2c8f5 Remove a bogus const.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@821 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-08-10 15:29:52 +00:00
ted.mielczarek
1b9920afa7 Fix a typo in r817
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@820 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-07-27 18:29:37 +00:00
mark@chromium.org
e919fdd63b Wean Mac Breakpad off of its OpenSSL libcrypto dependency.
This libcrypto dependency sucks. Linking against OpenSSL is sort of broken in
certain Mac OS X SDKs. libcrypto was only being used to provide an MD5
implementation. Breakpad already has its own MD5 implementation, so just use
that instead.

To be perfectly honest, on modern systems, nothing should be making MD5
hashes of modules anyway, because everything has an embedded LC_UUID.

The project file changes just remove libcrypto and add md5.c as needed.

A bonus (and untested) fix for on_demand_symbol_supplier.mm is included to
account for changes in r794.
Review URL: http://breakpad.appspot.com/296001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@819 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-07-27 14:30:58 +00:00
ted.mielczarek@gmail.com
d01a9f8bc4 Fix compilation using the OS X 10.7 SDK by #ifdefing out PPC support when targeting 10.7, as PPC support has been removed from the 10.7 SDK
A=Rafael Ávila de Espíndola <respindola@mozilla.com>, R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=673789

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@817 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-07-26 12:00:20 +00:00
mmentovai
fd557e4a97 Use task_info(..., TASK_DYLD_INFO, ...) on 10.6 and later in preference to
looking up the _dyld_all_image_infos symbol in /usr/lib/dyld.
Review URL: http://breakpad.appspot.com/276001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@786 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-04-05 16:05:17 +00:00
ted.mielczarek
d328f2011f Rename duplicate argument names to make it compile with CLang.
P=rafael.espindola R=ted at http://breakpad.appspot.com/248001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@765 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-01-25 20:01:26 +00:00
stuart.morgan
816f25011c Make localization resizing of Mac uploader email line more robust. Review URL: http://breakpad.appspot.com/247001
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@749 4c0a9323-5329-0410-9bdc-e9ce6186880e
2011-01-05 05:34:47 +00:00
stuartmorgan
717bf0ded2 Keep a log of uploaded crash IDs on the Mac. Review URL: http://breakpad.appspot.com/245001
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@748 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-17 20:41:22 +00:00
ted.mielczarek@gmail.com
c45b12b422 Fix MinidumpGenerator::WriteExceptionStream for writing cross-architecture dumps
R=mark at http://breakpad.appspot.com/244001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@747 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-16 22:52:38 +00:00
ted.mielczarek@gmail.com
0344a368de Allow out-of-process minidump generation to work on processes of a different CPU architecture
R=mark at http://breakpad.appspot.com/241001

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@746 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-15 21:55:56 +00:00
ted.mielczarek@gmail.com
0d9bd40775 Allow writing on-request minidumps with an exception stream
R=mark at http://breakpad.appspot.com/172001/show

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@745 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-15 16:28:28 +00:00
ted.mielczarek@gmail.com
cae59b4ae4 issue 334 - Fix a race condition between ExceptionHandler::Teardown and ExceptionHandler::WaitForMessage on OS X
R=mark at http://breakpad.appspot.com/165001/show

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@744 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-15 16:28:22 +00:00
ted.mielczarek
efbe428d83 Add some unit tests for the mac MinidumpGenerator
R=mark at http://breakpad.appspot.com/240001/show

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@742 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-12-13 22:10:32 +00:00
ted.mielczarek
30b075c4a5 Fix WriteMemoryListStream to remove an extraneous loop index variable increment.
Patch by timeless <timeless@mozdev.org>, R=me, unittest by me.
See https://bugzilla.mozilla.org/show_bug.cgi?id=615534

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@735 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-11-30 19:19:31 +00:00
ted.mielczarek
4621ee0691 Write a window of memory around the instruction pointer from the crashing thread to the minidump on OS X.
R=nealsid at http://breakpad.appspot.com/200001/show

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@699 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-09-23 14:55:50 +00:00