aboutsummaryrefslogtreecommitdiff
path: root/src/client/ios
Commit message (Collapse)AuthorAgeFilesLines
* There is no need to use the main queue just for perform selector.George Kola2017-02-131-34/+31
| | | | | | | | | | | | | | | | | | | | | | | | | We were using the main queue to queue up a perform selector and then the code [self sendStoredCrashReports] was immediately doing a dispatch_async. This unnecessary thread switching is not needed. We simplify the above logic and use dispatch_after to queue the block on the internal queue after a delay Note that main queue is typically more loaded and it is better for non-UI code to not use the main queue. This may also help improve crash log upload. This change also switches from @synchronized to dispatch_once as that is faster Reference: http://googlemac.blogspot.com/2006/10/synchronized-swimming.html BUG= Change-Id: I81035149cbbf13a3058ca3a11e6efd23980f19ad Reviewed-on: https://chromium-review.googlesource.com/441364 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Only release current_breakpad_ if it is defined.Benjamin Lerman2015-10-141-1/+1
| | | | | | R=mark@chromium.org Review URL: https://codereview.chromium.org/1402453006 .
* Default nil or empty version string to CFBundleVersionchangluo@google.com2015-07-101-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1470 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad: Fix build with new clang versions.mark@chromium.org2014-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc has a single exception setting for all languages. Saying -fno-exceptions in gcc disables exceptions and cleanups for cc files, but has no effect for mm files. In clang, -fno-exceptions only disables c++ exceptions, but keeps objective-c exceptions and cleanups enabled. http://llvm.org/viewvc/llvm-project?view=revision&revision=220714 changed __EXCEPTIONS to be defined for clang when cleanups are enabled, independent of if c++ exceptions are enabled. (This was necessary to have clang work with glibc which looks at __EXCEPTIONS to decide if cleanups are enabled.) Breakpad tried to use __EXCEPTIONS to figure out if c++ exceptions are enabled. In cc files, this works: -fno-exceptions will disable c++ exceptions and cleanups. But in mm files, -fno-exceptions will disable c++ exceptions and objective-c exceptions will still be enabled, and so cleanups must run and hence __EXCEPTIONS is defined. To make things work with both old and new compilers, do the try/catch hack in mm files either if __EXCEPTIONS is not defined (for old compilers) or if the compiler is clang and __has_feature(cxx_exceptions) isn't set (which will work for new clangs too, and which cleanly maps to if c++ exceptions are enabled). Patch by Nico Weber <thakis@chromium.org> Review URL: https://breakpad.appspot.com/1774002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1409 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Adding possibility for client to upload the fileblundell@chromium.org2014-09-014-15/+155
| | | | | | | | | | | | | | | | | | This CL adds three features that will allow the client to upload the report file. Three main modifications are made : - Allow upload url to have a file:// scheme, and write the HTTP request to file in that case - Split the request in two parts in case of a file:// scheme, the request time and the response time. A new API [handleNetworkResponse] is added. - Give the opportunity to the client to get the configuration NSDictionary to be able to recreate the breakpad context at response time. Patch by Olivier Robin <olivierrobin@chromium.org> Review URL: https://breakpad.appspot.com/2764002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1368 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Unhook current Breakpad object after handling uncaught NSException.qsr@chromium.org2014-07-071-0/+1
| | | | | | | | | | | | | | | | | | After handling an uncaught NSException, release the Breakpad object so there will not be a second crash dump logged. Prior to this change, for every uncaught NSException handled through the Breakpad::UncaughtExceptionHandler(), a second crash without any useful information (generally __cxa_rethrow and std::__terminate) is recorded. R=qsr@chromium.org Review URL: https://breakpad.appspot.com/9664002 Patch from Peter Lee <pkl@chromium.org>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1344 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a bug in BreakpadController that prevented multiple report uploads per ↵ivan.penkov@gmail.com2014-03-191-4/+8
| | | | | | | | | | | | call to sendStoredCrashReports. Submitting this patch on behalf of Asher Segel-Brown. R=blundell@chromium.org, mark@chromium.org, qsr@chromium.org Review URL: https://breakpad.appspot.com/1234002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1288 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixing compiler warnings:ivan.penkov@gmail.com2014-02-281-2/+2
| | | | | | | | | | | | - Building Breakpad in Xcode with arm64 architecture. - iOS Patches provided by: Ian Hickson and Greg Vance. R=mark@chromium.org Review URL: https://breakpad.appspot.com/1184003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1286 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Update GTM and enable -Wundef and strict C++11 flags.dmaclach2014-02-261-0/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1283 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixup breakpad compile for Xcode 5.1 iOS releasedmaclach2014-02-241-4/+4
| | | | | | | | (https://breakpad.appspot.com/1154002/) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1282 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix up ~14 warnings about 'Implicit conversion loses integer precision' on iOS.dmaclach2014-02-182-2/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1281 4c0a9323-5329-0410-9bdc-e9ce6186880e
* When the Breakpad.h header gets compiled by standard C compilersdmaclach2014-02-183-6/+15
| | | | | | | | | | (instead of C++) it gets upset about the default argument. Instead of using a default argument I split the function up into two separate functions. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1280 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Submitting on bahalf of Michele Aiello.ivan.penkov@gmail.com2014-01-131-2/+3
| | | | | | | | | | | Fix Xcode 5.1 compilation issues. Moving a couple of variable under #ifdef to avoid build warnings. R=blundell@chromium.org, mark@chromium.org Review URL: https://breakpad.appspot.com/1054002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1272 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add -[BreakpadController setParametersToAddAtUploadTime:] for iOS.blundell@chromium.org2014-01-134-9/+33
| | | | | | | | | | | | | | This provides the ability to add server parameters to a crash report when the report is uploaded. Patch by KiYun Roe <kiyun@chromium.org> BUG=558 R=blundell@chromium.org Review URL: https://breakpad.appspot.com/974002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1271 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Don't do work inside assert(). Ever.mark@chromium.org2014-01-101-16/+13
| | | | | | | | | | | | | | | The Mac crash key manipulation code was intended to be thread-safe through the provision of a mutex. The mutex operations were done inside an assert(). assert() is a no-op in NDEBUG (release) builds. Therefore, in release builds, these operations were occurring without being protected by any mutex at all, and were nowhere near thread-safe. BUG=chromium:331268 R=rsesek@chromium.org Review URL: https://breakpad.appspot.com/1034002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1270 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove usage of gDebugLog and DEBUGLOG from Mac and iOS client code.altse@chromium.org2013-12-121-15/+0
| | | | | | | | | | The inconsistent and duplicated references to gDebugLog caused problems building on iOS and the current logging implementation had little utility because it was never activated in debug builds. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1257 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add -[BreakpadController resetConfiguration] for iOS.blundell@chromium.org2013-12-122-4/+15
| | | | | | | | | | | | | | Add a resetConfiguration method to BreakpadController for iOS. The new method resets the controller configuration to its initial value, which is the infoDictionary of the bundle of the application. Patch by KiYun Roe <kiyun@chromium.org> BUG=554 Review URL: https://breakpad.appspot.com/904002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1256 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix unused method warning.ivan.penkov@gmail.com2013-12-031-0/+2
| | | | | | Review URL: https://breakpad.appspot.com/814002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1242 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Re-enable ios_exception_minidump_generator being built on non-ARM.blundell@chromium.org2013-12-021-5/+9
| | | | | | | | | | | This file gets built on x86 as part of building Chromium for the iOS simulator, which I had forgotten in the course of https://breakpad.appspot.com/664002/. R=mark@chromium.org Review URL: https://breakpad.appspot.com/774002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1238 4c0a9323-5329-0410-9bdc-e9ce6186880e
* In iOS, BREAKPAD_OUTPUT_DUMP_FILE value contains a malformed full path to ↵qsr@chromium.org2013-11-261-2/+1
| | | | | | | | | | | | | | | | | | | | the dump file. The std::string dumpFilename already contains the full pathname to the dump file. Appending it to the dumpDirAsNSString creates a string with the path portion duplicated, e.g.: /var/mobile/Applications/516BE756-DFD4-4F9B-85D5-85966B0038F7/Library/Caches/Breakpad/var/mobile/Applications/516BE756-DFD4-4F9B-85D5-85966B0038F7/Library/Caches/Breakpad/0A406D28-437D-48EE-9989-23F7F871818E.dmp Instead of this: /var/mobile/Applications/516BE756-DFD4-4F9B-85D5-85966B0038F7/Library/Caches/Breakpad/0A406D28-437D-48EE-9989-23F7F871818E.dmp R=markus@chromium.org, qsr@chromium.org Review URL: https://breakpad.appspot.com/744002 Patch from Akiva <scirsw@gmail.com>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1237 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Generate minidumps for 64-bit ARM apps on iOS.mark@chromium.org2013-11-213-39/+82
| | | | | | | | | | | | | | | Adds an ARM64-specific definition of MDRawContext and support for writing out a minidump when running on ARM64. Additionally, extends the iOS minidump generator for NSExceptions to work on ARM64 as well as ARM. Patch by Colin Blundell <blundell@chromium.org> BUG=542 Review URL: https://breakpad.appspot.com/664002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1235 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Provide BreakpadGetCrashReportCount() and -[BreakpadControllermark@chromium.org2013-11-204-10/+30
| | | | | | | | | | | | | | | | getCrashReportCount:] This provides the ability for clients to query the number of crash reports that are waiting to upload. Patch by KiYun Roe <kiyun@chromium.org> BUG=547 Review URL: https://breakpad.appspot.com/714002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1234 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove unittest from sources list of iOS client xcodeproj.qsr@chromium.org2013-10-151-2/+2
| | | | | | | | | | | | | This unittest has a main(), which causes linker errors when the library is linked into an application. Patch by:blundell@chromium.org R=qsr@chromium.org Review URL: https://breakpad.appspot.com/640002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1221 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix missing include in ios_exception_minidump_generator.mm.qsr@chromium.org2013-10-111-0/+2
| | | | | | | | R=qsr@chromium.org Review URL: https://breakpad.appspot.com/637004 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1220 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a memory leak, using stringWithUTF8String instead.yuwu@google.com2013-07-171-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1202 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Check env var BreakpadMinidumpLocation first, if set, use it as ↵yuwu@google.com2013-07-151-2/+5
| | | | | | BREAKPAD_DUMP_DIRECTORY. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1201 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix minidump generation from exception.qsr@chromium.org2013-05-032-9/+15
| | | | | | Review URL: https://breakpad.appspot.com/583002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1169 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Rewrite SimpleStringDictionary with NonAllocatingMap.rsesek@chromium.org2013-04-241-6/+4
| | | | | | | | | | | NonAllocatingMap has a near-identical interface, but is significantly less code, more customizable, and has storage that is POD. BUG=http://code.google.com/p/chromium/issues/detail?id=77656 Review URL: https://breakpad.appspot.com/568002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1161 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move SimpleStringDictionary from common/mac/ to just common/.rsesek@chromium.org2013-04-182-10/+10
| | | | | | | | | | | | This also cleans up some things like the file name, trailing whitespace, and making the test use gtest instead of sentest, since there's nothing Mac specific about this. BUG=https://code.google.com/p/chromium/issues/detail?id=77656 Review URL: https://breakpad.appspot.com/561003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1154 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add API to find out if there is crash reports to send to the server.qsr@chromium.org2013-02-012-0/+10
| | | | | | Review URL: https://breakpad.appspot.com/518002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1109 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move scoped_ptr.h to commonted.mielczarek@gmail.com2013-01-172-2/+2
| | | | | | R=mark at https://breakpad.appspot.com/509002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1096 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix typo.qsr@chromium.org2012-12-171-2/+2
| | | | | | Review URL: https://breakpad.appspot.com/506002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1093 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Updating BreakpadController to allow start and stop being nop.qsr@chromium.org2012-12-171-4/+5
| | | | | | | | When BreakpadController is already started or stopped, trying to restart it or restopping it will now be no-op instead of asserting. Review URL: https://breakpad.appspot.com/505002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1092 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow the Mac and iOS Breakpad clients to build without exceptions when the ↵mark@chromium.org2012-12-111-7/+19
| | | | | | | | | | | | C++ standard library is not provided by libstdc++. libc++, for example, does not provide its own try and catch replacement macros when exceptions are disabled. BUG=509 Review URL: https://breakpad.appspot.com/503002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1089 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add assertion on initialization sequence.qsr@chromium.org2012-11-282-0/+24
| | | | | | | | | | | | The order at which to call the controller methods is: 1) Any method that change the configuration_ field 2) start 3) Any other method This change adds assertion that it is done correctly. Review URL: https://breakpad.appspot.com/499003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1085 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Turn on more warnings in ios / mac projects.qsr@chromium.org2012-09-212-1/+17
| | | | | | | | | | | | | | | Make casts explicit. This makes casts that loose precision explicit, from here on we will get warnings. The changes in this commit are made without evaluating each cast, asuming the original casts were intentional. Patch by: jakerr@google.com Review: https://breakpad.appspot.com/453002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1046 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixed "unused method" warning, reported by Xcode 4.2 on simulator.qsr@chromium.org2012-04-041-0/+2
| | | | | | | Patch by tball@google.com Review URL: https://breakpad.appspot.com/371002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@948 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add high level API for breakpad on iOS.qsr@chromium.org2012-03-134-1/+382
| | | | | | | | | | | The new API allows to automatically upload repports to the crash server when the application restarts. This change also: - Correct a bug on the test for correct alignment of the abrt signal handler - Add user friendly information on crashes for SIGABRT and NSException Review URL: https://breakpad.appspot.com/361001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@935 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Correct various compilation warnings.qsr@chromium.org2012-03-071-2/+1
| | | | | | | | | | - Cast result of _dyld_image_count to prevent compilation warning: The 2 int in both side of the ? operator should have the same type. - Remove unused variable for return values. - Remove unused NSUserDefaults. Review URL: https://breakpad.appspot.com/354001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@929 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Send uptime as milliseconds for Mac and iOS.qsr@chromium.org2012-03-021-5/+7
| | | | | | | | All other platform are sending uptime as milliseconds. Changing the implementation to do the same on Mac and iOS. Review URL: https://breakpad.appspot.com/355001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@928 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add missing include.qsr@chromium.org2012-02-141-0/+1
| | | | | | | As the include define some method to be inlined, not having the include breaks the compilation of optimized builds. Review URL: https://breakpad.appspot.com/347002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@917 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Creating minidump for uncaught exception on iOS.qsr@chromium.org2012-02-144-3/+300
| | | | | | | | | | | 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
* Add API on iOS to generate dump on demand.qsr@chromium.org2011-12-092-2/+66
| | | | | | Review URL: http://breakpad.appspot.com/331001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@893 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a missed include path change from r889. (r=qsr in person)stuartmorgan2011-12-021-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@892 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Create a static library to use Breakpad on iOS.qsr@chromium.org2011-11-232-0/+536
| | | | | | | 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
* Correct bug introduced by last commit: Interface on Breakpad is incorrect.qsr@chromium.org2011-11-162-6/+8
| | | | | | | R=mark@chromium.org git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@886 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add an API to Breakpad to upload custom file to the crash server.qsr@chromium.org2011-11-162-0/+40
| | | | | | | | | | | 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
* Correct leak.qsr@chromium.org2011-11-101-2/+2
| | | | | | | Uploaders were never released. Review URL: http://breakpad.appspot.com/326001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@882 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad implementation for ios.qsr@chromium.org2011-10-122-0/+884
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