This release removes support for reporting 'partial' or 'minimal' crash reports where the crash report could not be entirely written (due to disk space or other issues like the device battery dying). While sometimes the reports could point in the right direction for debugging, they could also be confusing or not enough information to pursue and close the issue successfully.
This release also renames a few configuration properties to align better with the intended use and other Bugsnag libraries, so people who use more than one platform can easily find related functionality in a different library. The old names are deprecated but still supported until the next major release. #435
Bugsnag.setBreadcrumbCapacity()
is nowsetMaxBreadcrumbs()
on theBugsnagConfiguration
class. In addition, the default number of breadcrumbs saved has been raised to 25 and limited to no more than 100.BugsnagConfiguration.autoNotify
is now namedBugsnagConfiguration.autoDetectErrors
BugsnagConfiguration.autoCaptureSessions
is now namedBugsnagConfiguration.autoDetectSessions
- Fix unrecognized selector crash when adding metadata #430
- Fix a packaging issue when using Carthage, introduced in 5.22.7. Note: There is a remaining known issue when updating/building the bugsnag-cocoa dependency with Carthage, the project will build three times before completing successfully. This issue will be resolved in a subsequent patch release. #423
- Deprecate
config.reportBackgroundOOMs
property - designating any app termination as a possible error condition can cause a lot of false positives, especially since the app can die for many genuine reasons, especially when running only in the background. #425
- Fix use-after-free in
notify()
logic which could lead to a deadlock #420 - Reduce severity of log message about thread status from 'error' to 'debug' as it does not necessarily indicate a problem and is only used for debugging. #421
- Show correct value for
app.inForeground
when an app launches and crashes in the background without ever coming to the foreground. #415 - Fix improperly retained properties which could result in a crash due to premature deallocation #416
- Support disabling crash reporting after initialization by setting
Bugsnag.configuration.autoNotify
. Previously this value was ignored afterBugsnag.start()
was called, but is now used to update whether crash reports will be detected and sent. This interface can be used for crash reporting opt-out flows. #410
- Ensure UIKit APIs are not called from background threads if
Bugsnag.start()
is called in the background #409 - Fix bug in
notifyReleaseStages
where if the release stage of a build was changed afterstart()
, only the initial value was used to determine whether to send a report #405 #412
- Fix possible crash or deadlock arising from calling Bugsnag.notify() from multiple queues concurrently. #401
- Support adding pre-delivery metadata to out-of-memory reports #393
- Fix erroneously reporting out-of-memory events from iOS app extensions #394
- Fix erroneously reporting out-of-memory events when an iOS app is in the foreground but inactive #394
- Fix erroneously reporting out-of-memory events when the app terminates normally and is issued a "will terminate" notification, but is terminated prior to the out-of-memory watchdog processing the notification #394
- Fix memory leak in notify() Carolina Aguilar #395
This release disables reporting out-of-memory events in debug mode, to reduce false positives.
- Fix incrementing unhandled counts when using internal notify() API. This resolves discrepancies in stability scores for users of bugsnag-react-native after receiving unhandled JavaScript events.
- Fix JSON parsing errors in crash reports for control characters and some other sequences
- Fix trimming the stacktraces of handled error/exceptions using the
depth
property. Paul Zabelin #363 - Fix crash report parsing logic around arrays of numbers. Metadata which included arrays of numbers could previously had missing values. #365
-
Report correct app version in out-of-memory reports. Previously the bundle version was reported as the version number rather than the short version string. #349
-
Fix missing stacktraces in reports generated from
notify()
#348
This release disables background out-of-memory termination reporting by default, as it may be confusing that foreground and background grouped together and are not necessarily at the same level of importance during triage.
- Add configuration option (
reportOOMs
) to disable out-of-memory (OOM) event reporting, defaulting to enabled. #345 - Disable background OOM reporting by default. It can be enabled using
reportBackgroundOOMs
. #345
- Migrate version information to device.runtimeVersions #340
- Add internal api for mutating session payload before sending #341
- Persist breadcrumbs on disk to allow reading upon next boot in the event of an uncatchable app termination.
- Add
+[Bugsnag appDidCrashLastLaunch]
as a helper to determine if the previous launch of the app ended in a crash or otherwise unexpected termination. - Report unexpected app terminations on iOS as likely out of memory events where the operating system killed the app
-
Fix generating an incorrect stacktrace used when logging an exception to Bugsnag from a location other than the original call site (for example, from a logging function or across threads). If an exception was raised/thrown, then the resulting Bugsnag report from
notify()
will now use theNSException
instance's call stack addresses to construct the stacktrace, ignoring depth. This fixes an issue in macOS exception reporting wherereportException
is reporting the handler code stacktrace rather than the reported exception stack. #334 -
Fix network connectivity monitor by connecting to the correct domain Jacky Wijaya #332
Note for Carthage users: this release updates the Xcode configuration to the settings recommended by Xcode 10.
- Update workspace to recommended settings suggested by XCode 10 #324
- Add stopSession() and resumeSession() to Bugsnag #325
- Capture basic report diagnostics in the file path in case of crash report content corruption #327
-
Fix case where notify() causes an unhandled report #322
-
Fix possible crash when fetching system info to append to a crash report #321
- Add Device time of report capture to JSON payload #315
-
Fix stack trace resolution on iPhone XS sometimes reporting incorrect addresses #319
-
Add
fatalError
and other assertion failure messages in reports for Swift 4.2 apps. Note that this only includes messages which are 16 characters or longer. See the linked pull request for more information. #320
- Capture trace of error reporting thread and identify with boolean flag #303
- Prevent potential crash in session delivery during app teardown #308
-
Ensure NSException is captured when handler is overridden #313
-
Fix mach handler declaration and imports. This resolves an issue where signal codes were less specific than is possible. #314
-
Only call previously installed C++ termination handler if non-null. Fixes an unexpected termination if you override the handler with null before initializing Bugsnag and then throw a C++ exception and would like the app to continue after Bugsnag completes exception reporting.
- Deregister notification observers and listeners before application termination #301
-
Fix a regression in session tracking where app version was set to nil #296
-
Fix a regression in session tracking which caused the first session HTTP request to be delivered on the calling thread when automatic session tracking is enabled #295
- Respect appVersion override when serialising KSCrash report #292
This release alters the behaviour of the notifier to track sessions automatically. A session will be automatically captured on each app launch and sent to https://sessions.bugsnag.com.
If you use Bugsnag On-Premise, it is now also recommended that you set your notify and session endpoints via config.setEndpoints(notify:sessions:)
. The previous properties used to configure this, config.notifyURL
and config.sessionURL
, are now readonly
and therefore no longer assignable.
- Enable automatic session tracking by default #286
- Handle potential nil content value in RegisterErrorData class #289
- Ensure device data is attached to minimal reports #279
- Enforce requiring API key to initialise notifier #280
-
Changes report generation so that when a minimal or incomplete crash is recorded, essential app/device information is included in the report on the next application launch. #239 #250
-
Ensure timezone is serialised in report payload. #248 Jamie Lynch
This release adds additional device metadata for filtering by whether an error occurred in a simulator (#242) and by processor word size (#228).
- Ensure error class and message are persisted when thread tracing is disabled #245 Jamie Lynch
- Re-addapp name to the app tab of reports #244 Jamie Lynch
- Add payload version to report body to preserve backwards compatibility with older versions of the error reporting API #241 Jamie Lynch
- Remove chatty logging from session tracking #231 Jamie Lynch
- Re-add API key to payload body to preserve backwards compatibility with older versions of the error reporting API #232 Jamie Lynch
- Fix crash in iPhone X Simulator when reporting user exceptions #234 Paul Zabelin
- Improve capture of Swift assertion error messages on arm64 devices, inserting
the assertion type into the report's
errorClass
#235
- Fix default user/device ID generation on iOS and tvOS devices
- Fix mach exception detection
- Misc Session Tracking fixes and enhancements
-
- Adds support for tracking sessions and overall crash rate by setting
config.shouldAutoCaptureSessions
totrue
. In addition, sessions can be indicated manually using[Bugsnag startSession]
#222
- Adds support for tracking sessions and overall crash rate by setting
- Fix encoding of control characters in crash reports. Ensures crash reports are written correctly and delivered when containing U+0000 - U+001F #214 Jamie Lynch
- Use
BSG_KSCrashReportWriter
header rather thanKSCrashReportWriter
for custom JSON serialization
- Remove misleading information (address, mach, signal) from non-fatal error reports
- Fix buffer overflow for reports with large metadata
- Treat warnings as errors
- Fix build on older versions of XCode
- Fix thread safety issue in breadcrumbs API
- Allow setting device ID in report to null
- When notifying of NSError, use the code and domain as the default context
- Fix for wrong report context in some unhandled errors
- Additional method prefixing
- Prevent possible memory leak in connectivity check
- Update podspec iOS version to 8.0
- Updated example apps to Swift 4
- Report error message for Swift's
fatalError
,preconditionFailure
,assertionFailure
, andassert
.
- Fix duplicate symbols in KSCrash when Sentry library included in project
- Fix fatalError not producing crash report
- Update library's calculation of stack frame depth
- Reduced build warning count
- Track difference between handled and unhandled exceptions #164 Jamie Lynch
- Fixed wrong tag in Cocoapods spec
- Fixed issue with header file visibility
- Update example apps to use Swift 3 syntax
- Discard duplicate automatic breadcrumbs recording orientation changes
- Map NSNotification keys in breadcrumbs into more human-readable strings
- Attempt to send reports stored on disk when connection regained
- Forked KSCrash library
- Improve performance in Bugsnag.notifyError Eric Denman
- Fix warning generated by checking for existence of a property guaranteed when deployment target is iOS 8.0+ Scott Berrevoets #147
- Sanitize attached metadata to remove objects which cannot be serialized as JSON directly, logging during removal
- Make breadcrumb functionality available for background operations
- Lower effective deployment targets from iOS 8 and OS X 10.10 to iOS6 and OS X 10.8
- Adds methods to
BugsnagCrashReport
for appending metadata, simplifying making the most common changes from a callback block #145
- Fix linking failure when using Bugsnag with Carthage on tvOS #139
This release downgrades the dependent KSCrash version to 1.8.13, reverting the
change to the signature of KSCrashReportWriter.addJSONElement()
in 5.7.0. This
change only affects users setting a custom onCrash
handler to be executed at
crash time.
- Increases the number of crash reports stored on disk before cycling
- Make logging configurable by setting
BSG_LOG_LEVEL
. Default isBSG_LOGLEVEL_INFO
, and available values includeWARN
andERR
variants.
- Fixes deadlock which can occur when repeatedly calling
notify
#143 - Fixes periodic issue where no report is captured at all
- Fixes issue where a report written at crash time cannot be deserialized from disk at send time.
This release updates the dependent KSCrash version to 1.11.2, which changes the
signature of KSCrashReportWriter.addJSONElement()
to include whether to close
the JSON container.
- Add support for customizing the
NSURLSession
used when sending error reports to Bugsnag #127
- Fix assignment of
beforeSendBlocks
to incorrect property name Spike Brehm #125
- Expose
app
,appState
,device
,deviceState
, anderror
to crash report callback blocks
- Fix
autoNotify
: Disabling unhandled exception capturing only sends user-reported exceptions viaBugsnag.notify()
- Update imports to be compatible with KSCrash 1.8.8+
- Lock KSCrash dependency to 1.8.13 to reduce instability
- Include thread type in payload to match new payload specification
- Add support for attaching a custom stacktrace to an error report
- Upgrade required version of KSCrash
- Add "Require Only App-Extension-Safe API" flag for iOS App Extension support
- Send requests via NSURLSession by default
- Fix a condition where bug reports would be sent multiple times
- Fix breadcrumb type for table events
- Add error message and severity to error breadcrumbs
- Make breadcrumbs accessible from background queues
-
Add support for automated breadcrumb collection for common events and the new breadcrumbs API #112
-
Add support for Apple TV #113
-
Add ability to customize error reports via
notify:block
#110 -
Add support for sending reports for
NSError
instances vianotifyError:
andnotifyError:block:
#110 -
Add crash time to the "Device" tab of error reports #110
- Fix intermittent crashes via NSZombie detection being enabled by default #111 KSCrash#160
Add Carthage support
- Catch JSON (de)serialization exceptions thrown from
NSJSONSerialization
- Add nullability annotations
- Remove logging when no reports were sent
- Fix build failure when building with frameworks #101
- Add support for iOS Application Extensions #100
- Fix typo in updated payload date format. Should instead use RFC 3339 format
- Fix header issue when linking to Bugsnag via CocoaPods from within another pod
#98
#99
- Related to: CocoaPods#4420
This release includes an upgrade to KSCrash 1.0.0, as well support for running alongside other KSCrash-dependent libraries. Crash handling for heap corruption and link register overwriting has also been improved.
NOTE: The minimum supported iOS and OS X versions have been updated to 6.0 and 10.8 respectively.
-
Fix for occasional crash when logging from a failed network request #67
-
Fix conflict when used alongside other KSCrash-dependent libraries #41 #52 #72 #91 #94
-
Fix for failed crash reports being deleted instead of resent #76
-
Bitcode support #78
-
Include severity in uncaught exception reports #86
-
Add pre- and post-crash hooks, for modifying or rejecting crash reports #17 #47 #34 #88
- Breadcrumbs support.
- Send notifications with current configuration rather than that in the report.
- Protect against nil named exceptions
- Reduce deployment target to 4.3
- Catch less crashes on OSX
- Fix compilation on arm64 under Unity
- Uncaught exceptions in OSX are now marked as warnings
- Fix buffer over-read in JSON parser
- Build OSX framework as part of release
- In dealloc remove notifier from notifications
- Make metaData access thread-safe
- Fix warning while compiling KSCrash on OS X
- Rewrite to use KSCrash as a solid foundation
- Add [Bugsnag notify:withMetaData:atSeverity:] to public API
- Prepare 'severity' feature for release
- Package BugsnagReachability in package for reliability
- Disable dsym uploading on iphonesimulator builds
- Send better diagnostics with a better format
- Remove Pods from repo.
- Fix XCode5 Warnings.
- Publicise the notifier method.
- Complete rewrite to support symbolication.
- Support iOS and OSX.