diff --git a/.buildkite/pipeline.full.yml b/.buildkite/pipeline.full.yml
index 5a8fed752..cc1752872 100644
--- a/.buildkite/pipeline.full.yml
+++ b/.buildkite/pipeline.full.yml
@@ -193,7 +193,7 @@ steps:
- label: ':browserstack: iOS 15 app hang tests'
depends_on:
- cocoa_fixture
- timeout_in_minutes: 10
+ timeout_in_minutes: 30
agents:
queue: opensource
plugins:
@@ -222,7 +222,7 @@ steps:
- label: ':browserstack: iOS 14 app hang tests'
depends_on:
- cocoa_fixture
- timeout_in_minutes: 10
+ timeout_in_minutes: 30
agents:
queue: opensource
plugins:
@@ -251,7 +251,7 @@ steps:
- label: ':browserstack: iOS 13 app hang tests'
depends_on:
- cocoa_fixture
- timeout_in_minutes: 10
+ timeout_in_minutes: 30
agents:
queue: opensource
plugins:
@@ -352,6 +352,7 @@ steps:
agents:
queue: macos-12-arm
commands:
+ - bundle install
- cd examples/objective-c-ios
- echo "--- Pod install"
- pod install
@@ -367,6 +368,7 @@ steps:
agents:
queue: macos-12-arm
commands:
+ - bundle install
- cd examples/objective-c-osx
- echo "--- Pod install"
- pod install
@@ -380,6 +382,7 @@ steps:
agents:
queue: macos-12-arm
commands:
+ - bundle install
- cd examples/swift-ios
- echo "--- Pod install"
- pod install
@@ -393,6 +396,7 @@ steps:
agents:
queue: macos-12-arm
commands:
+ - bundle install
- cd examples/swift-package-manager
- echo "--- Resolve Swift Package Dependencies"
- sed -i '' -e 's/kind = branch/kind = revision/' -e "s/branch = master/revision = ${BUILDKITE_COMMIT}/" swift-package-manager.xcodeproj/project.pbxproj
@@ -407,6 +411,7 @@ steps:
agents:
queue: macos-12-arm
commands:
+ - bundle install
- cd examples/swiftui
- echo "--- Resolve Swift Package Dependencies"
- sed -i '' -e 's/kind = branch/kind = revision/' -e "s/branch = master/revision = ${BUILDKITE_COMMIT}/" swiftui.xcodeproj/project.pbxproj
diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
index 11cb5c3f2..4fb9a0df3 100644
--- a/.buildkite/pipeline.yml
+++ b/.buildkite/pipeline.yml
@@ -29,6 +29,8 @@ steps:
timeout_in_minutes: 10
agents:
queue: macos-13-arm
+ env:
+ DEVELOPER_DIR: /Applications/Xcode14.3.app
commands:
- make build_swift
- make build_ios_static
@@ -99,6 +101,8 @@ steps:
queue: macos-13-arm
commands:
- ./scripts/run-unit-tests.sh PLATFORM=iOS OS=17.0.1 DEVICE="iPhone 15"
+ env:
+ XCODE_VERSION: 15.0.1
artifact_paths:
- logs/*
@@ -307,7 +311,7 @@ steps:
- label: ':browserstack: iOS 16 app hang tests'
depends_on:
- cocoa_fixture
- timeout_in_minutes: 10
+ timeout_in_minutes: 30
agents:
queue: opensource
plugins:
@@ -331,6 +335,8 @@ steps:
automatic:
- exit_status: -1 # Agent was lost
limit: 2
+ - exit_status: 104 # App hang related error
+ limit: 2
- label: ':bitbar: iOS 15 barebone tests'
depends_on:
diff --git a/.github/workflows/downstream_updates.yml b/.github/workflows/downstream_updates.yml
index 8908c5a08..782372e2a 100644
--- a/.github/workflows/downstream_updates.yml
+++ b/.github/workflows/downstream_updates.yml
@@ -15,7 +15,6 @@ jobs:
runs-on: ubuntu-latest
env:
RELEASE_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.target_version || github.event.release.tag_name }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
downstream_repo: ['bugsnag/bugsnag-unity', 'bugsnag/bugsnag-flutter']
@@ -28,5 +27,5 @@ jobs:
- run: >
curl -X POST https://api.github.com/repos/${{ matrix.downstream_repo }}/dispatches
-H 'Content-Type: application/json'
- -H "Authorization: Bearer $GITHUB_TOKEN"
- -d '{"event_type":"update-dependency","client_payload": {"target_submodule":"bugsnag-cocoa", "target_version": "$RELEASE_VERSION"}}'
+ -H "Authorization: Bearer ${{ secrets.DEP_UPDATER_BEARER_TOKEN }}"
+ -d '{"event_type":"update-dependency","client_payload": {"target_submodule":"bugsnag-cocoa", "target_version": "${{ env.RELEASE_VERSION }}"}}'
diff --git a/.gitignore b/.gitignore
index da7e5f018..993f88eca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,4 @@ Package.resolved
/infer-out
/oclint.json
bb.ready
+/maze_output
diff --git a/.jazzy.yaml b/.jazzy.yaml
index bc06fedab..8eb2be6d3 100644
--- a/.jazzy.yaml
+++ b/.jazzy.yaml
@@ -2,11 +2,11 @@ author_url: "https://www.bugsnag.com"
author: "Bugsnag Inc"
clean: false # avoid deleting docs/.git
framework_root: "Bugsnag"
-github_file_prefix: "https://github.com/bugsnag/bugsnag-cocoa/tree/v6.28.0/Bugsnag"
+github_file_prefix: "https://github.com/bugsnag/bugsnag-cocoa/tree/v6.28.1/Bugsnag"
github_url: "https://github.com/bugsnag/bugsnag-cocoa"
hide_documentation_coverage: true
module: "Bugsnag"
-module_version: "6.28.0"
+module_version: "6.28.1"
objc: true
output: "docs"
readme: "README.md"
diff --git a/Bugsnag.podspec.json b/Bugsnag.podspec.json
index a9bfe9f9f..17392ef0f 100644
--- a/Bugsnag.podspec.json
+++ b/Bugsnag.podspec.json
@@ -1,6 +1,6 @@
{
"name": "Bugsnag",
- "version": "6.28.0",
+ "version": "6.28.1",
"summary": "The Bugsnag crash reporting framework for Apple platforms.",
"homepage": "https://bugsnag.com",
"license": "MIT",
@@ -9,7 +9,7 @@
},
"source": {
"git": "https://github.com/bugsnag/bugsnag-cocoa.git",
- "tag": "v6.28.0"
+ "tag": "v6.28.1"
},
"ios": {
"frameworks": [
@@ -53,9 +53,9 @@
"source_files": [
"Bugsnag/{**/,}*.{m,h,mm,c}"
],
- "resources": [
- "Bugsnag/resources/PrivacyInfo.xcprivacy"
- ],
+ "resource_bundles": {
+ "Bugsnag": ["Bugsnag/resources/PrivacyInfo.xcprivacy"]
+ },
"requires_arc": true,
"prefix_header_file": false,
"public_header_files": [
diff --git a/Bugsnag.xcodeproj/project.pbxproj b/Bugsnag.xcodeproj/project.pbxproj
index f61d56183..29cbe8021 100644
--- a/Bugsnag.xcodeproj/project.pbxproj
+++ b/Bugsnag.xcodeproj/project.pbxproj
@@ -4031,7 +4031,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"BSG_OBJC_DIRECT_MEMBERS=''",
@@ -4055,7 +4055,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = Tests/BugsnagTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -4280,7 +4280,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "Tests/TestHost-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -4297,7 +4297,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "Tests/TestHost-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -4339,7 +4339,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -4401,7 +4401,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -4457,7 +4457,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"BSG_OBJC_DIRECT_MEMBERS=''",
@@ -4508,7 +4508,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
diff --git a/Bugsnag/BugsnagSessionTracker.m b/Bugsnag/BugsnagSessionTracker.m
index 25579a70e..ffcd00c01 100644
--- a/Bugsnag/BugsnagSessionTracker.m
+++ b/Bugsnag/BugsnagSessionTracker.m
@@ -166,7 +166,9 @@ - (void)startNewSession {
config:self.config
codeBundleId:self.codeBundleId];
BugsnagDevice *device = [BugsnagDevice deviceWithKSCrashReport:@{@"system": systemInfo}];
- [device appendRuntimeInfo:self.extraRuntimeInfo];
+ @synchronized (self.extraRuntimeInfo) {
+ [device appendRuntimeInfo:self.extraRuntimeInfo];
+ }
BugsnagSession *newSession = [[BugsnagSession alloc] initWithId:[[NSUUID UUID] UUIDString]
startedAt:[NSDate date]
@@ -194,7 +196,9 @@ - (void)startNewSession {
- (void)addRuntimeVersionInfo:(NSString *)info
withKey:(NSString *)key {
if (info != nil && key != nil) {
- self.extraRuntimeInfo[key] = info;
+ @synchronized (self.extraRuntimeInfo) {
+ self.extraRuntimeInfo[key] = info;
+ }
}
}
diff --git a/Bugsnag/Payload/BugsnagNotifier.m b/Bugsnag/Payload/BugsnagNotifier.m
index e06375aa7..1ba1edb0e 100644
--- a/Bugsnag/Payload/BugsnagNotifier.m
+++ b/Bugsnag/Payload/BugsnagNotifier.m
@@ -23,7 +23,7 @@ - (instancetype)init {
#else
_name = @"Bugsnag Objective-C";
#endif
- _version = @"6.28.0";
+ _version = @"6.28.1";
_url = @"https://github.com/bugsnag/bugsnag-cocoa";
_dependencies = @[];
}
diff --git a/BugsnagNetworkRequestPlugin.podspec.json b/BugsnagNetworkRequestPlugin.podspec.json
index 5cf9bfc7f..53d3b74b6 100644
--- a/BugsnagNetworkRequestPlugin.podspec.json
+++ b/BugsnagNetworkRequestPlugin.podspec.json
@@ -1,16 +1,16 @@
{
"name": "BugsnagNetworkRequestPlugin",
- "version": "6.28.0",
+ "version": "6.28.1",
"summary": "Network request monitoring support for Bugsnag.",
"homepage": "https://bugsnag.com",
"license": "MIT",
"authors": {
"Bugsnag": "notifiers@bugsnag.com"
},
- "readme": "https://raw.githubusercontent.com/bugsnag/bugsnag-cocoa/v6.28.0/BugsnagNetworkRequestPlugin/README.md",
+ "readme": "https://raw.githubusercontent.com/bugsnag/bugsnag-cocoa/v6.28.1/BugsnagNetworkRequestPlugin/README.md",
"source": {
"git": "https://github.com/bugsnag/bugsnag-cocoa.git",
- "tag": "v6.28.0"
+ "tag": "v6.28.1"
},
"dependencies": {
"Bugsnag": "~> 6.13"
diff --git a/BugsnagNetworkRequestPlugin/BugsnagNetworkRequestPlugin.xcodeproj/project.pbxproj b/BugsnagNetworkRequestPlugin/BugsnagNetworkRequestPlugin.xcodeproj/project.pbxproj
index fff8a89fe..c4458f26a 100644
--- a/BugsnagNetworkRequestPlugin/BugsnagNetworkRequestPlugin.xcodeproj/project.pbxproj
+++ b/BugsnagNetworkRequestPlugin/BugsnagNetworkRequestPlugin.xcodeproj/project.pbxproj
@@ -886,7 +886,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "../Tests/TestHost-iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -904,7 +904,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "../Tests/TestHost-iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -921,7 +921,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
HEADER_SEARCH_PATHS = ../Bugsnag/include;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -934,7 +934,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
HEADER_SEARCH_PATHS = ../Bugsnag/include;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -951,7 +951,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -983,7 +983,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1013,7 +1013,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@@ -1033,7 +1033,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@@ -1246,7 +1246,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1270,7 +1270,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1293,7 +1293,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
@@ -1314,7 +1314,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
@@ -1337,7 +1337,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1361,7 +1361,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1384,7 +1384,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
@@ -1404,7 +1404,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
@@ -1424,7 +1424,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1448,7 +1448,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@@ -1471,7 +1471,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
@@ -1491,7 +1491,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GCC_WARN_PEDANTIC = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = BugsnagNetworkRequestPluginTests/Info.plist;
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ccfaa69e9..f4edb9565 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,16 @@
Changelog
=========
+## 6.28.1 (2024-02-28)
+
+### Bug fixes
+
+* Fix race condition crash when calling BugsnagSessionTracker.addRuntimeVersionInfo from another thread.
+ [1632](https://github.com/bugsnag/bugsnag-cocoa/pull/1632)
+
+* Fixed the issue causing PrivacyInfo collisions when using Cocoapods
+ [1630](https://github.com/bugsnag/bugsnag-cocoa/pull/1630)
+
## 6.28.0 (2023-12-13)
### Enhancements
diff --git a/Framework/Info.plist b/Framework/Info.plist
index ec4764d29..7809220f0 100644
--- a/Framework/Info.plist
+++ b/Framework/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 6.28.0
+ 6.28.1
CFBundleVersion
1
diff --git a/Gemfile b/Gemfile
index 427043d09..1ac230de5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -5,6 +5,8 @@ gem 'cocoapods'
# A reference to Maze Runner is only needed for running tests locally and if committed it must be
# portable for CI, e.g. a specific release. However, leaving it commented out would mean quicker CI.
gem 'bugsnag-maze-runner', '~> 8.0'
+gem 'cocoapods'
+gem 'xcpretty'
# Use a specific branch
#gem 'bugsnag-maze-runner', git: 'https://github.com/bugsnag/maze-runner', branch: 'master'
diff --git a/Makefile b/Makefile
index cace29028..9616fa7ad 100644
--- a/Makefile
+++ b/Makefile
@@ -134,7 +134,7 @@ test-fixtures: ## Build the end-to-end test fixture
e2e_ios_local:
@./features/scripts/export_ios_app.sh
- bundle exec maze-runner --app=features/fixtures/ios/output/iOSTestApp.ipa --farm=local --os=ios --apple-team-id=372ZUL2ZB7 --udid="$(shell idevice_id -l)" $(FEATURES)
+ bundle exec maze-runner --app=features/fixtures/ios/output/iOSTestApp.ipa --farm=local --os=ios --apple-team-id=7W9PZ27Y5F --udid="$(shell idevice_id -l)" $(FEATURES)
e2e_macos:
./features/scripts/export_mac_app.sh
diff --git a/Tests/BugsnagTests/BugsnagSessionTrackerTest.m b/Tests/BugsnagTests/BugsnagSessionTrackerTest.m
index 13bf85853..08a378f3e 100644
--- a/Tests/BugsnagTests/BugsnagSessionTrackerTest.m
+++ b/Tests/BugsnagTests/BugsnagSessionTrackerTest.m
@@ -170,4 +170,31 @@ - (void)testStartInForeground {
XCTAssertNotNil(self.sessionTracker.runningSession, @"There should be a running session after starting tracker in foreground");
}
+- (void)testMultithreadedAddRuntimeVersionInfo {
+ NSCondition *endCondition = [NSCondition new];
+ __block int runningThreads = 0;
+ BugsnagConfiguration *config = nil;
+ BugsnagSessionTracker *sessionTracker = [[BugsnagSessionTracker alloc] initWithConfig:config client:nil];
+
+ for (int i = 0; i < 100; i++) {
+ NSString *info = [NSString stringWithFormat:@"Info %d", i];
+ NSString *key = [NSString stringWithFormat:@"Key %d", i];
+ NSThread *thread = [[NSThread alloc] initWithBlock:^{
+ runningThreads++;
+ for(int j = 0; j < 10000; j++) {
+ [sessionTracker addRuntimeVersionInfo:info withKey:key];
+ }
+ if (--runningThreads <= 0) {
+ [endCondition signal];
+ }
+ }];
+ [thread start];
+ }
+
+ [NSThread sleepForTimeInterval:0.1];
+ while (runningThreads > 0) {
+ [endCondition wait];
+ }
+}
+
@end
diff --git a/Tests/BugsnagTests/Info.plist b/Tests/BugsnagTests/Info.plist
index d05947470..762469f87 100644
--- a/Tests/BugsnagTests/Info.plist
+++ b/Tests/BugsnagTests/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 6.28.0
+ 6.28.1
CFBundleVersion
1
diff --git a/Tests/TestHost-iOS/Info.plist b/Tests/TestHost-iOS/Info.plist
index 273512018..bc6b3f582 100644
--- a/Tests/TestHost-iOS/Info.plist
+++ b/Tests/TestHost-iOS/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 6.28.0
+ 6.28.1
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/VERSION b/VERSION
index 2ece8e17b..8993da977 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.28.0
+6.28.1
diff --git a/examples/objective-c-ios/objective-c-ios.xcodeproj/project.pbxproj b/examples/objective-c-ios/objective-c-ios.xcodeproj/project.pbxproj
index a913c7d0f..36ce544ab 100644
--- a/examples/objective-c-ios/objective-c-ios.xcodeproj/project.pbxproj
+++ b/examples/objective-c-ios/objective-c-ios.xcodeproj/project.pbxproj
@@ -184,7 +184,7 @@
ORGANIZATIONNAME = "Simon Maynard";
TargetAttributes = {
F40B874516AA233500676BB2 = {
- DevelopmentTeam = 372ZUL2ZB7;
+ DevelopmentTeam = 7W9PZ27Y5F;
LastSwiftMigration = 0900;
};
};
@@ -408,7 +408,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_BITCODE = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
@@ -434,7 +434,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEPLOYMENT_POSTPROCESSING = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_BITCODE = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
INFOPLIST_FILE = "objective-c-ios/Info.plist";
diff --git a/examples/swift-ios/swift-ios.xcodeproj/project.pbxproj b/examples/swift-ios/swift-ios.xcodeproj/project.pbxproj
index 13e6d8216..dfce8fc1a 100644
--- a/examples/swift-ios/swift-ios.xcodeproj/project.pbxproj
+++ b/examples/swift-ios/swift-ios.xcodeproj/project.pbxproj
@@ -156,7 +156,7 @@
TargetAttributes = {
D175F4B71ACDBD81009AFFB7 = {
CreatedOnToolsVersion = 6.2;
- DevelopmentTeam = 372ZUL2ZB7;
+ DevelopmentTeam = 7W9PZ27Y5F;
LastSwiftMigration = 1250;
};
};
@@ -401,12 +401,12 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "swift-ios/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.1;
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.swiftui-ios";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
SUPPORTS_MACCATALYST = YES;
@@ -423,12 +423,12 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEFINES_MODULE = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "swift-ios/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.1;
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.swiftui-ios";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
SUPPORTS_MACCATALYST = YES;
diff --git a/examples/swift-package-manager/swift-package-manager.xcodeproj/project.pbxproj b/examples/swift-package-manager/swift-package-manager.xcodeproj/project.pbxproj
index 2b1bd286a..96ecc2da7 100644
--- a/examples/swift-package-manager/swift-package-manager.xcodeproj/project.pbxproj
+++ b/examples/swift-package-manager/swift-package-manager.xcodeproj/project.pbxproj
@@ -315,7 +315,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "swift-package-manager/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -336,7 +336,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
INFOPLIST_FILE = "swift-package-manager/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
diff --git a/examples/swift-watchos/swift-watchos.xcodeproj/project.pbxproj b/examples/swift-watchos/swift-watchos.xcodeproj/project.pbxproj
index 1547123eb..7a5d12410 100644
--- a/examples/swift-watchos/swift-watchos.xcodeproj/project.pbxproj
+++ b/examples/swift-watchos/swift-watchos.xcodeproj/project.pbxproj
@@ -503,7 +503,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "swift-watchos WatchKit Extension/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "swift-watchos WatchKit Extension";
@@ -537,7 +537,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "swift-watchos WatchKit Extension/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "swift-watchos WatchKit Extension";
@@ -570,7 +570,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GENERATE_INFOPLIST_FILE = YES;
IBSC_MODULE = swift_watchos_WatchKit_Extension;
INFOPLIST_KEY_CFBundleDisplayName = "swift-watchos WatchKit App";
@@ -594,7 +594,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
GENERATE_INFOPLIST_FILE = YES;
IBSC_MODULE = swift_watchos_WatchKit_Extension;
INFOPLIST_KEY_CFBundleDisplayName = "swift-watchos WatchKit App";
@@ -615,7 +615,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.swift-watchos";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -628,7 +628,7 @@
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.swift-watchos";
PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/examples/swiftui/swiftui.xcodeproj/project.pbxproj b/examples/swiftui/swiftui.xcodeproj/project.pbxproj
index d071da248..54d414c15 100644
--- a/examples/swiftui/swiftui.xcodeproj/project.pbxproj
+++ b/examples/swiftui/swiftui.xcodeproj/project.pbxproj
@@ -326,14 +326,14 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = tvOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = appletvos;
@@ -350,14 +350,14 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = tvOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = appletvos;
@@ -487,7 +487,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
@@ -495,7 +495,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = iphoneos;
@@ -513,7 +513,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
@@ -521,7 +521,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = iphoneos;
@@ -541,7 +541,7 @@
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = macOS/Info.plist;
@@ -550,7 +550,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = macosx;
@@ -569,7 +569,7 @@
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- DEVELOPMENT_TEAM = 372ZUL2ZB7;
+ DEVELOPMENT_TEAM = 7W9PZ27Y5F;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = macOS/Info.plist;
@@ -578,7 +578,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 11.0;
- PRODUCT_BUNDLE_IDENTIFIER = "com.bugsnag.examples.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.examples.swiftui;
PRODUCT_MODULE_NAME = swiftuiapp;
PRODUCT_NAME = swiftui;
SDKROOT = macosx;
diff --git a/features/app_hangs.feature b/features/app_hangs.feature
index 9b16ea501..d39dbf474 100644
--- a/features/app_hangs.feature
+++ b/features/app_hangs.feature
@@ -1,3 +1,4 @@
+@app_hang_test
Feature: App hangs
Background:
diff --git a/features/support/env.rb b/features/support/env.rb
index 72b2c6012..386858a05 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -106,6 +106,17 @@ def skip_between(os, version_lo, version_hi)
skip_this_scenario('Skipping: Run is not configured for stress tests') if ENV['STRESS_TEST'].nil?
end
+# Handles app-hang test failures, enabling restarts if required
+After('@app_hang_test') do |scenario|
+ if scenario.failed?
+
+ # If an assertion has failed, conditionally skip the retry
+ unless scenario.result.exception.is_a?(Test::Unit::AssertionFailedError)
+ Maze::Hooks::ErrorCodeHook.exit_code = Maze::Api::ExitCode::APPIUM_APP_HANG_FAILURE
+ end
+ end
+end
+
Maze.hooks.before do |_scenario|
# Reset to defaults in case previous scenario changed them
Maze.config.captured_invalid_requests = Set[:errors, :sessions, :builds, :uploads, :sourcemaps]