Skip to content

Commit a930c80

Browse files
authored
feat: Added support for arm64e (#3398)
A developer may choose the arm64e architecture for their iOS app to benefit from enhanced security features. Sentry was not compiling for this architecture due to issues with accessing machine context properties
1 parent c7aec2a commit a930c80

File tree

15 files changed

+83
-39
lines changed

15 files changed

+83
-39
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
- Added breadcrumb.origin private field (#4358)
88
- Custom redact modifier for SwiftUI (#4362)
9+
- Add support for arm64e (#3398)
910
- Add mergeable libraries support to dynamic libraries (#4381)
1011

1112
### Improvements

Samples/iOS-Swift/iOS-Swift.xcodeproj/project.pbxproj

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
D8AE48CF2C57E0BD0092A2A6 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8AE48C82C57DC2F0092A2A6 /* WebViewController.swift */; };
102102
D8B56CF0273A8D97004DF238 /* Sentry.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 630853322440C44F00DDE4CE /* Sentry.framework */; };
103103
D8B56CF1273A8D97004DF238 /* Sentry.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 630853322440C44F00DDE4CE /* Sentry.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
104+
D8BC843E2B021C5200A662B7 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4F33F7271EBD2500C8591E /* SwiftUIView.swift */; };
104105
D8C33E1F29FBB1F70071B75A /* UIEventBreadcrumbsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C33E1E29FBB1F70071B75A /* UIEventBreadcrumbsController.swift */; };
105106
D8C33E2629FBB8D90071B75A /* UIEventBreadcrumbTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8C33E2529FBB8D90071B75A /* UIEventBreadcrumbTests.swift */; };
106107
D8D7BB4A2750067900044146 /* UIAssert.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8D7BB492750067900044146 /* UIAssert.swift */; };
@@ -1146,6 +1147,7 @@
11461147
isa = PBXSourcesBuildPhase;
11471148
buildActionMask = 2147483647;
11481149
files = (
1150+
D8BC843E2B021C5200A662B7 /* SwiftUIView.swift in Sources */,
11491151
D8832B1A2AF5000F00C522B0 /* TopViewControllerInspector.swift in Sources */,
11501152
D8AE48CF2C57E0BD0092A2A6 /* WebViewController.swift in Sources */,
11511153
84BA71F22C8F73FD0045B828 /* DSNDisplayViewController.swift in Sources */,
@@ -1417,7 +1419,7 @@
14171419
"$(inherited)",
14181420
"@executable_path/Frameworks",
14191421
);
1420-
MARKETING_VERSION = 8.37.0-beta.1;
1422+
MARKETING_VERSION = "8.37.0-beta.1";
14211423
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.sample.iOS-Swift";
14221424
PRODUCT_NAME = "$(TARGET_NAME)";
14231425
PROVISIONING_PROFILE_SPECIFIER = "match Development io.sentry.sample.iOS-Swift";
@@ -1446,7 +1448,7 @@
14461448
"$(inherited)",
14471449
"@executable_path/Frameworks",
14481450
);
1449-
MARKETING_VERSION = 8.37.0-beta.1;
1451+
MARKETING_VERSION = "8.37.0-beta.1";
14501452
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.sample.iOS-Swift";
14511453
PRODUCT_NAME = "$(TARGET_NAME)";
14521454
PROVISIONING_PROFILE_SPECIFIER = "match AppStore io.sentry.sample.iOS-Swift";
@@ -1730,11 +1732,16 @@
17301732
84D4FE8528ECD1EA00EDAAFE /* Test */ = {
17311733
isa = XCBuildConfiguration;
17321734
buildSettings = {
1735+
ARCHS = (
1736+
"$(ARCHS_STANDARD)",
1737+
arm64e,
1738+
);
17331739
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
17341740
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
17351741
CODE_SIGN_ENTITLEMENTS = "iOS13-Swift/iOS13-Swift.entitlements";
17361742
CODE_SIGN_STYLE = Automatic;
17371743
CURRENT_PROJECT_VERSION = 1;
1744+
DEVELOPMENT_TEAM = 97JCY7859U;
17381745
GENERATE_INFOPLIST_FILE = YES;
17391746
INFOPLIST_FILE = "iOS13-Swift/Info.plist";
17401747
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -1762,8 +1769,10 @@
17621769
84D4FE8628ECD1EA00EDAAFE /* Test */ = {
17631770
isa = XCBuildConfiguration;
17641771
buildSettings = {
1772+
CODE_SIGN_IDENTITY = "Apple Development";
17651773
CODE_SIGN_STYLE = Automatic;
17661774
CURRENT_PROJECT_VERSION = 1;
1775+
DEVELOPMENT_TEAM = 97JCY7859U;
17671776
GENERATE_INFOPLIST_FILE = YES;
17681777
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
17691778
LD_RUNPATH_SEARCH_PATHS = (
@@ -1774,6 +1783,7 @@
17741783
MARKETING_VERSION = 1.0;
17751784
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.Sentry.iOS13-SwiftTests";
17761785
PRODUCT_NAME = "$(TARGET_NAME)";
1786+
PROVISIONING_PROFILE_SPECIFIER = "";
17771787
SWIFT_EMIT_LOC_STRINGS = NO;
17781788
SWIFT_VERSION = 5.0;
17791789
TARGETED_DEVICE_FAMILY = "1,2";
@@ -1955,11 +1965,16 @@
19551965
84D4FE8D28ECD1ED00EDAAFE /* TestCI */ = {
19561966
isa = XCBuildConfiguration;
19571967
buildSettings = {
1968+
ARCHS = (
1969+
"$(ARCHS_STANDARD)",
1970+
arm64e,
1971+
);
19581972
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
19591973
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
19601974
CODE_SIGN_ENTITLEMENTS = "iOS13-Swift/iOS13-Swift.entitlements";
19611975
CODE_SIGN_STYLE = Automatic;
19621976
CURRENT_PROJECT_VERSION = 1;
1977+
DEVELOPMENT_TEAM = 97JCY7859U;
19631978
GENERATE_INFOPLIST_FILE = YES;
19641979
INFOPLIST_FILE = "iOS13-Swift/Info.plist";
19651980
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -1987,8 +2002,10 @@
19872002
84D4FE8E28ECD1ED00EDAAFE /* TestCI */ = {
19882003
isa = XCBuildConfiguration;
19892004
buildSettings = {
2005+
CODE_SIGN_IDENTITY = "Apple Development";
19902006
CODE_SIGN_STYLE = Automatic;
19912007
CURRENT_PROJECT_VERSION = 1;
2008+
DEVELOPMENT_TEAM = 97JCY7859U;
19922009
GENERATE_INFOPLIST_FILE = YES;
19932010
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
19942011
LD_RUNPATH_SEARCH_PATHS = (
@@ -1999,6 +2016,7 @@
19992016
MARKETING_VERSION = 1.0;
20002017
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.Sentry.iOS13-SwiftTests";
20012018
PRODUCT_NAME = "$(TARGET_NAME)";
2019+
PROVISIONING_PROFILE_SPECIFIER = "";
20022020
SWIFT_EMIT_LOC_STRINGS = NO;
20032021
SWIFT_VERSION = 5.0;
20042022
TARGETED_DEVICE_FAMILY = "1,2";
@@ -2009,11 +2027,16 @@
20092027
D8269A4A274C096000BD5BD5 /* Debug */ = {
20102028
isa = XCBuildConfiguration;
20112029
buildSettings = {
2030+
ARCHS = (
2031+
"$(ARCHS_STANDARD)",
2032+
arm64e,
2033+
);
20122034
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
20132035
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
20142036
CODE_SIGN_ENTITLEMENTS = "iOS13-Swift/iOS13-Swift.entitlements";
20152037
CODE_SIGN_STYLE = Automatic;
20162038
CURRENT_PROJECT_VERSION = 1;
2039+
DEVELOPMENT_TEAM = 97JCY7859U;
20172040
GENERATE_INFOPLIST_FILE = YES;
20182041
INFOPLIST_FILE = "iOS13-Swift/Info.plist";
20192042
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -2041,11 +2064,16 @@
20412064
D8269A4B274C096000BD5BD5 /* Release */ = {
20422065
isa = XCBuildConfiguration;
20432066
buildSettings = {
2067+
ARCHS = (
2068+
"$(ARCHS_STANDARD)",
2069+
arm64e,
2070+
);
20442071
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
20452072
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
20462073
CODE_SIGN_ENTITLEMENTS = "iOS13-Swift/iOS13-Swift.entitlements";
20472074
CODE_SIGN_STYLE = Automatic;
20482075
CURRENT_PROJECT_VERSION = 1;
2076+
DEVELOPMENT_TEAM = 97JCY7859U;
20492077
GENERATE_INFOPLIST_FILE = YES;
20502078
INFOPLIST_FILE = "iOS13-Swift/Info.plist";
20512079
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -2095,7 +2123,7 @@
20952123
"$(inherited)",
20962124
"@executable_path/Frameworks",
20972125
);
2098-
MARKETING_VERSION = 8.37.0-beta.1;
2126+
MARKETING_VERSION = "8.37.0-beta.1";
20992127
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.sample.iOS-Swift.Clip";
21002128
PRODUCT_NAME = "$(TARGET_NAME)";
21012129
PROVISIONING_PROFILE_SPECIFIER = "match Development io.sentry.sample.iOS-Swift.Clip";
@@ -2130,7 +2158,7 @@
21302158
"$(inherited)",
21312159
"@executable_path/Frameworks",
21322160
);
2133-
MARKETING_VERSION = 8.37.0-beta.1;
2161+
MARKETING_VERSION = "8.37.0-beta.1";
21342162
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.sample.iOS-Swift.Clip";
21352163
PRODUCT_NAME = "$(TARGET_NAME)";
21362164
PROVISIONING_PROFILE_SPECIFIER = "match AppStore io.sentry.sample.iOS-Swift.Clip";
@@ -2143,8 +2171,10 @@
21432171
D85DAA52274C244F004DF43C /* Debug */ = {
21442172
isa = XCBuildConfiguration;
21452173
buildSettings = {
2174+
CODE_SIGN_IDENTITY = "Apple Development";
21462175
CODE_SIGN_STYLE = Automatic;
21472176
CURRENT_PROJECT_VERSION = 1;
2177+
DEVELOPMENT_TEAM = 97JCY7859U;
21482178
GENERATE_INFOPLIST_FILE = YES;
21492179
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
21502180
LD_RUNPATH_SEARCH_PATHS = (
@@ -2155,6 +2185,7 @@
21552185
MARKETING_VERSION = 1.0;
21562186
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.Sentry.iOS13-SwiftTests";
21572187
PRODUCT_NAME = "$(TARGET_NAME)";
2188+
PROVISIONING_PROFILE_SPECIFIER = "";
21582189
SWIFT_EMIT_LOC_STRINGS = NO;
21592190
SWIFT_VERSION = 5.0;
21602191
TARGETED_DEVICE_FAMILY = "1,2";
@@ -2165,8 +2196,10 @@
21652196
D85DAA53274C244F004DF43C /* Release */ = {
21662197
isa = XCBuildConfiguration;
21672198
buildSettings = {
2199+
CODE_SIGN_IDENTITY = "Apple Development";
21682200
CODE_SIGN_STYLE = Automatic;
21692201
CURRENT_PROJECT_VERSION = 1;
2202+
DEVELOPMENT_TEAM = 97JCY7859U;
21702203
GENERATE_INFOPLIST_FILE = YES;
21712204
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
21722205
LD_RUNPATH_SEARCH_PATHS = (
@@ -2177,6 +2210,7 @@
21772210
MARKETING_VERSION = 1.0;
21782211
PRODUCT_BUNDLE_IDENTIFIER = "io.sentry.Sentry.iOS13-SwiftTests";
21792212
PRODUCT_NAME = "$(TARGET_NAME)";
2213+
PROVISIONING_PROFILE_SPECIFIER = "";
21802214
SWIFT_EMIT_LOC_STRINGS = NO;
21812215
SWIFT_VERSION = 5.0;
21822216
TARGETED_DEVICE_FAMILY = "1,2";

Samples/iOS-Swift/iOS13-Swift/AppDelegate.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
2121
SentrySDK.start { options in
2222
options.dsn = dsn
2323
options.debug = true
24-
options.tracesSampleRate = 1.0
25-
if ProcessInfo.processInfo.arguments.contains("--io.sentry.profiling.enable") {
26-
options.profilesSampleRate = 1
24+
if #available(iOS 15.0, *) {
25+
options.enableMetricKit = true
2726
}
27+
// Sampling 100% - In Production you probably want to adjust this
28+
options.tracesSampleRate = 1.0
29+
options.sessionTrackingIntervalMillis = 5_000
30+
options.profilesSampleRate = 1.0
31+
options.attachScreenshot = true
32+
options.attachViewHierarchy = true
33+
options.environment = "test-app"
34+
options.enableTimeToFullDisplayTracing = true
2835
options.initialScope = { scope in
2936
scope.injectGitInformation()
3037
return scope

Samples/iOS-Swift/iOS13-SwiftTests/LaunchUITest.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ class LaunchUITests: XCTestCase {
2525
XCTAssertTrue(app.staticTexts["SwiftUI!"].waitForExistence(timeout: timeout), "SwiftUI not loaded.")
2626
}
2727

28+
func testNavigationTransaction() {
29+
app.buttons["Test Navigation Transaction"].tap()
30+
XCTAssertEqual(app.state, .runningForeground)
31+
}
32+
2833
private func waitForExistenceOfMainScreen() {
2934
XCTAssertTrue(app.buttons["captureMessage"].waitForExistence(timeout: timeout), "Home Screen doesn't exist.")
3035
}

Sentry.xcodeproj/project.pbxproj

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5402,7 +5402,6 @@
54025402
GCC_WARN_SHADOW = YES;
54035403
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
54045404
LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)";
5405-
ONLY_ACTIVE_ARCH = YES;
54065405
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
54075406
PROVISIONING_PROFILE_SPECIFIER = "";
54085407
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -5440,7 +5439,6 @@
54405439
"@executable_path/Frameworks",
54415440
"@loader_path/Frameworks",
54425441
);
5443-
ONLY_ACTIVE_ARCH = NO;
54445442
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
54455443
PROVISIONING_PROFILE_SPECIFIER = "";
54465444
SWIFT_VERSION = 5.0;
@@ -5600,7 +5598,6 @@
56005598
"@executable_path/Frameworks",
56015599
"@loader_path/Frameworks",
56025600
);
5603-
ONLY_ACTIVE_ARCH = YES;
56045601
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
56055602
PROVISIONING_PROFILE_SPECIFIER = "";
56065603
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -5727,7 +5724,6 @@
57275724
"@executable_path/Frameworks",
57285725
"@loader_path/Frameworks",
57295726
);
5730-
ONLY_ACTIVE_ARCH = YES;
57315727
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
57325728
PROVISIONING_PROFILE_SPECIFIER = "";
57335729
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -5776,7 +5772,6 @@
57765772
baseConfigurationReference = D8199DCF29376FF40074249E /* SentrySwiftUI.xcconfig */;
57775773
buildSettings = {
57785774
ALWAYS_SEARCH_USER_PATHS = NO;
5779-
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
57805775
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
57815776
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
57825777
CLANG_ENABLE_MODULES = YES;
@@ -6207,7 +6202,6 @@
62076202
"@executable_path/Frameworks",
62086203
"@loader_path/Frameworks",
62096204
);
6210-
ONLY_ACTIVE_ARCH = NO;
62116205
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
62126206
PROVISIONING_PROFILE_SPECIFIER = "";
62136207
SWIFT_VERSION = 5.0;
@@ -6437,7 +6431,6 @@
64376431
"@executable_path/Frameworks",
64386432
"@loader_path/Frameworks",
64396433
);
6440-
ONLY_ACTIVE_ARCH = YES;
64416434
OTHER_CFLAGS = "-DCARTHAGE_$(CARTHAGE)";
64426435
PROVISIONING_PROFILE_SPECIFIER = "";
64436436
SWIFT_OPTIMIZATION_LEVEL = "-Onone";

Sources/Configuration/Sentry.xcconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ PRODUCT_MODULE_NAME = $(PRODUCT_MODULE_NAME_$(CONFIGURATION))
1919
PRODUCT_NAME = $(PRODUCT_MODULE_NAME)
2020
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.$(PRODUCT_MODULE_NAME)
2121
MODULEMAP_FILE = $(SRCROOT)/Sources/Resources/$(PRODUCT_MODULE_NAME_$(CONFIGURATION)).modulemap
22+
ARCHS = $(ARCHS_STANDARD) arm64e
23+
ARCHS[sdk=*simulator] = $(ARCHS_STANDARD)

Sources/Configuration/SentrySwiftUI.xcconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ OTHER_LDFLAGS_Test = -framework Sentry
1414
OTHER_LDFLAGS_TestCI = -framework Sentry
1515
OTHER_LDFLAGS_Release = -framework Sentry
1616
OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(CONFIGURATION))
17+
ARCHS = $(ARCHS_STANDARD) arm64e
18+
ARCHS[sdk=*simulator] = $(ARCHS_STANDARD)

Sources/Sentry/SentryBacktrace.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ namespace profiling {
110110
}
111111

112112
void
113-
enumerateBacktracesForAllThreads(const std::function<void(const Backtrace &)> &f,
114-
const std::shared_ptr<ThreadMetadataCache> &cache)
113+
enumerateBacktracesForAllThreads(
114+
const std::function<void(const Backtrace &)> &f, ThreadMetadataCache *cache)
115115
{
116116
const auto pair = ThreadHandle::allExcludingCurrent();
117117
for (const auto &thread : pair.first) {

Sources/Sentry/SentryProfiler.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
}
5757

5858
@implementation SentryProfiler {
59-
std::shared_ptr<SamplingProfiler> _samplingProfiler;
59+
std::unique_ptr<SamplingProfiler> _samplingProfiler;
6060
}
6161

6262
+ (void)load
@@ -165,7 +165,7 @@ - (void)start
165165

166166
SentryProfilerState *const state = [[SentryProfilerState alloc] init];
167167
self.state = state;
168-
_samplingProfiler = std::make_shared<SamplingProfiler>(
168+
_samplingProfiler = std::make_unique<SamplingProfiler>(
169169
[state](auto &backtrace) {
170170
Backtrace backtraceCopy = backtrace;
171171
backtraceCopy.absoluteTimestamp

Sources/Sentry/SentrySamplingProfiler.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace profiling {
2121
mach_port_t port;
2222
clock_serv_t clock;
2323
mach_timespec_t delaySpec;
24-
std::shared_ptr<ThreadMetadataCache> cache;
24+
ThreadMetadataCache *cache;
2525
std::function<void(const Backtrace &)> callback;
2626
std::atomic_uint64_t &numSamples;
2727
std::function<void()> onThreadStart;
@@ -77,7 +77,7 @@ namespace profiling {
7777
SamplingProfiler::SamplingProfiler(
7878
std::function<void(const Backtrace &)> callback, std::uint32_t samplingRateHz)
7979
: callback_(std::move(callback))
80-
, cache_(std::make_shared<ThreadMetadataCache>())
80+
, cache_(std::make_unique<ThreadMetadataCache>())
8181
, isInitialized_(false)
8282
, isSampling_(false)
8383
, port_(0)
@@ -139,8 +139,8 @@ namespace profiling {
139139
SENTRY_ASYNC_SAFE_LOG_ERRNO_RETURN(pthread_attr_setschedparam(&attr, &param));
140140
}
141141

142-
const auto params = new SamplingThreadParams { port_, clock_, delaySpec_, cache_, callback_,
143-
std::ref(numSamples_), std::move(onThreadStart) };
142+
const auto params = new SamplingThreadParams { port_, clock_, delaySpec_, cache_.get(),
143+
callback_, std::ref(numSamples_), std::move(onThreadStart) };
144144
if (SENTRY_ASYNC_SAFE_LOG_ERRNO_RETURN(
145145
pthread_create(&thread_, &attr, samplingThreadMain, params))
146146
!= 0) {

0 commit comments

Comments
 (0)