I often get questions about third-party crash reporting. These usually show up in one of two contexts:
Folks are trying to implement their own crash reporter.
Folks have implemented their own crash reporter and are trying to debug a problem based on the report it generated.
This is a complex issue and this post is my attempt to untangle some of that complexity.
If you have a follow-up question about anything I've raised here, please put it in a new thread with the Debugging tag.
IMPORTANT All of the following is my own direct experience. None of it should be considered official DTS policy. If you have a specific question that needs a direct answer — perhaps you’re trying to convince your boss that implementing your own crash reporter is a very bad idea — start a dedicated thread here on the forums and we can discuss the details there. Use whatever subtopic is appropriate for your issue, but make sure to add the Debugging tag so that I see it go by.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Scope
First, I can only speak to the technical side of this issue. There are other aspects that are beyond my remit:
I don’t work for App Review, and only they can give definitive answers about what will or won’t be allowed on the store.
Implementing your own crash reporter has significant privacy implications.
IMPORTANT If you implement your own crash reporter, discuss the privacy impact with a lawyer.
This post assumes that you are implementing your own crash reporter. A lot of folks use a crash reporter from another third party. From my perspective these are the same thing. If you use a custom crash reporter, you are responsible for its behaviour, both good and bad, regardless of where the actual code came from.
Note If you use a crash reporter from another third party, run the tests outlined in Preserve the Apple Crash Report to verify that it’s working well.
General Advice
I strongly advise against implementing your own crash reporter. It’s very easy to create a basic crash reporter that works well enough to debug simple problems. It’s impossible to implement a good crash reporter, one that’s reliable, binary compatible, and sufficient to debug complex problems. The bulk of this post is a low-level explanation of that impossibility.
Rather than attempting the impossible, I recommend that you lean in to Apple’s crash reporter. In recent years it’s acquired some really cool new features:
If you’re creating an App Store app, the Xcode organiser gives you easy, interactive access to Apple crash reports.
If you’re an enterprise developer, consider switching to Custom App Distribution. This yields all the benefits of App Store distribution without your app being generally available on the store.
iOS 14 and macOS 12 report crashes in MetricKit. This is a very cool feature, and I’m surprised by how few people use it effectively.
If you previously dismissed Apple crash reports as insufficient, I encourage you to reconsider that decision.
Why Is This Impossible?
Earlier I said “It’s impossible to implement a good crash reporter”, and I want to explain why I’m confident enough in my conclusions to use that specific word. There are two fundamental problems here:
On iOS (and the other iOS-based platforms, watchOS and tvOS) your crash reporter must run inside the crashed process. That means it can never be 100% reliable. If the process is crashing then, by definition, it’s in an undefined state. Attempting to do real work in that state is just asking for problems [1].
To get good results your crash reporter must be intimately tied to system implementation details. These can change from release to release, which invalidates the assumptions made by your crash reporter. This isn’t a problem for the Apple crash reporter because it ships with the system. However, a crash reporter that’s built in to your product is always going to be brittle.
I’m speaking from hard-won experience here. I worked for DTS during the PowerPC-to-Intel transition, and saw a lot of folks with custom crash reporters struggle through that process.
Still, this post exists because lots of folks ignore this reality, so the subsequent sections contain advice about specific technical issues.
WARNING Do not interpret any of the following as encouragement to implement your own crash reporter. I strongly advise against that. However, if you ignore my advice then you should at least try to minimise the risk, which is what the rest of this document is about.
[1] On macOS it’s possible for your crash reporter to run out of process, just like the Apple crash reporter. However, possible is not the same as easy. In fact, running out of process can make things worse: It prevents you from geting critical state for the crashed process without being tightly bound to OS implementation details. It would be nice if Apple provided APIs for this sort of thing, but that’s currently not the case.
Preserve the Apple Crash Report
You must ensure that your crash reporter doesn’t disrupt the Apple crash reporter. This is important for three reasons:
Some fraction of your crashes will not be caused by your code but by problems in framework code, and accurate Apple crash reports are critical in diagnosing such issues.
When dealing with really hard-to-debug problems, you need the more obscure info that’s shown in the Apple crash report.
If you’re working with someone from Apple (here on the forums, via a bug report, or a DTS case, or whatever), they’re going to want an accurate Apple crash report. If your crash reporter is disrupting the Apple crash reporter — either preventing it from generating crash reports entirely [1], or distorting those crash reports — that limits how much they can help you.
IMPORTANT This is not a theoretical concern. The forums have many threads where I’ve been unable to help folks debug a gnarly problem because their third-party crash reporter didn’t preserve the Apple crash report (see here, here, and here for some examples).
To avoid these issues I recommend that you test your crash reporter’s impact on the Apple crash reporter. The basic idea is:
Create a program that generates a set of specific crashes.
Run through each crash.
Verify that your crash reporter produces sensible results.
Verify that the Apple crash reporter produces the same results as it does without your crash reporter
With regards step 1, your test suite should include:
An un-handled language exception thrown by your code
An un-handled language exception thrown by the OS (accessing an NSArray out of bounds is an easy way to get this)
Various machine exceptions (at a minimum, memory access, illegal instruction, and breakpoint exceptions)
Stack overflow
Make sure to test all of these cases on both the main thread and a secondary thread.
With regards step 4, check that the resulting Apple crash report includes correct values for:
The exception info
The crashed thread
That thread’s state
Any application-specific info, and especially the last exception backtrace
[1] A particularly pathological behaviour here is to end your crash reporter by calling exit. This completely suppresses the Apple crash report. Some third-party language runtimes ‘helpfully’ include such a crash reporter, which makes it very hard to debug problems that occur within your process but outside of that language.
Signals
Many third-party crash reporters use UNIX signals to catch the crash. This is a shame because using Mach exception handling, the mechanism used by the Apple crash reporter, is generally a better option. However, there are two reasons to favour UNIX signals over Mach exception handling:
On iOS-based platforms your crash reporter must run in-process, and doing in-process Mach exception handling is not feasible.
Folks are a lot more familiar with UNIX signals. Mach exception handling, and Mach messaging in general, is pretty darned obscure.
If you use UNIX signals for your crash reporter, be aware that this API has some gaping pitfalls. First and foremost, your signal handler can only use async signal safe functions [1]. You can find a list of these functions in sigaction man page [2] [3].
WARNING This list does not include malloc. This means that a crash reporter’s signal handler cannot use Objective-C or Swift, as there’s no way to constrain how those language runtimes allocate memory [4]. That means you’re stuck with C or C++, but even there you have to be careful to comply with this constraint.
The Operative: It’s worse than you know.
Captain Malcolm Reynolds: It usually is.
Many crash reports use functions like backtrace (see its man page) to get a backtrace from their signal handler. There’s two problems with this:
backtrace is not an async signal safe function.
backtrace uses a naïve algorithm that doesn’t deal well with cross signal handler stack frames [5].
The latter point is particularly worrying, because it hides the identity of the stack frame that triggered the signal.
If you’re going to backtrace out of a signal, you must use the crashed thread’s state (accessible via the handlers uap parameter) to start your backtrace.
Apropos that, if your crash reporter wants to log the state of the crashed thread, that’s the place to get it.
Your signal handler must be prepared to be called by multiple threads. A typical crashing signal (like SIGSEGV) is delivered to the thread that triggered the machine exception. While your signal handler is running on that thread, other threads in your process continue to run. One of these threads could crash, causing it to call your signal handler.
It’s a good idea to suspend all threads in your process early in your signal handler. However, there’s no way to completely eliminate this window.
Note The need to suspend all the other threads in your process is further evidence that sticking to async signal safe functions is required. An unsafe function might depend on a thread you’ve suspended.
A typical crashing signal is delivered on the thread that triggered the machine exception. If the machine exception was caused by a stack overflow, the system won’t have enough stack space to call your signal handler. You can tell the system to switch to an alternative stack (see the discussion of SA_ONSTACK in the sigaction man page) but that isn’t a complete solution (because of the thread issue discussed immediately above).
Finally, there’s the question of how to exit from your signal handler. You must not call exit. There’s two problems with doing that:
exit is not async signal safe. In fact, exit can run arbitrary code via handlers registered with atexit. If you want to exit the process, call _exit.
Exiting the process is a bad idea anyway, because it will prevent the Apple crash reporter from running. This is very poor form. For an explanation as to why, see Preserve the Apple Crash Report (above).
A better solution is to unregister your signal handler (set it to SIG_DFL) and then return. This will cause the crashed process to continue execution, crash again, and generate a crash report via the Apple crash reporter.
[1] While the common signals caught by a crash reporter are not technically async signals (except SIGABRT), you still have to treat them as async signals because they can occur on any thread at any time.
[2] It’s reasonable to extend this list to other routines that are implemented as thin shims on a system call. For example, I have no qualms about calling vm_read (see below) from a signal handler.
[3] Be aware, however, that even this list has caveats. See my Async Signal Safe Functions vs Dyld Lazy Binding post for details.
[4] I expect that it’ll eventually be possible to write signal handlers in Swift, possibly using some facility that evolves from the the existing, but unsupported, @_noAllocation and @_noLocks attributes. If you’d like to get involved with that effort, I recommend that engage with the Swift Evolution process.
[5] Cross signal handler stack frames are pushed on to the stack by the kernel when it runs a signal handler on a thread. As there’s no API to learn about the structure of these frames, there’s no way to backtrace across one of these frames in isolation. I’m happy to go into details but it’s really not relevant to this discussion [6]. If you’re interested, start a new thread with the Debugging tag and we can chat there.
[6] (Arg, my footnotes have footnotes!) The exception to this is where your trying to generate a crash report for code running in a signal handler. That’s not easy, and frankly you’re better off avoiding signal handlers in general. Where possible, handle signals via a Dispatch event source.
Reading Memory
A signal handler must be very careful about the memory it touches, because the contents of that memory might have been corrupted by the crash that triggered the signal. My general rule here is that the signal handler can safely access:
Its code
Its stack (subject to the constraints discussed earlier)
Its arguments
Immutable global state
In the last point, I’m using immutable to mean immutable after startup. It’s reasonable to set up some global state when the process starts, before installing your signal handler, and then rely on it in your signal handler.
Changing any global state after the signal handler is installed is dangerous, and if you need to do that you must be careful to ensure that your signal handler sees consistent state, even though a crash might occur halfway through your change.
You can’t protect this global state with a mutex because mutexes are not async signal safe (and even if they were you’d deadlock if the mutex was held by the thread that crashed). You should be able to use atomic operations for this, but atomic operations are notoriously hard to use correctly (if I had a dollar for every time I’ve pointed out to a developer they’re using atomic operations incorrectly, I’d be very badly paid (-: but that’s still a lot of developers!).
If your signal handler reads other memory, it must take care to avoid crashing while doing that read. There’s no BSD-level API for this [1], so I recommend that you use vm_read.
[1] The traditional UNIX approach for doing this is to install a signal handler to catch any memory access exceptions triggered by the read, but now we’re talking signal handling within a signal handler and that’s just silly.
Writing Files
If your want to write a crash report from your signal handler, you must use low-level UNIX APIs (open, write, close) because only those low-level APIs are documented to be async signal safe. You must also set up the path in advance because the standard APIs for determining where to write the file (NSFileManager, for example) are not async signal safe.
Offline Symbolication
Do not attempt to do symbolication from your signal handler. Rather, write enough information to your crash report to support offline symbolication. Specifically:
The addresses to symbolicate
For each Mach-O image in the process:
The image’s path
The image’s build UUID [1]
The image’s load address
You can get most of the Mach-O image information using the APIs in <mach-o/dyld.h> [2]. Be aware, however, that these APIs are not async signal safe. You’ll need to get this information in advance and cache it for your signal handler to record.
This is complicated by the fact that the list of Mach-O images can change as you process loads and unloads code. This requires you to share mutable state with your signal handler, which is exactly what I recommend against in Reading Memory.
Note You can learn about images loading and unloading using _dyld_register_func_for_add_image and _dyld_register_func_for_remove_image respectively.
[1] If you’re unfamiliar with that term, see TN3178 Checking for and resolving build UUID problems and the documents it links to.
[2] I believe you’ll need to parse the Mach-O load commands to get the build UUID.
What to Include
When deciding what to include in a crash report, there’s a three-way balance to be struck:
The more information you include, the easier it is to diagnose problems.
Some information is hard to obtain, either because there’s no public API to get that information, or because the API is not available to your crash reporter.
Some information is so privacy-sensitive that it has no place in a crash report.
Apple’s crash reporter strikes its own balance here, and I recommend that you try to include everything that it includes, subject to the limitations described in the second point.
Here’s what I’d considered to be a minimal list:
Information about the machine exception that triggered the crash
For memory access exceptions, the address of the access that triggered the crash
Backtraces of all the threads (sometimes the backtrace of a non-crashing thread can yield critical information about the crash)
The crashed thread
Its thread state
A list of Mach-O images, as discussed in the Offline Symbolication section
IMPORTANT Make sure you report the thread backtraces in a consistent order. Without that it’s hard to correlate information across crash reports.
Revision History
2025-08-25 Added some links to examples of third-party crash reports not preserving the Apple crash report. Added a link to TN3178. Made other minor editorial changes.
2022-05-16 Fixed a broken link.
2021-09-10 Expanded the General Advice section to include pointers to Apple crash report resources, including MetricKit. Split the second half of that section out in to a new Why Is This Impossible? section. Made minor editoral changes.
2021-02-27 Fixed the formatting. Made minor editoral changes.
2019-05-13 Added a reference to my Async Signal Safe Functions vs Dyld Lazy Binding post.
2019-02-15 Expanded the introduction to the Preserve the Apple Crash Report section.
2019-02-14 Clarified the complexities of an out-of-process crash reporter. Added the What to Include section. Enhanced the Signals section to cover reentrancy and stack overflow. Made minor editoral changes.
2019-02-13 Made minor editoral changes. Added a new footnote to the Signals section.
2019-02-12 First posted.
Xcode
RSS for tagBuild, test, and submit your app using Xcode, Apple's integrated development environment.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I'm trying to evaluate if we can support AR navigation with MapKit. The feature is supposed to be available for users in US.
I tried to run the sample on my iPhone: https://developer.apple.com/documentation/arkit/tracking-geographic-locations-in-ar?language=objc
But I'm in a location that ARGeoTrackingConfiguration.checkAvailabilityWithCompletionHandler: always return false. I think ARGeoAnchor isn't supported in my location.
I tried to use simulated locations by
Adding a gpx file when launching the app.
Enabling Xcode -> Debug -> Simulate Location -> New York, NY, US
But the availability for ARGeoAnchor is still false.
Is that possible for me to develop the ARGeoAnchor feature outside of the covered areas?
This is the complete Playground code:
import MapKit
import SwiftUI
import PlaygroundSupport
struct AddressSearchView: View {
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194),
span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)
)
var body: some View {
VStack {
Map(position: .constant(MapCameraPosition.region(region))) {
}
.frame(height: 300)
}
}
}
struct AddressSearchView_Previews: PreviewProvider {
static var previews: some View {
AddressSearchView()
}
}
PlaygroundPage.current.setLiveView(AddressSearchView())
When I try to run this I get this in the debug console:
error: Couldn't look up symbols:
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
protocol witness table for _MapKit_SwiftUI.EmptyMapContent : _MapKit_SwiftUI.MapContent in _MapKit_SwiftUI
Hint: The expression tried to call a function that is not present in the target, perhaps because it was optimized out by the compiler.
the preview never shows up. If I use other SwiftUI components and not the map it works fine. What is happening?
Playground target is Swift 6 macOS (iOS does the same).
Xcode 16.2
Dear Developers, I am having some problems with Reality Composer Pro on Mac. Specifically, I don't understand how to manage some timeline functions. I have an object that has a double animation, an opening animation and a closing animation. On a first tap the object should open through animation 1, while on the second tap the object should close through animation 2. Only the two animations conflict. In addition, animation 1 does not stop at the last frame but returns the object to the position of frame 0. Do you have any solutions? Thank you all
Hi,
When build our project on one Mac/Xcode, build got interrupt and failed, it state that
"The signature of
"xxxxxx.x-framework" cannot be validated and may have been compromised.
Validation Error: The signing certificate has been revoked
(CSSMERR_TP_CERT_REVOKED)"
One strang thing is this build failed only on Xcode/mac, but the exact the project could be built successfully.
So question here:
How can skip this warning to make the project build successfully?
More curious, how this interrupt only happened on one Xcode, while others are ok?
Thanks,
KK
Topic:
Developer Tools & Services
SubTopic:
Xcode
I just started working with Flutter. I use a Macbook m2 and my phone is an iPhone XR. I made a very simple application but no matter what I did, I couldn't start my application on my iPhone XR. I got help from all the AIs but we couldn't do it. I deleted everything including Xcode, Android Studio and Flutter and reinstalled them and I followed the SDK installation step by step on the Flutter page but I can't run my project on Xcode. I entered my Apple account including all the signings and certificates via the .workspace file extension but it didn't work. The error I get from Xcode keeps changing. We installed podfiles with the support I got from the AIs and after some fiddling, I got the only error right now: Command PhaseScriptExecution failed with a nonzero exit code
Domain: com.apple.dt.CoreDeviceError
Code: 3000
Failure Reason: The path to the provided bundle's main executable could not be determined.
Recovery Suggestion: Ensure that your bundle's Info.plist contains a value for the key CFBundleExecutable.
Topic:
Developer Tools & Services
SubTopic:
Xcode
I’m developing an app to save words that users learn in a language they are studying.
Here’s the basic workflow:
Type a new word
Add the new word
Every time a word is added, it gets saved to a list that includes its meaning and the name of the language — useful when saving words in multiple languages
Problem:
For some reason, the “Add new word” button only works for the first word. The second word is not being added to the list.
Here is my code:
import SwiftUI
import NaturalLanguage
import Translation
struct ContentView: View {
@State private var inputWord: String = ""
@State private var detectedLanguage: String?
@State private var translationConfiguration: TranslationSession.Configuration?
@StateObject private var viewModel = WordViewModel()
var body: some View {
VStack(spacing: 24) {
// Input field
TextField("Type a word in any language", text: $inputWord)
.padding()
.background(Color(.systemGray6))
.cornerRadius(10)
// Button to translate and save
Button("Add new word") {
translateAndSave()
}
// .disabled(inputWord.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
.buttonStyle(.borderedProminent)
// List of saved words
Text("My Words")
.font(.system(.title2))
List {
ForEach(viewModel.words) { word in
VStack(alignment: .leading, spacing: 4) {
Text(word.inputWord)
.font(.headline)
Text(word.nativeTranslation)
.font(.subheadline)
.foregroundColor(.gray)
Text(word.detectedLanguage.uppercased())
.font(.caption)
.foregroundColor(.blue)
}
.padding(.vertical, 4)
}
}
Spacer()
}
.padding()
.animation(.easeInOut, value: detectedLanguage)
// Automatically triggers translation when configuration changes
.translationTask(translationConfiguration) { session in
do {
let response = try await session.translate(inputWord)
viewModel.addWord(
input: inputWord,
native: response.targetText,
detected: detectedLanguage ?? "Unknown"
)
// Reset fields after saving
inputWord = ""
detectedLanguage = nil
translationConfiguration = nil
} catch {
// Handle error
print("Translation error: \(error.localizedDescription)")
}
}
}
// Function to detect language
private func detectLanguage() {
let recognizer = NLLanguageRecognizer()
recognizer.processString(inputWord)
if let code = recognizer.dominantLanguage?.rawValue {
let name = Locale.current.localizedString(forIdentifier: code)
detectedLanguage = name?.capitalized
} else {
detectedLanguage = "Unable to detect"
}
}
// Function to prepare translation
private func translateAndSave() {
detectLanguage()
translationConfiguration = TranslationSession.Configuration(
source: nil,
target: Locale.Language(identifier: "en")
)
}
}
Question:
Does anyone have any idea what I can do to fix this?
When renaming A.value, it also causes the value inside the conditional compilation in checkRename to be renamed.
How to resolve or avoid this situation?
class A {
let value = "1"
}
class B {
var value = 0
}
func checkRename() {
var b = B()
#if os(iOS)
b.value = 456
#elseif os(macOS)
b.value = 789
#endif
}
Xcode Version 15.4 (15F31d).
Topic:
Developer Tools & Services
SubTopic:
Xcode
I have an iOS app, and I am trying to add a companion WatchOS app. My iOS app depends on 2 libraries:
GoogleMobileAds
FirebaseAnalyticsWithoutAdIdSupport
When I add a new target for WatchOS, the preview build starts to fail. I am not adding any libraries to WatchOS. The Google Ads and Firebase Analytics libs are only under the iOS target.
I am unable to run the preview, I get an error when trying to build the watch scheme. The preview does not work. The build just crashes. I've included the error log below.
But, here are the steps I've tried so far:
Delete folders inside Derived Data
Run a clean build (Cmd + Option + Shift + K)
Delete scheme and create a new one
Reset Package Cache
Restart Xcode
Restart Macbook
But, it just does not work. I do not understand why the watchOS target is erroring for "GoogleUserMessagingPlatform" and "GoogleMobileAdsTarget" when those packages are not linked/used for the watchOS.
SchemeBuildError: Failed to build the scheme “timerWatch Watch App”
While building for watchOS Simulator, no library for this platform was found in '/Users/k/Library/Developer/Xcode/DerivedData/timer-dhkdhvfcqtfgskfdxpmupujswtuh/SourcePackages/artifacts/swift-package-manager-google-user-messaging-platform/UserMessagingPlatform/UserMessagingPlatform.xcframework'. (in target 'UserMessagingPlatformTarget' from project 'GoogleUserMessagingPlatform')
Build target UserMessagingPlatformTarget:
/Users/k/Library/Developer/Xcode/DerivedData/timer-dhkdhvfcqtfgskfdxpmupujswtuh/SourcePackages/artifacts/swift-package-manager-google-user-messaging-platform/UserMessagingPlatform/UserMessagingPlatform.xcframework:1:1: error: While building for watchOS Simulator, no library for this platform was found in '/Users/k/Library/Developer/Xcode/DerivedData/timer-dhkdhvfcqtfgskfdxpmupujswtuh/SourcePackages/artifacts/swift-package-manager-google-user-messaging-platform/UserMessagingPlatform/UserMessagingPlatform.xcframework'. (in target 'UserMessagingPlatformTarget' from project 'GoogleUserMessagingPlatform')
Build target GoogleMobileAdsTarget:
/Users/k/Library/Developer/Xcode/DerivedData/timer-dhkdhvfcqtfgskfdxpmupujswtuh/SourcePackages/artifacts/swift-package-manager-google-mobile-ads/GoogleMobileAds/GoogleMobileAds.xcframework:1:1: error: While building for watchOS Simulator, no library for this platform was found in '/Users/k/Library/Developer/Xcode/DerivedData/timer-dhkdhvfcqtfgskfdxpmupujswtuh/SourcePackages/artifacts/swift-package-manager-google-mobile-ads/GoogleMobileAds/GoogleMobileAds.xcframework'. (in target 'GoogleMobileAdsTarget' from project 'GoogleMobileAds')
I'm experiencing an issue with a custom font not loading properly in Xcode 16.3. The font files are included in the bundle, listed in Info.plist, and verified for correct names using UIFont.familyNames, but they still don't appear at runtime. Has anyone else run into this with Xcode 16.3? Could this be related to recent changes in asset packaging or font catalogs?
I have tried several options so far to no avail:
Unarchiver shuts down silently (after ~1.5hr of trying to unarchive).
xip console tool fails after ~1.5hr with this error:
xip: signing certificate was "Software Update" (validation not attempted)
xip: error: The archive “Xcode_12.5.1.xip” failed to be moved to the final destination due to the error: The operation couldn’t be completed. No such file or directory.
extracted .app is incomplete though weighs about 30GB
unxip extracts for ~1.5hr (being stuck for ~40min on Expanding items from “Xcode_12.5.1.xip”: 99%) and then shuts down. extracted .app is incomplete with the size of ~1.9GB
Are there any other options I can try to extract Xcode 12.5.1 xip archive?
Would external drive be an issue (I have Xcode_12.5.1.xip on external drive)?
SwiftCompile normal arm64 Compiling\ Checkmark.swift,\ SimpleClockView.swift,\ Constants.swift,\ CountDayHomeView.swift,\
................
logs.txt
eekfnzfsodwhcebuwavalipzmswp/Build/Intermediates.noindex/FocusPomoTimer.build/Debug-iphonesimulator/FocusPomoTimer.build/DerivedSources/IntentDefinitionGenerated/AppRunningIntents/AppRunningIntentIntent.swift
/Users/wangzhenghong/Library/Developer/Xcode/DerivedData/FocusPomoTimer-eekfnzfsodwhcebuwavalipzmswp/Build/Intermediates.noindex/FocusPomoTimer.build/Debug-iphonesimulator/FocusPomoTimer.build/DerivedSources/IntentDefinitionGenerated/AppRunningIntents/AppStopIntentIntent.swift
/Users/wangzhenghong/Library/Developer/Xcode/DerivedData/FocusPomoTimer-eekfnzfsodwhcebuwavalipzmswp/Build/Intermediates.noindex/FocusPomoTimer.build/Debug-iphonesimulator/FocusPomoTimer.build/DerivedSources/GeneratedAssetSymbols.swift
While evaluating request TypeCheckSourceFileRequest(source_file "/Users/wangzhenghong/MyApp/NewPomoProject/FocusPomoTimer/FocusPomoTimer/Views/TimerViews/SimpleClockView.swift")
While evaluating request TypeCheckFunctionBodyRequest(FocusPomoTimer.(file).SimpleClockView._@/Users/wangzhenghong/MyApp/NewPomoProject/FocusPomoTimer/FocusPomoTimer/Views/TimerViews/SimpleClockView.swift:27:25)
While evaluating request PreCheckResultBuilderRequest(FocusPomoTimer.(file).SimpleClockView._@/Users/wangzhenghong/MyApp/NewPomoProject/FocusPomoTimer/FocusPomoTimer/Views/TimerViews/SimpleClockView.swift:27:25)
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var LLVM_SYMBOLIZER_PATH to point to it):
0 swift-frontend 0x0000000107ab2a9c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x0000000107ab0cf0 llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x0000000107ab3068 SignalHandler(int) + 292
3 libsystem_platform.dylib 0x000000019ee86de4 _sigtramp + 56
4 swift-frontend 0x0000000103d03758 swift::DiagnosticEngine::formatDiagnosticText(llvm::raw_ostream&, llvm::StringRef, llvm::ArrayRefswift::DiagnosticArgument, swift::DiagnosticFormatOptions) + 432
5 swift-frontend 0x0000000103d042ac swift::DiagnosticEngine::formatDiagnosticText(llvm::raw_ostream&, llvm::StringRef, llvm::ArrayRefswift::DiagnosticArgument, swift::DiagnosticFormatOptions) + 3332
6 swift-frontend 0x00000001028148d0 swift::AccumulatingFileDiagnosticConsumer::addDiagnostic(swift::SourceManager&, swift::DiagnosticInfo const&) + 944
7 swift-frontend 0x00000001028144e8 swift::AccumulatingFileDiagnosticConsumer::handleDiagnostic(swift::SourceManager&, swift::DiagnosticInfo const&) + 32
8 swift-frontend 0x0000000103d06960 swift::DiagnosticEngine::emitDiagnostic(swift::Diagnostic const&) + 4276
9 swift-frontend 0x0000000102db4b10 swift::DiagnosticTransaction::~DiagnosticTransaction() + 184
10 swift-frontend 0x000000010350fbf0 (anonymous namespace)::PreCheckResultBuilderApplication::walkToExprPre(swift::Expr*) + 720
11 swift-frontend 0x0000000103bb9dac (anonymous namespace)::Traversal::visit(swift::Stmt*) + 2748
12 swift-frontend 0x00000001035093c8 swift::PreCheckResultBuilderRequest::evaluate(swift::Evaluator&, swift::PreCheckResultBuilderDescriptor) const + 188
13 swift-frontend 0x00000001038bf294 swift::SimpleRequest<swift::PreCheckResultBuilderRequest, swift::ResultBuilderBodyPreCheck (swift::PreCheckResultBuilderDescriptor), (swift::RequestFlags)2>::evaluateRequest(swift::PreCheckResultBuilderRequest const&, swift::Evaluator&) + 36
14 swift-frontend 0x0000000103510568 swift::PreCheckResultBuilderRequest::OutputType swift::Evaluator::getResultCached<swift::PreCheckResultBuilderRequest, swift::PreCheckResultBuilderRequest::OutputType swift::evaluateOrDefaultswift::PreCheckResultBuilderRequest(swift::Evaluator&, swift::PreCheckResultBuilderRequest, swift::PreCheckResultBuilderRequest::OutputType)::'lambda'(), (void*)0>(swift::PreCheckResultBuilderRequest const&, swift::PreCheckResultBuilderRequest::OutputType swift::evaluateOrDefaultswift::PreCheckResultBuilderRequest(swift::Evaluator&, swift::PreCheckResultBuilderRequest, swift::PreCheckResultBuilderRequest::OutputType)::'lambda'()) + 1256
15 swift-frontend 0x00000001035071f0 swift::TypeChecker::applyResultBuilderBodyTransform(swift::FuncDecl*, swift::Type) + 216
16 swift-frontend 0x00000001038c4d14 swift::TypeCheckFunctionBodyRequest::evaluate(swift::Evaluator&, swift::AbstractFunctionDecl*) const + 484
17 swift-frontend 0x0000000103cd5e80 swift::TypeCheckFunctionBodyRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType swift::evaluateOrDefaultswift::TypeCheckFunctionBodyRequest(swift::Evaluator&, swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType)::'lambda'()>(swift::TypeCheckFunctionBodyRequest const&, swift::TypeCheckFunctionBodyRequest::OutputType swift::evaluateOrDefaultswift::TypeCheckFunctionBodyRequest(swift::Evaluator&, swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType)::'lambda'()) + 636
18 swift-frontend 0x0000000103c449f0 swift::AbstractFunctionDecl::getTypecheckedBody() const + 160
19 swift-frontend 0x00000001039130ec swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 868
20 swift-frontend 0x000000010391a680 swift::TypeCheckSourceFileRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefaultswift::TypeCheckSourceFileRequest(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()>(swift::TypeCheckSourceFileRequest const&, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefaultswift::TypeCheckSourceFileRequest(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()) + 620
21 swift-frontend 0x0000000103912d6c swift::performTypeChecking(swift::SourceFile&) + 328
22 swift-frontend 0x000000010282fe00 swift::CompilerInstance::performSema() + 260
23 swift-frontend 0x000000010245cdf0 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1532
24 swift-frontend 0x000000010245bbb4 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3572
25 swift-frontend 0x00000001023e2a5c swift::mainEntry(int, char const**) + 3680
26 dyld 0x000000019ead0274 start + 2840
Command SwiftCompile failed with a nonzero exit code
I am using my real device and the Xcode Preview which works pretty fine. I do not want to show an empty canvas pane all the time. But when hiding the canvas, the preview pauses. I tried the refresh shortkey (OPT + CMD + P), too, while canvas is invisible.
Why must the canvas be visible even there is no content besides "Previewing on iPhone from..." Info?
I hope there is a workaround to hide the canvas while pushing to real devices.
When Xcode 16.2 connects iPad to real machine debugging using the view in the picture box, the mac will be stuck directly, the computer cursor will disappear, and the computer cannot do any operation
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hello Friends,
We have a strange bug that Xcode is deploying static binaries from within .XCFramework into the CONFIGURATION_BUILD_DIR
An example of our xcframeworks structure is:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>libglfw3.a</string>
<key>HeadersPath</key>
<string>Headers</string>
<key>LibraryIdentifier</key>
<string>macos-arm64_x86_64</string>
<key>LibraryPath</key>
<string>libglfw3.a</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>
for open source creative coding toolkit
https://github.com/openframeworks/openFrameworks
Can you see any issues in the above.
Some ideas for me is to generate xcarchive instead of deploying the .a in the xcframeworks, however that does not explain the include being packaged there, so I think this might be a Xcode issue
Topic:
Developer Tools & Services
SubTopic:
Xcode
I've got an existing app which is using some 3rd party xcframeworks within its app extensions (for example within a Notification Service Extension).
Within the target for the app extensions there is a Frameworks and Libraries section where the xcframework was dragged and dropped into.
However now I want to create a new project and do a similar thing, within the app's target there is a Frameworks and Libraries section, but when an app extension target is created, Xcode is not adding a Frameworks and Libraries section.
There is a Link Library with Binary section, however this doesn't have an embed section (where you can select to embed, don't embed, embed without signing etc.) and I get build error trying to drag and drop the xcframework in here.
Where id the Framewoks and Libraries section go for app extensions for projects created with Xcode 16? How can this section be added?
I’ve been running into an annoying issue for a while now and wondering if anyone else can confirm or suggest a fix.
When Xcode hits a breakpoint (i.e., the app is paused), I often need to copy some text from the source code using cmd+C — for example, to paste into the debugger and inspect a variable or object. However, most of the time, the copy operation fails and nothing ends up on the clipboard. I have to repeat the copy action multiple times before it works.
This doesn’t happen 100% of the time, but it’s frequent — maybe around 7 out of 10 attempts fail. I’ve been noticing this behavior since around Xcode 15.
Has anyone else experienced this? Is there a known workaround or fix?
Topic:
Developer Tools & Services
SubTopic:
Xcode
When renaming a variable in the active scheme, it's not renamed for the non active ones.
As a result when you have code that operates in both schemes (with #if os() conditions) a compile time error is introduced.
Is this an Xcode bug or expected behaviour?
I have this code:
var eventIn = kevent(ident: UInt(self.socket),
filter: Int16(EVFILT_WRITE),
flags: UInt16((EV_ADD | EV_ENABLE)),
fflags: 0,
data: 0,
udata: nil
)
I looked at it and thought why do I have those extra parentheses? So I changed it to
var eventIn = kevent(ident: UInt(self.socket),
filter: Int16(EVFILT_WRITE),
flags: UInt16(EV_ADD | EV_ENABLE), // changed line!
fflags: 0,
data: 0,
udata: nil
)
and then kevent gave me EBADF.
Does this make sense to anyone?