Explore the core architecture of the operating system, including the kernel, memory management, and process scheduling.

Posts under Core OS subtopic

Post

Replies

Boosts

Views

Activity

Core OS Resources
General: DevForums subtopic: App & System Services > Core OS Core OS is a catch-all subtopic for low-level APIs that don’t fall into one of these more specific areas: Processes & Concurrency Resources Files and Storage Resources Networking Resources Network Extension Resources Security Resources Virtualization Resources Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com"
0
0
1.9k
Aug ’25
TCC Full Disk Access denied for Endpoint Security system extension on macOS 26, host app already granted FDA permission
I have developed an Endpoint Security (ES) system extension using Xcode 16.4. This extension is embedded inside its host application SecureGuard. The host app is signed with a Developer ID Application certificate, and I have created a dedicated ES system extension profile for SecureGuard FileGuard Extension. The workflow works perfectly on macOS 15.3.2. However, on macOS 26, although theSecureGuard host app launches and successfully installs/activates the ES extension, the ES extension gets rejected by TCC due to missing Full Disk Access authorization. I have explicitly granted Full Disk Access permission to the host SecureGuard application in the macOS System Settings. What I have verified so far: SIP was disabled for debugging on macOS 15.3.2, while SIP remains enabled on macOS 26. The app bundle is signed with Developer ID Application and successfully notarized via Apple’s notary service; the ES extension profile is also correctly configured. I do not believe SIP is the root cause here. On macOS 26, output from systemextensionsctl list shows: com.secureguard.fileguard.extension (2026.8/7.2) Extension [activated enabled] This confirms the system extension is successfully installed and activated, with valid code‑signing. I collected system logs with this command: log show --last 30m --predicate 'process CONTAINS "fileGuard"' --info --debug Repeated error messages appear: 14:00:42.271778+0800 0x7d38 Error 0x0 2246 0 com.secureguard.fileguard.extension: (libEndpointSecurity.dylib) Failed to open service: 0xe00002d8: Caller lacks TCC authorization for Full Disk Access For backward‑compatibility with older Intel‑based Mac hardware, both the SecureGuard host app and its ES system extension run under Rosetta translation. My hypothesis: when launchd spawns the ES extension process, TCC denies Full Disk Access for the extension itself, even though the parent host app already holds Full Disk Access permissions. Rosetta translation may potentially be a contributing factor. Has anyone encountered this TCC permission divergence between host app and Endpoint Security system extension on macOS 26? Are there any extra entitlement/profile requirements I missed?
1
0
197
2h
More vCPUs, lower build performance (macOS VMs)
Hi everyone, We're running Xcode/Swift CI builds inside macOS VMs (Tart / Apple Virtualization Framework) on a 32-core Apple Silicon host. While investigating VM build performance, we noticed a consistent pattern: assigning 24 vCPUs to the VM produces faster overall build times than assigning 26-30 vCPUs, despite the host still showing idle CPU capacity. With higher vCPU allocations, the build starts by utilizing the CPUs well, but later stages show a noticeable drop in CPU utilization and overall build throughput. In contrast, the 24-vCPU configuration maintains more stable CPU usage and completes the workload faster. This was observed repeatedly with the same Xcode/Swift workload. The result seems counterintuitive because the VM is not exhausting the available host CPU resources. Our testing identified 24 vCPUs as the current sweet spot, even though the host provides 32 physical cores. Has anyone observed similar behavior? Some questions I have: Do Xcode builds stop scaling efficiently beyond a certain vCPU count? Are there known scheduler or virtualization effects when assigning nearly all host cores to a macOS VM? Is there a commonly recommended practice to leave a number of host cores unassigned, even when the host appears mostly idle?
4
0
279
4h
Diagnosing MetricKit crash reports with EXC_CRASH / SIGKILL with no termination reason
I'm collecting and uploading MetricKit crash diagnostic reports from my app in the field, and the huge majority of the reports I get back have exception type EXC_CRASH, signal SIGKILL with no terminationReason. The report lists thread 0 as attributed, but it doesn't have any of my code active. Here's an example symbolicated trace of thread 0: mach_msg2_trap (in libsystem_kernel.dylib) + 8 mach_msg2_internal (in libsystem_kernel.dylib) + 76 mach_msg_overwrite (in libsystem_kernel.dylib) + 424 mach_msg (in libsystem_kernel.dylib) + 24 __CFRunLoopServiceMachPort (in CoreFoundation) + 160 __CFRunLoopRun (in CoreFoundation) + 1188 _CFRunLoopRunSpecificWithOptions (in CoreFoundation) + 532 GSEventRunModal (in GraphicsServices) + 120 -[UIApplication _run] (in UIKitCore) + 796 UIApplicationMain (in UIKitCore) + 332 main (in BRFree) (main.m:0) start (in dyld) + 6928 There is code from my app in other threads, but they're all waiting on NSConditions and not doing anything. I thought they might be 0xdead10cc crashes, but there are other reports that have "terminationReason": "Namespace RUNNINGBOARD, Code 0xdead10cc". Can anyone help me narrow down what could be causing these crashes? I would file a DTS support ticket, but it won't let me without either a request from someone at Apple or a focused test project. If an engineer sees this thread and gives me a green light for a code-level support request, I can provide a sampling of the MetricKit reports.
4
0
183
4h
InstallerSection plugins no longer load on macOS 27 beta 5+ — Installer symlinks the bundle's Contents/, which breaks AMFI validation
We maintain a macOS product whose installer uses custom InstallerSection plugin bundles to show configuration panes during install. Starting with macOS 27 beta 6, all of our plugins stopped loading in Installer.app — the panes never appear and the install fails because our preinstall step depends on data the panes collect. The exact same .pkg works on macOS 26.6, and per thread 842811 the same bundles were fine on 27 betas 1–4(I have tested it from beta 6 onwards). While investigating we found what looks like the underlying cause, and it's reproducible by hand. THE FINDING During a failing install, look inside the extracted plugin bundle while the Installer window is still open: ls -la /private/tmp/com.apple.installer*/.bundle/Contents/ That layout fails code-signature validation. You can reproduce the failure manually, no Installer involved: codesign -vvv "/private/tmp/com.apple.installer"*/.bundle → .bundle: Too many levels of symbolic links WHAT THE SYSTEM LOGS SHOW amfid rejects the plugin executable: /private/tmp/com.apple.installerXXXXXX/.bundle/Contents/MacOS/ not valid: Error Domain=AppleMobileFileIntegrityError Code=-420 "The signature on the file is invalid" with repeated "UNIX error exception: 62" (errno 62 = ELOOP, too many levels of symbolic links) in backtraces through BundleDiskRep::component → SecStaticCode::component → validateNonResourceComponents → staticValidateCore, and "Code failed basic validity check (error: 100062)". For a Developer ID–signed plugin the kernel then treats it as fatal: AMFI: When validating /private/tmp/com.apple.installerXXXXXX/.bundle/Contents/MacOS/: The code contains a Team ID, but validating its signature failed. mac_vnode_check_signature: ... code signature validation failed fatally check_signature[pid: N]: error = 1 The plugin is never dlopen'd and the pane never appears. QUESTIONS Is there a way to get Installer to deploy the bundle with real files — or any other workaround? Note : I have Filed via Feedback Assistant as FB24601496; this overlaps FB24415432 / thread https://developer.apple.com/forums/thread/842811, which we've cross-referenced I have experienced this issue on latest Beta 8 build also -27.0 Beta (26A5425a)
1
1
27
5h
AssetPackManager.shared traps on macOS 27 seed 6
On macOS 27.0 seed 6 (26A5421a) / Xcode 27 beta 6, the first touch of AssetPackManager.shared in a Managed Background Assets macOS app fatals at AssetPackManager.swift:360 with The app couldn't be validated: The app group with the ID "TEAMID.group.example.app" is inaccessible — with the app signed with exactly that group, BAAppGroupID matching, containerURL(forSecurityApplicationGroupIdentifier:) returning a real directory, and the container present on disk. I tried varying it and got the same result: App Sandbox on/off; the group spelled team-prefixed and iOS-style at every point of use. Notably, in the iOS-style build the message still names the team-prefixed identifier, which appears nowhere in that build — so the framework composes the prefixed form itself and validates that. The Mac provisioning profile authorizes group.example.app explicitly plus the auto-added TEAMID.* wildcard, and since the portal only registers group.-style IDs, no profile can list the prefixed form by name. Is this a known issue in seed 6? Is there a workaround? And does Managed Background Assets on macOS assume a Mac App Store / TestFlight distribution context for its app-group validation, in a way a development-signed app can't satisfy? Filed as FB24525451 with three crash reports (sandboxed, unsandboxed, iOS-style) and a sysdiagnose.
1
0
64
1d
Sanboxed Apps Reading Extended Security Information (ACL)
My custom filesystem kernel extension stores ACLs as an extended attribute, com.apple.system.Security. Sanboxed apps such as TextEdit, Pages, etc., running as a non-privileged process, fail to save modified contents when permissive ACLs are in use. Running them as a privileged process, does allow for file changes to be saved though. Non-sandboxed apps, such as VSCode, and command line programs are not susceptible to this behaviour. APFS, on the other hand, seems to handle ACLs as an ATTR_CMN_EXTENDED_SECURITY filesystem attribute, rather than as an EA. In this case, sandboxed apps have no trouble accessing the ACL data. I implemented a minimal PoC within my custom kext to verify this. I construct an ACL in memory allowing a given user to write,append,delete file contents, and return it that via vnop_getattr. This allows the file contents to be modified and saved by sandboxed apps. Can you please confirm if my findings are accurate and sandboxed apps fail to read the com.apple.system.Security EA by design? Also, Is it an accurate assumption, that ACLs should be handled either as an EA, or an ATTR_CMN_EXTENDED_SECURITY, but not both? Thanks.
2
0
387
1d
About Bluetooth LE and CoreBluetooth
We are developing devices that communicate with iOS using Bluetooth LE. Since there is a limit to the number of bonding information that can be stored on the device side, the device deletes the bonding information when the limit is reached. Then, there is an operational situation where the bonding information is deleted on the device side and remains on the iOS side. When this situation occurs, an Encryption Failure occurs at the time of reconnection, and the connection is immediately disconnected from iOS. Since there is no API to delete the remaining bonding information on the iOS side, it is not convenient for the user to delete the bonding information on the iOS setting screen. I would like to improve the usability for re-pairing. With the bonding information of the device remaining on the iOS side, is it possible for iOS to prompt "re-pairing" by taking the following action from the device? (It is possible to change the device side) ・Change the Bluetooth parameter setting value of the device side ・Change the response value to iOS Also, is it possible for iOS to "re-pair" with CoreBluetooth API when the bonding information of the device remains in iOS side? Also, in case of HOGP, when the bonding information of the device remains in iOS side, iOS always tries to connect and fails repeatedly when the device sends advertisement. When this situation occurs, is it possible to set up iOS not to connect with CoreBluetooth API or iOS setting?
1
1
356
3d
BLE peripheral connection intermittently enters supervision-timeout loop with CBPeripheralManager
I am developing a macOS app that acts as a BLE peripheral using CBPeripheralManager. On one MacBook M2, an established BLE connection to a central drops approximately every 14 seconds indefinitely. The disconnect is reported as a supervision timeout. Immediately before the timeout, the controller reports excellent RF conditions, but the peripheral stops receiving packets and all transmitted packets become unacknowledged. I can reproduce this with a minimal ~150-line sample project that publishes one service with a single notify characteristic and does nothing else. I use LightBlue on an iPhone as the central. Hardware Failing: MacBook Air 15" M2 macOS 26.6 and macOS 26.6.2 BLE peripheral implemented with CBPeripheralManager Bluetooth controller: BCM_4387, firmware 23.5.636.5347, PCIe Working: MacBook Pro 16" M1 macOS 26.6 identical application/build On the MacBook M1, the identical sample holds the connection indefinitely. I tested with the same iPhone and LightBlue central, as well as another iPhone. The affected MacBook M2 Mac also worked correctly for approximately one month before the problem appeared suddenly after a normal restart. There was no application or OS update immediately before the failure. Updating the affected MacBook from macOS 26.6 to 26.6.2 did not change the behavior. Reproduction: Run the minimal CBPeripheralManager sample on the M2. Publish one service with one notify characteristic. Connect from LightBlue on an iPhone. Subscribe to the characteristic. Leave the connection idle. The connection repeatedly drops after approximately 14 seconds. Running the identical sample on the MacBook M1 with the same macOS version and the same central works indefinitely. On the failing Mac, bluetoothd reports: lsto: 72 (720 ms supervision timeout) RSSI approximately -46 dBm SNR 60+ receiver initially synchronized during the final ~30 connection events before each timeout: zero packets received every transmitted packet is unacknowledged So this does not appear to be a marginal-RF situation. The peripheral appears to stop receiving the central's connection-event packets, after which its own transmissions are no longer acknowledged and the controller eventually declares a supervision timeout. I have already tried: resetting Bluetooth settings restarting the Mac restarting bluetoothd restarting rapportd disabling Handoff (was already disabled) disabling AirPlay (was already disabled) Safe Mode Bluetooth/system diagnostics None changed the behavior. There are no other applications involved in the reproduction; the minimal sample alone reproduces the problem on MacBook M2, works on MacBook M1 properly. Could anything in CBPeripheralManager usage account for this behavior, such as connection parameters, peripheral latency, or supervision timeout configuration? I have not found a public CBPeripheralManager API that allows the peripheral to configure connection interval, peripheral latency, or supervision timeout. The Generic Access service also appears to be reserved by the system. Given that the identical peripheral application works indefinitely on another MacBook M1 running the same macOS version, could this indicate a Bluetooth controller/firmware or macOS Bluetooth stack issue affecting only some Mac hardware/configurations or system states? I can provide the minimal reproduction project and relevant bluetoothd/Bluetooth controller logs. The sample does not reproduce the issue on the MacBook M1, so the reproduction appears to be dependent on the affected MacBook M2 rather than the application alone.
1
0
404
3d
Ten FSKit issues found building a network file system module (all filed with minimal repros)
While building an SMB 2/3 client as an FSKit file system module (FSUnaryFileSystem + FSVolume, the macOS 27 Handler protocols), I ran into a number of framework-level issues. I have filed each one with a title starting "FSKit:" so they are easy to find, and every report has a minimal reproduction attached: a small in-memory FSKit module (no network, no disk, no cache of its own), so none of them depend on SMB. All were measured on macOS 27.0 (26A5406e and 26A5416b) with Xcode 27.0 beta 5. Summaries below in case anyone else is hitting these. FB24419773: renameatx_np with RENAME_SWAP returns success but destroys the destination file. On any FSKit volume a RENAME_SWAP is performed as an ordinary clobbering rename: rc=0, but the destination's contents are silently lost instead of exchanged. The module cannot refuse it because renameItem receives no flags; a swap and a plain overwriting rename look identical. (RENAME_EXCL works correctly.) FB24419825: a negative lookup is cached permanently. Once anything gets ENOENT for a name on an FSKit volume, the kernel serves that ENOENT for the life of the vnode. If the file is created later (for example by another machine on a network volume), it stays unopenable by that name indefinitely, while ls of the same directory lists it. There is no API through which a module can report that a name now exists. FB24419858: a data-cache grant from openItem can be applied after the module has already invalidated. The grant in FSOpenItemResult is applied asynchronously after the module's reply, and an invalidation issued in that window succeeds (setCacheState returns no error) and is then overwritten by the stale grant. The result is a kernel cache no future event will invalidate; readers see stale data. FB24419870: synchronize(flags:) is never called on a URL-backed volume. fsync(2), fcntl(F_FULLFSYNC), fcntl(F_BARRIERFSYNC) and sync(8) all return success with zero calls reaching the module, so durability is reported and never established. A packet capture of the same SMB share shows five SMB2 FLUSH requests through Apple's smbfs and zero through an FSKit module. FB24419894: FSItemSetAttributesRequest.consumedAttributes is never observed, and wasAttributeConsumed(.changeTime) answers about the wrong attribute. Consuming everything and consuming nothing are indistinguishable to the caller (chmod returns 0 either way), even though the setAttributes documentation says the upper layers will detect unsupported attributes. Separately, wasAttributeConsumed answers YES for changeTime when only accessTime was consumed, and never answers correctly about changeTime itself; this part reproduces by constructing the request directly, no file system needed. FB24419911: restrictsOwnershipChanges = true does not reject non-superuser chown. The property is documented as "the volume rejects a chown(2) from anyone other than the superuser", but on an -o owners mount a non-root chgrp is delivered to the module's setAttributes anyway, so every module has to enforce the policy itself. FB24419932: a failed activate wedges the resource URL. After a module's activate throws once, every later mount of the same URL string fails with "Resource busy" (fskitd logs "Can't start new task, resource state is 5"), while the same volume under a different URL spelling mounts fine. For a network module the ordinary trigger is one wrong password. Recovery requires killing both fskitd and the extension process. FB24419964: enumeration cannot report extended-attribute presence. FSItem.Attributes has no per-item "has xattrs" field, so one cold ls -l of a 500-entry directory costs about 2,000 FSKit boundary crossings: an xattr call per entry plus a "._name" AppleDouble sidecar lookup per entry, and each of those ENOENTs is then pinned by FB24419825. Suggestion: a per-entry hasExtendedAttributes flag so getattrlistbulk can be satisfied from the enumeration. FB24419974: no byte-range lock operations. flock(2) and fcntl(2) locks on an FSKit mount stay kernel-local and never reach the module, so advisory locks cannot coordinate between clients of a network file system. Suggestion: an optional lock-operations handler. FB24419979: no ACL or security descriptor operations. ls -le, chmod +a, acl_get_file(3) and cp -p with ACLs cannot work on any FSKit volume; a network server's real ACLs are invisible behind synthesized mode bits. The nearest surface, FSVolumeAccessCheckHandler, can only be asked yes/no questions about a descriptor the module has no way to provide. Suggestion: an optional ACL-operations protocol. If any of these are biting you too, duplicate feedbacks referencing the FB numbers above genuinely help with prioritization.
5
0
494
4d
NFSv4.1: racing open/unlink/recreate of the same filename can leave processes unkillable
I've been building an SMB client and hoping to ship it as an FSKit module, but because of some blocking issues I decided to serve it over NFS instead. Unfortunately, I've run into another blocker, which I'll share in case others are seeing the same behavior. While testing against an NFSv4.1 server (stock Linux nfsd), I ran into a situation where processes on the Mac end up permanently blocked inside the NFS client, and I wanted to share it in case others hit the same thing. Filed as FB24538163. The trigger is several processes concurrently opening, unlinking and recreating the same filenames in one directory. Something like ten shell loops each doing cat, rm, and echo > over the same five names will do it. When it happens: The stuck processes ignore SIGKILL and sit in state U indefinitely (I have had them survive more than eight hours). umount -f on the mount blocks the same way, so the mount cannot be cleared either. Only a reboot recovers. The rest of the system stays responsive. Two details that may help narrow it down: It really is the name collision, not the load. The same loops using distinct filenames per process, at the same traffic volume and latency, ran clean for twenty minutes, while the same-name version wedged every time. Adding 8 ms of reply latency made it roughly ten times more frequent. It happens on a soft mount (timeo=100,retrycnt=3), where I would have expected EIO after the retry budget instead of an indefinite wait. Spindumps show the blocked threads inside nfs_vnop_open / nfs4_vnop_create, down through nfs4_open_rpc_internal into nfs_node_set_busy_helper, with one thread typically waiting on a write RPC reply (nfs_wait_reply) inside that same open path. A self-contained repro script is attached to the Feedback. The script only needs any NFSv4.1 server to point at, and its header has a one-line Docker command that produces one. This looks related to what the FUSE-T project has reported (macos-fuse-t/fuse-t issues 112 and 45), since FUSE-T rides the same client. If anyone knows a mount option or usage pattern that avoids the wait, or can confirm seeing this elsewhere, I would love to hear it.
0
0
47
4d
Recommended architecture for iPhone-to-iPhone NFC recipient identification
We are developing UTipping, a digital tipping application, and are seeking technical guidance before implementation. Our intended experience is: The recipient opens the app and activates “Receive Tip”. The sender selects a tip amount and “Send Tip”. Both authenticated apps are unlocked, online, and in the foreground. The two iPhones are brought into very close physical proximity. The proximity interaction exchanges or resolves only a short-lived, opaque session identifier. No funds, card credentials, cryptograms, or payment-authorization data are exchanged through NFC. The sender confirms the resolved recipient and amount. Payment is processed separately through the backend and licensed payment infrastructure. Standard Core NFC appears to provide reader functionality for supported tags/protocols, but not a general application-controlled iPhone-to-iPhone peer/tag-emulation channel. We would appreciate guidance on: whether this interaction can be implemented using Core NFC; whether NFC & SE Platform or HCE / CardSession could provide the presenter role; whether one third-party iPhone can present a temporary application-controlled identifier to another third-party iPhone; whether both apps must remain foreground; and whether Nearby Interaction with BLE / Multipeer Connectivity is the recommended alternative for very-close-proximity recipient identification. The NFC/proximity interaction would only identify the intended recipient. The financial transaction is completely separate. Apple Developer Support previously referred us to engineering under case 102948761329. We have also submitted the detailed technical architecture through Feedback Assistant: FB24517831 Any guidance from Apple framework engineers regarding the supported architecture and entitlement path would be greatly appreciated.
0
0
104
6d
NSFileProviderReplicatedExtension triggering wrong fileproviderd behaviour?
TL;DR: looking for FileProvider Extension debugging suggestions... I am attempting to develop NSFileProviderReplicatedExtension. Against a real backing repository (~4TB), I've seen fileproviderd become heavily loaded, non-responsive (i.e. fileproviderctl dump has failed to complete within 60s on 8 tries) and (maybe?) re-enumerate the contents of the repository. The profiler says that it's spending most of its time doing sqlite work against the table for the domain from my extension. I hypothesize that my extension has telling fileproviderd occasionally inconsistent things and it is now making sure that the world is the way that it should be. So: is there a way to get it to log when it has received invalid info? (I did read its (terse 😊) man page. I'm running out of ideas of what more to check with responses from the extension.
1
0
202
6d
Is there a supported public API to create a macOS desktop display?
I am evaluating a macOS app for Apple-silicon Macs. I would like to know whether a third-party macOS app can create a new desktop display that ordinary existing macOS apps can use as a normal display. The intended use is an external landscape display used as a logical portrait workspace. The logical top half would be shown on the physical right half, and the logical bottom half on the physical left half. I have reviewed Quartz Display Services and ScreenCaptureKit. My understanding is that they support configuration or capture of existing displays, but not creation of a new host desktop display. Is there a supported public API for this on the current macOS release or the immediately previous release? If yes, please point me to the API and documentation. I am looking only for a supported public API path. I do not want to use private APIs, root privileges, kernel extensions, or bypass system security controls. Thank you.
1
0
147
1w
Background service BLE and MQTT
I have a app that needs to work all the time. It is very simple: Dataflow: From Bluetooth-App with MQTT Client in Phone-Cloud MQTT Broker- Cloud Backend-MQTT Broker-App with MQTT Client in Phone. All background services is allowed on ios Phone. I do not know when it started, but now suddenly the App stops randomly in background mode. The solution is built on that BLE scanning and App mqtt client is working. This "sleep" of the App make the system not working 100% and it is useless. Why is it stopping even if background is allowed? This must be fixed in iOS!!!!
1
0
132
1w
Best practices for handling nw_connection_state_waiting in Transparent Proxy
I am working on a Network Extension (Transparent Proxy) which is used by a DLP to prevent data leaks over the network. For each incoming NEAppProxyTCPFlow, the extension instantiates a custom wrapper object that creates an outbound nw_connection_t to the target host and port using Network framework. When a client application connects to unreachable or blocked ports (e.g., 5222), our extension proxies this connection. As the destination is unreachable, the newly created connection transitions into nw_connection_state_waiting in Network Extension. Since macOS keeps nw_connection_t in the nw_connection_state_waiting state indefinitely, such connections cause system resource leaks. Over time, this leads to: exhaustion of system file descriptors and sockets. system-wide network unavailability until the extension process is killed. Could you provide best-practice recommendations for handling nw_connection_state_waiting in a Network Extension to prevent such resource leaks?
6
0
345
1w
iOS 26 EXC_BREAKPOINT in libmalloc _xzm_xzone_malloc_freelist_outlined during NSData base64 encoding
We are seeing a low-volume but persistent crash on iOS 26 that surfaces inside Foundation's base64 encoder, and we would like to see if and how we could prevent that crash 2026-08-14_10-47-14.9181_-0500-5b74aa117551b30ab7696e1d90c129b97ab1e42f.crash - (nonnull NSString *)pnd_UTF8Base64 { NSData *encodedData = [self dataUsingEncoding:NSUTF8StringEncoding]; if (encodedData == nil || encodedData.length == 0) { return @""; } NSData *safeData = [NSData dataWithBytes:encodedData.bytes length:encodedData.length]; return [safeData base64EncodedStringWithOptions:0]; } Questions: Is our reading correct that _xzm_xzone_malloc_freelist_outlined indicates the freelist was ALREADY corrupted before this allocation (double-free / use-after-free / buffer overflow somewhere else), and that this base64 malloc is merely the first allocation to detect it (a 'canary'), not the cause? Did the iOS 26 xzone allocator add/strengthen freelist integrity checks such that latent corruption that previously went unnoticed now traps here? What is the recommended way to pin down the real corruptor in a shipping app where this reproduces only occasionally on end-user devices (MallocStackLogging, Guard Malloc / libgmalloc, MallocScribble, Address Sanitizer, MallocNanoZone settings)? Are any of these usable/meaningful against the xzone allocator? Is there any process-level or per-allocation API to validate heap integrity that is safe on the xzone allocator (e.g. malloc_zone_check behavior on iOS 26)? Any guidance on interpreting this signature and isolating the root cause would be appreciated. Thanks.
1
0
180
2w
Updating an FSKit module to use the new Handler protocols
I have a file system extension that currently uses the various now-deprecated Operations protocols. I have a few questions about moving to the new Handler protocols. First, my module is going to maintain backwards compatibility with macOS Sequoia for the foreseeable future, but I would also like to be able to take advantage of new FSKit features for users who are on newer OS versions. What approach would you recommend: Having an FSVolume conform to both the various Operations and Handler protocols (e.g. both FSVolumeKernelOffloadedIOOperations and FSVolume.KernelOffloadedIOHandler with the latter tagged with @available) an immediate issue I see trying to do this is I run into the error Method 'activate(options:)' with Objective-C selector 'activateWithOptions:replyHandler:' conflicts with previous declaration with the same Objective-C selector when trying to conform to both FSVolume.Handler and FSVolume.Operations. Having two separate FSVolume implementations, one used for older OS versions with Operations support and one used on newer OS versions with Handler support? Keeping the use of pre-existing Operations protocols while only using the Handlers for newer features (e.g. things like SeekRegionHandler) Second, I see at https://developer.apple.com/documentation/fskit/fsvolumehandlerresult/requestedattributes that I must populate all requested attributes. Does this value only have a meaning if the initializer for the actual concrete result type has an initializer that takes in a FSItem.Attributes instance, or is there some way I’m supposed to populate those? (As a concrete example, FSCheckAccessResult has init(accessAllowed:) which doesn’t take in any attributes.)
4
0
470
2w
User created via VZMacGuestProvisioningOptions is not returned by CSIdentityQueryExecute()
This post applies to Apple Virtualization framework feature to setup a user account during VM setup (VZMacGuestProvisioningOptions) introduced in macOS 27: Issue: Creating a user via VZMacGuestProvisioningOptions during VM setup, results in a user which is not returned by CSidentityQueryExecute(). Same code executed on a macOS 26 VM or a macOS 27 VM where the user was created by hand within the VM (so without VZMacGuestProvisioningOptions) returns the user. How to reproduce: Create an VM via the Apple Virtualization framework and use the VZMacGuestProvisioningOptions to create the user during VM setup. I actually used Virtual Buddy and Tart to do this. Then run the following code: internal enum MyLogger { static let info = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "Utils-\(getuid())") } public struct Identity { public let posixUID: id_t public let posixName: String init?(posixUID: id_t, posixName: String) { self.posixUID = posixUID self.posixName = posixName } } class Utils { public static func userIdentities() -> [Identity] { let defaultAuthority = CSGetLocalIdentityAuthority().takeUnretainedValue() let query = CSIdentityQueryCreate(nil, kCSIdentityClassUser, defaultAuthority).takeRetainedValue() guard CSIdentityQueryExecute(query, 0, nil), let identities = CSIdentityQueryCopyResults(query).takeRetainedValue() as? [CSIdentity] else { return [] } for ident in identities { MyLogger.info.log("CSIdentity: \(ident.hashValue, privacy: .public)") } let idents = identities .compactMap { Identity( posixUID: CSIdentityGetPosixID($0), posixName: CSIdentityGetPosixName($0).takeUnretainedValue() as String ) } .sorted { $0.posixName.localizedStandardCompare($1.posixName) == .orderedAscending } for ident in idents { MyLogger.info.log("Identity: \(ident.posixName, privacy: .public), \(ident.posixUID, privacy: .public)") } return idents } } Expected behavior: The code returns the user account created via VZMacGuestProvisioningOptions. Actual behavior: I get no user account When you test the same on a macOS 27 VM where the user is created via the traditional way (Setup assistant), the app shows the account. This also applies to all additional user accounts created after VM setup via System Settings.app. The bug also still exists on a VM created with macOS 27 beta 4. Is anybody having the same issue? Is that a bug in macOS 27? I already created a Feedback for this: FB23716201
4
0
754
2w
Core OS Resources
General: DevForums subtopic: App & System Services > Core OS Core OS is a catch-all subtopic for low-level APIs that don’t fall into one of these more specific areas: Processes & Concurrency Resources Files and Storage Resources Networking Resources Network Extension Resources Security Resources Virtualization Resources Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com"
Replies
0
Boosts
0
Views
1.9k
Activity
Aug ’25
TCC Full Disk Access denied for Endpoint Security system extension on macOS 26, host app already granted FDA permission
I have developed an Endpoint Security (ES) system extension using Xcode 16.4. This extension is embedded inside its host application SecureGuard. The host app is signed with a Developer ID Application certificate, and I have created a dedicated ES system extension profile for SecureGuard FileGuard Extension. The workflow works perfectly on macOS 15.3.2. However, on macOS 26, although theSecureGuard host app launches and successfully installs/activates the ES extension, the ES extension gets rejected by TCC due to missing Full Disk Access authorization. I have explicitly granted Full Disk Access permission to the host SecureGuard application in the macOS System Settings. What I have verified so far: SIP was disabled for debugging on macOS 15.3.2, while SIP remains enabled on macOS 26. The app bundle is signed with Developer ID Application and successfully notarized via Apple’s notary service; the ES extension profile is also correctly configured. I do not believe SIP is the root cause here. On macOS 26, output from systemextensionsctl list shows: com.secureguard.fileguard.extension (2026.8/7.2) Extension [activated enabled] This confirms the system extension is successfully installed and activated, with valid code‑signing. I collected system logs with this command: log show --last 30m --predicate 'process CONTAINS "fileGuard"' --info --debug Repeated error messages appear: 14:00:42.271778+0800 0x7d38 Error 0x0 2246 0 com.secureguard.fileguard.extension: (libEndpointSecurity.dylib) Failed to open service: 0xe00002d8: Caller lacks TCC authorization for Full Disk Access For backward‑compatibility with older Intel‑based Mac hardware, both the SecureGuard host app and its ES system extension run under Rosetta translation. My hypothesis: when launchd spawns the ES extension process, TCC denies Full Disk Access for the extension itself, even though the parent host app already holds Full Disk Access permissions. Rosetta translation may potentially be a contributing factor. Has anyone encountered this TCC permission divergence between host app and Endpoint Security system extension on macOS 26? Are there any extra entitlement/profile requirements I missed?
Replies
1
Boosts
0
Views
197
Activity
2h
More vCPUs, lower build performance (macOS VMs)
Hi everyone, We're running Xcode/Swift CI builds inside macOS VMs (Tart / Apple Virtualization Framework) on a 32-core Apple Silicon host. While investigating VM build performance, we noticed a consistent pattern: assigning 24 vCPUs to the VM produces faster overall build times than assigning 26-30 vCPUs, despite the host still showing idle CPU capacity. With higher vCPU allocations, the build starts by utilizing the CPUs well, but later stages show a noticeable drop in CPU utilization and overall build throughput. In contrast, the 24-vCPU configuration maintains more stable CPU usage and completes the workload faster. This was observed repeatedly with the same Xcode/Swift workload. The result seems counterintuitive because the VM is not exhausting the available host CPU resources. Our testing identified 24 vCPUs as the current sweet spot, even though the host provides 32 physical cores. Has anyone observed similar behavior? Some questions I have: Do Xcode builds stop scaling efficiently beyond a certain vCPU count? Are there known scheduler or virtualization effects when assigning nearly all host cores to a macOS VM? Is there a commonly recommended practice to leave a number of host cores unassigned, even when the host appears mostly idle?
Replies
4
Boosts
0
Views
279
Activity
4h
Diagnosing MetricKit crash reports with EXC_CRASH / SIGKILL with no termination reason
I'm collecting and uploading MetricKit crash diagnostic reports from my app in the field, and the huge majority of the reports I get back have exception type EXC_CRASH, signal SIGKILL with no terminationReason. The report lists thread 0 as attributed, but it doesn't have any of my code active. Here's an example symbolicated trace of thread 0: mach_msg2_trap (in libsystem_kernel.dylib) + 8 mach_msg2_internal (in libsystem_kernel.dylib) + 76 mach_msg_overwrite (in libsystem_kernel.dylib) + 424 mach_msg (in libsystem_kernel.dylib) + 24 __CFRunLoopServiceMachPort (in CoreFoundation) + 160 __CFRunLoopRun (in CoreFoundation) + 1188 _CFRunLoopRunSpecificWithOptions (in CoreFoundation) + 532 GSEventRunModal (in GraphicsServices) + 120 -[UIApplication _run] (in UIKitCore) + 796 UIApplicationMain (in UIKitCore) + 332 main (in BRFree) (main.m:0) start (in dyld) + 6928 There is code from my app in other threads, but they're all waiting on NSConditions and not doing anything. I thought they might be 0xdead10cc crashes, but there are other reports that have "terminationReason": "Namespace RUNNINGBOARD, Code 0xdead10cc". Can anyone help me narrow down what could be causing these crashes? I would file a DTS support ticket, but it won't let me without either a request from someone at Apple or a focused test project. If an engineer sees this thread and gives me a green light for a code-level support request, I can provide a sampling of the MetricKit reports.
Replies
4
Boosts
0
Views
183
Activity
4h
InstallerSection plugins no longer load on macOS 27 beta 5+ — Installer symlinks the bundle's Contents/, which breaks AMFI validation
We maintain a macOS product whose installer uses custom InstallerSection plugin bundles to show configuration panes during install. Starting with macOS 27 beta 6, all of our plugins stopped loading in Installer.app — the panes never appear and the install fails because our preinstall step depends on data the panes collect. The exact same .pkg works on macOS 26.6, and per thread 842811 the same bundles were fine on 27 betas 1–4(I have tested it from beta 6 onwards). While investigating we found what looks like the underlying cause, and it's reproducible by hand. THE FINDING During a failing install, look inside the extracted plugin bundle while the Installer window is still open: ls -la /private/tmp/com.apple.installer*/.bundle/Contents/ That layout fails code-signature validation. You can reproduce the failure manually, no Installer involved: codesign -vvv "/private/tmp/com.apple.installer"*/.bundle → .bundle: Too many levels of symbolic links WHAT THE SYSTEM LOGS SHOW amfid rejects the plugin executable: /private/tmp/com.apple.installerXXXXXX/.bundle/Contents/MacOS/ not valid: Error Domain=AppleMobileFileIntegrityError Code=-420 "The signature on the file is invalid" with repeated "UNIX error exception: 62" (errno 62 = ELOOP, too many levels of symbolic links) in backtraces through BundleDiskRep::component → SecStaticCode::component → validateNonResourceComponents → staticValidateCore, and "Code failed basic validity check (error: 100062)". For a Developer ID–signed plugin the kernel then treats it as fatal: AMFI: When validating /private/tmp/com.apple.installerXXXXXX/.bundle/Contents/MacOS/: The code contains a Team ID, but validating its signature failed. mac_vnode_check_signature: ... code signature validation failed fatally check_signature[pid: N]: error = 1 The plugin is never dlopen'd and the pane never appears. QUESTIONS Is there a way to get Installer to deploy the bundle with real files — or any other workaround? Note : I have Filed via Feedback Assistant as FB24601496; this overlaps FB24415432 / thread https://developer.apple.com/forums/thread/842811, which we've cross-referenced I have experienced this issue on latest Beta 8 build also -27.0 Beta (26A5425a)
Replies
1
Boosts
1
Views
27
Activity
5h
AssetPackManager.shared traps on macOS 27 seed 6
On macOS 27.0 seed 6 (26A5421a) / Xcode 27 beta 6, the first touch of AssetPackManager.shared in a Managed Background Assets macOS app fatals at AssetPackManager.swift:360 with The app couldn't be validated: The app group with the ID "TEAMID.group.example.app" is inaccessible — with the app signed with exactly that group, BAAppGroupID matching, containerURL(forSecurityApplicationGroupIdentifier:) returning a real directory, and the container present on disk. I tried varying it and got the same result: App Sandbox on/off; the group spelled team-prefixed and iOS-style at every point of use. Notably, in the iOS-style build the message still names the team-prefixed identifier, which appears nowhere in that build — so the framework composes the prefixed form itself and validates that. The Mac provisioning profile authorizes group.example.app explicitly plus the auto-added TEAMID.* wildcard, and since the portal only registers group.-style IDs, no profile can list the prefixed form by name. Is this a known issue in seed 6? Is there a workaround? And does Managed Background Assets on macOS assume a Mac App Store / TestFlight distribution context for its app-group validation, in a way a development-signed app can't satisfy? Filed as FB24525451 with three crash reports (sandboxed, unsandboxed, iOS-style) and a sysdiagnose.
Replies
1
Boosts
0
Views
64
Activity
1d
Sanboxed Apps Reading Extended Security Information (ACL)
My custom filesystem kernel extension stores ACLs as an extended attribute, com.apple.system.Security. Sanboxed apps such as TextEdit, Pages, etc., running as a non-privileged process, fail to save modified contents when permissive ACLs are in use. Running them as a privileged process, does allow for file changes to be saved though. Non-sandboxed apps, such as VSCode, and command line programs are not susceptible to this behaviour. APFS, on the other hand, seems to handle ACLs as an ATTR_CMN_EXTENDED_SECURITY filesystem attribute, rather than as an EA. In this case, sandboxed apps have no trouble accessing the ACL data. I implemented a minimal PoC within my custom kext to verify this. I construct an ACL in memory allowing a given user to write,append,delete file contents, and return it that via vnop_getattr. This allows the file contents to be modified and saved by sandboxed apps. Can you please confirm if my findings are accurate and sandboxed apps fail to read the com.apple.system.Security EA by design? Also, Is it an accurate assumption, that ACLs should be handled either as an EA, or an ATTR_CMN_EXTENDED_SECURITY, but not both? Thanks.
Replies
2
Boosts
0
Views
387
Activity
1d
About Bluetooth LE and CoreBluetooth
We are developing devices that communicate with iOS using Bluetooth LE. Since there is a limit to the number of bonding information that can be stored on the device side, the device deletes the bonding information when the limit is reached. Then, there is an operational situation where the bonding information is deleted on the device side and remains on the iOS side. When this situation occurs, an Encryption Failure occurs at the time of reconnection, and the connection is immediately disconnected from iOS. Since there is no API to delete the remaining bonding information on the iOS side, it is not convenient for the user to delete the bonding information on the iOS setting screen. I would like to improve the usability for re-pairing. With the bonding information of the device remaining on the iOS side, is it possible for iOS to prompt "re-pairing" by taking the following action from the device? (It is possible to change the device side) ・Change the Bluetooth parameter setting value of the device side ・Change the response value to iOS Also, is it possible for iOS to "re-pair" with CoreBluetooth API when the bonding information of the device remains in iOS side? Also, in case of HOGP, when the bonding information of the device remains in iOS side, iOS always tries to connect and fails repeatedly when the device sends advertisement. When this situation occurs, is it possible to set up iOS not to connect with CoreBluetooth API or iOS setting?
Replies
1
Boosts
1
Views
356
Activity
3d
BLE peripheral connection intermittently enters supervision-timeout loop with CBPeripheralManager
I am developing a macOS app that acts as a BLE peripheral using CBPeripheralManager. On one MacBook M2, an established BLE connection to a central drops approximately every 14 seconds indefinitely. The disconnect is reported as a supervision timeout. Immediately before the timeout, the controller reports excellent RF conditions, but the peripheral stops receiving packets and all transmitted packets become unacknowledged. I can reproduce this with a minimal ~150-line sample project that publishes one service with a single notify characteristic and does nothing else. I use LightBlue on an iPhone as the central. Hardware Failing: MacBook Air 15" M2 macOS 26.6 and macOS 26.6.2 BLE peripheral implemented with CBPeripheralManager Bluetooth controller: BCM_4387, firmware 23.5.636.5347, PCIe Working: MacBook Pro 16" M1 macOS 26.6 identical application/build On the MacBook M1, the identical sample holds the connection indefinitely. I tested with the same iPhone and LightBlue central, as well as another iPhone. The affected MacBook M2 Mac also worked correctly for approximately one month before the problem appeared suddenly after a normal restart. There was no application or OS update immediately before the failure. Updating the affected MacBook from macOS 26.6 to 26.6.2 did not change the behavior. Reproduction: Run the minimal CBPeripheralManager sample on the M2. Publish one service with one notify characteristic. Connect from LightBlue on an iPhone. Subscribe to the characteristic. Leave the connection idle. The connection repeatedly drops after approximately 14 seconds. Running the identical sample on the MacBook M1 with the same macOS version and the same central works indefinitely. On the failing Mac, bluetoothd reports: lsto: 72 (720 ms supervision timeout) RSSI approximately -46 dBm SNR 60+ receiver initially synchronized during the final ~30 connection events before each timeout: zero packets received every transmitted packet is unacknowledged So this does not appear to be a marginal-RF situation. The peripheral appears to stop receiving the central's connection-event packets, after which its own transmissions are no longer acknowledged and the controller eventually declares a supervision timeout. I have already tried: resetting Bluetooth settings restarting the Mac restarting bluetoothd restarting rapportd disabling Handoff (was already disabled) disabling AirPlay (was already disabled) Safe Mode Bluetooth/system diagnostics None changed the behavior. There are no other applications involved in the reproduction; the minimal sample alone reproduces the problem on MacBook M2, works on MacBook M1 properly. Could anything in CBPeripheralManager usage account for this behavior, such as connection parameters, peripheral latency, or supervision timeout configuration? I have not found a public CBPeripheralManager API that allows the peripheral to configure connection interval, peripheral latency, or supervision timeout. The Generic Access service also appears to be reserved by the system. Given that the identical peripheral application works indefinitely on another MacBook M1 running the same macOS version, could this indicate a Bluetooth controller/firmware or macOS Bluetooth stack issue affecting only some Mac hardware/configurations or system states? I can provide the minimal reproduction project and relevant bluetoothd/Bluetooth controller logs. The sample does not reproduce the issue on the MacBook M1, so the reproduction appears to be dependent on the affected MacBook M2 rather than the application alone.
Replies
1
Boosts
0
Views
404
Activity
3d
Ten FSKit issues found building a network file system module (all filed with minimal repros)
While building an SMB 2/3 client as an FSKit file system module (FSUnaryFileSystem + FSVolume, the macOS 27 Handler protocols), I ran into a number of framework-level issues. I have filed each one with a title starting "FSKit:" so they are easy to find, and every report has a minimal reproduction attached: a small in-memory FSKit module (no network, no disk, no cache of its own), so none of them depend on SMB. All were measured on macOS 27.0 (26A5406e and 26A5416b) with Xcode 27.0 beta 5. Summaries below in case anyone else is hitting these. FB24419773: renameatx_np with RENAME_SWAP returns success but destroys the destination file. On any FSKit volume a RENAME_SWAP is performed as an ordinary clobbering rename: rc=0, but the destination's contents are silently lost instead of exchanged. The module cannot refuse it because renameItem receives no flags; a swap and a plain overwriting rename look identical. (RENAME_EXCL works correctly.) FB24419825: a negative lookup is cached permanently. Once anything gets ENOENT for a name on an FSKit volume, the kernel serves that ENOENT for the life of the vnode. If the file is created later (for example by another machine on a network volume), it stays unopenable by that name indefinitely, while ls of the same directory lists it. There is no API through which a module can report that a name now exists. FB24419858: a data-cache grant from openItem can be applied after the module has already invalidated. The grant in FSOpenItemResult is applied asynchronously after the module's reply, and an invalidation issued in that window succeeds (setCacheState returns no error) and is then overwritten by the stale grant. The result is a kernel cache no future event will invalidate; readers see stale data. FB24419870: synchronize(flags:) is never called on a URL-backed volume. fsync(2), fcntl(F_FULLFSYNC), fcntl(F_BARRIERFSYNC) and sync(8) all return success with zero calls reaching the module, so durability is reported and never established. A packet capture of the same SMB share shows five SMB2 FLUSH requests through Apple's smbfs and zero through an FSKit module. FB24419894: FSItemSetAttributesRequest.consumedAttributes is never observed, and wasAttributeConsumed(.changeTime) answers about the wrong attribute. Consuming everything and consuming nothing are indistinguishable to the caller (chmod returns 0 either way), even though the setAttributes documentation says the upper layers will detect unsupported attributes. Separately, wasAttributeConsumed answers YES for changeTime when only accessTime was consumed, and never answers correctly about changeTime itself; this part reproduces by constructing the request directly, no file system needed. FB24419911: restrictsOwnershipChanges = true does not reject non-superuser chown. The property is documented as "the volume rejects a chown(2) from anyone other than the superuser", but on an -o owners mount a non-root chgrp is delivered to the module's setAttributes anyway, so every module has to enforce the policy itself. FB24419932: a failed activate wedges the resource URL. After a module's activate throws once, every later mount of the same URL string fails with "Resource busy" (fskitd logs "Can't start new task, resource state is 5"), while the same volume under a different URL spelling mounts fine. For a network module the ordinary trigger is one wrong password. Recovery requires killing both fskitd and the extension process. FB24419964: enumeration cannot report extended-attribute presence. FSItem.Attributes has no per-item "has xattrs" field, so one cold ls -l of a 500-entry directory costs about 2,000 FSKit boundary crossings: an xattr call per entry plus a "._name" AppleDouble sidecar lookup per entry, and each of those ENOENTs is then pinned by FB24419825. Suggestion: a per-entry hasExtendedAttributes flag so getattrlistbulk can be satisfied from the enumeration. FB24419974: no byte-range lock operations. flock(2) and fcntl(2) locks on an FSKit mount stay kernel-local and never reach the module, so advisory locks cannot coordinate between clients of a network file system. Suggestion: an optional lock-operations handler. FB24419979: no ACL or security descriptor operations. ls -le, chmod +a, acl_get_file(3) and cp -p with ACLs cannot work on any FSKit volume; a network server's real ACLs are invisible behind synthesized mode bits. The nearest surface, FSVolumeAccessCheckHandler, can only be asked yes/no questions about a descriptor the module has no way to provide. Suggestion: an optional ACL-operations protocol. If any of these are biting you too, duplicate feedbacks referencing the FB numbers above genuinely help with prioritization.
Replies
5
Boosts
0
Views
494
Activity
4d
NFSv4.1: racing open/unlink/recreate of the same filename can leave processes unkillable
I've been building an SMB client and hoping to ship it as an FSKit module, but because of some blocking issues I decided to serve it over NFS instead. Unfortunately, I've run into another blocker, which I'll share in case others are seeing the same behavior. While testing against an NFSv4.1 server (stock Linux nfsd), I ran into a situation where processes on the Mac end up permanently blocked inside the NFS client, and I wanted to share it in case others hit the same thing. Filed as FB24538163. The trigger is several processes concurrently opening, unlinking and recreating the same filenames in one directory. Something like ten shell loops each doing cat, rm, and echo > over the same five names will do it. When it happens: The stuck processes ignore SIGKILL and sit in state U indefinitely (I have had them survive more than eight hours). umount -f on the mount blocks the same way, so the mount cannot be cleared either. Only a reboot recovers. The rest of the system stays responsive. Two details that may help narrow it down: It really is the name collision, not the load. The same loops using distinct filenames per process, at the same traffic volume and latency, ran clean for twenty minutes, while the same-name version wedged every time. Adding 8 ms of reply latency made it roughly ten times more frequent. It happens on a soft mount (timeo=100,retrycnt=3), where I would have expected EIO after the retry budget instead of an indefinite wait. Spindumps show the blocked threads inside nfs_vnop_open / nfs4_vnop_create, down through nfs4_open_rpc_internal into nfs_node_set_busy_helper, with one thread typically waiting on a write RPC reply (nfs_wait_reply) inside that same open path. A self-contained repro script is attached to the Feedback. The script only needs any NFSv4.1 server to point at, and its header has a one-line Docker command that produces one. This looks related to what the FUSE-T project has reported (macos-fuse-t/fuse-t issues 112 and 45), since FUSE-T rides the same client. If anyone knows a mount option or usage pattern that avoids the wait, or can confirm seeing this elsewhere, I would love to hear it.
Replies
0
Boosts
0
Views
47
Activity
4d
Recommended architecture for iPhone-to-iPhone NFC recipient identification
We are developing UTipping, a digital tipping application, and are seeking technical guidance before implementation. Our intended experience is: The recipient opens the app and activates “Receive Tip”. The sender selects a tip amount and “Send Tip”. Both authenticated apps are unlocked, online, and in the foreground. The two iPhones are brought into very close physical proximity. The proximity interaction exchanges or resolves only a short-lived, opaque session identifier. No funds, card credentials, cryptograms, or payment-authorization data are exchanged through NFC. The sender confirms the resolved recipient and amount. Payment is processed separately through the backend and licensed payment infrastructure. Standard Core NFC appears to provide reader functionality for supported tags/protocols, but not a general application-controlled iPhone-to-iPhone peer/tag-emulation channel. We would appreciate guidance on: whether this interaction can be implemented using Core NFC; whether NFC & SE Platform or HCE / CardSession could provide the presenter role; whether one third-party iPhone can present a temporary application-controlled identifier to another third-party iPhone; whether both apps must remain foreground; and whether Nearby Interaction with BLE / Multipeer Connectivity is the recommended alternative for very-close-proximity recipient identification. The NFC/proximity interaction would only identify the intended recipient. The financial transaction is completely separate. Apple Developer Support previously referred us to engineering under case 102948761329. We have also submitted the detailed technical architecture through Feedback Assistant: FB24517831 Any guidance from Apple framework engineers regarding the supported architecture and entitlement path would be greatly appreciated.
Replies
0
Boosts
0
Views
104
Activity
6d
NSFileProviderReplicatedExtension triggering wrong fileproviderd behaviour?
TL;DR: looking for FileProvider Extension debugging suggestions... I am attempting to develop NSFileProviderReplicatedExtension. Against a real backing repository (~4TB), I've seen fileproviderd become heavily loaded, non-responsive (i.e. fileproviderctl dump has failed to complete within 60s on 8 tries) and (maybe?) re-enumerate the contents of the repository. The profiler says that it's spending most of its time doing sqlite work against the table for the domain from my extension. I hypothesize that my extension has telling fileproviderd occasionally inconsistent things and it is now making sure that the world is the way that it should be. So: is there a way to get it to log when it has received invalid info? (I did read its (terse 😊) man page. I'm running out of ideas of what more to check with responses from the extension.
Replies
1
Boosts
0
Views
202
Activity
6d
Is there a supported public API to create a macOS desktop display?
I am evaluating a macOS app for Apple-silicon Macs. I would like to know whether a third-party macOS app can create a new desktop display that ordinary existing macOS apps can use as a normal display. The intended use is an external landscape display used as a logical portrait workspace. The logical top half would be shown on the physical right half, and the logical bottom half on the physical left half. I have reviewed Quartz Display Services and ScreenCaptureKit. My understanding is that they support configuration or capture of existing displays, but not creation of a new host desktop display. Is there a supported public API for this on the current macOS release or the immediately previous release? If yes, please point me to the API and documentation. I am looking only for a supported public API path. I do not want to use private APIs, root privileges, kernel extensions, or bypass system security controls. Thank you.
Replies
1
Boosts
0
Views
147
Activity
1w
Command-line tool for .ips files?
So apparently Monterey has switched to creating .ips files instead of .crash files for application crashes. Console.app can convert these .ips files to "old-style" crash format. But is there a command-line tool to do the same thing?
Replies
11
Boosts
1
Views
8k
Activity
1w
Background service BLE and MQTT
I have a app that needs to work all the time. It is very simple: Dataflow: From Bluetooth-App with MQTT Client in Phone-Cloud MQTT Broker- Cloud Backend-MQTT Broker-App with MQTT Client in Phone. All background services is allowed on ios Phone. I do not know when it started, but now suddenly the App stops randomly in background mode. The solution is built on that BLE scanning and App mqtt client is working. This "sleep" of the App make the system not working 100% and it is useless. Why is it stopping even if background is allowed? This must be fixed in iOS!!!!
Replies
1
Boosts
0
Views
132
Activity
1w
Best practices for handling nw_connection_state_waiting in Transparent Proxy
I am working on a Network Extension (Transparent Proxy) which is used by a DLP to prevent data leaks over the network. For each incoming NEAppProxyTCPFlow, the extension instantiates a custom wrapper object that creates an outbound nw_connection_t to the target host and port using Network framework. When a client application connects to unreachable or blocked ports (e.g., 5222), our extension proxies this connection. As the destination is unreachable, the newly created connection transitions into nw_connection_state_waiting in Network Extension. Since macOS keeps nw_connection_t in the nw_connection_state_waiting state indefinitely, such connections cause system resource leaks. Over time, this leads to: exhaustion of system file descriptors and sockets. system-wide network unavailability until the extension process is killed. Could you provide best-practice recommendations for handling nw_connection_state_waiting in a Network Extension to prevent such resource leaks?
Replies
6
Boosts
0
Views
345
Activity
1w
iOS 26 EXC_BREAKPOINT in libmalloc _xzm_xzone_malloc_freelist_outlined during NSData base64 encoding
We are seeing a low-volume but persistent crash on iOS 26 that surfaces inside Foundation's base64 encoder, and we would like to see if and how we could prevent that crash 2026-08-14_10-47-14.9181_-0500-5b74aa117551b30ab7696e1d90c129b97ab1e42f.crash - (nonnull NSString *)pnd_UTF8Base64 { NSData *encodedData = [self dataUsingEncoding:NSUTF8StringEncoding]; if (encodedData == nil || encodedData.length == 0) { return @""; } NSData *safeData = [NSData dataWithBytes:encodedData.bytes length:encodedData.length]; return [safeData base64EncodedStringWithOptions:0]; } Questions: Is our reading correct that _xzm_xzone_malloc_freelist_outlined indicates the freelist was ALREADY corrupted before this allocation (double-free / use-after-free / buffer overflow somewhere else), and that this base64 malloc is merely the first allocation to detect it (a 'canary'), not the cause? Did the iOS 26 xzone allocator add/strengthen freelist integrity checks such that latent corruption that previously went unnoticed now traps here? What is the recommended way to pin down the real corruptor in a shipping app where this reproduces only occasionally on end-user devices (MallocStackLogging, Guard Malloc / libgmalloc, MallocScribble, Address Sanitizer, MallocNanoZone settings)? Are any of these usable/meaningful against the xzone allocator? Is there any process-level or per-allocation API to validate heap integrity that is safe on the xzone allocator (e.g. malloc_zone_check behavior on iOS 26)? Any guidance on interpreting this signature and isolating the root cause would be appreciated. Thanks.
Replies
1
Boosts
0
Views
180
Activity
2w
Are deeplinks to Apple apps acceptable?
I see online theres list of urls app can use to deeplink to Apple apps: https://github.com/bhagyas/app-urls#references-and-additional-resources are these acceptable by Apple? Apps just want to redirect the user so they can take some appropriate action.
Replies
1
Boosts
0
Views
509
Activity
2w
Updating an FSKit module to use the new Handler protocols
I have a file system extension that currently uses the various now-deprecated Operations protocols. I have a few questions about moving to the new Handler protocols. First, my module is going to maintain backwards compatibility with macOS Sequoia for the foreseeable future, but I would also like to be able to take advantage of new FSKit features for users who are on newer OS versions. What approach would you recommend: Having an FSVolume conform to both the various Operations and Handler protocols (e.g. both FSVolumeKernelOffloadedIOOperations and FSVolume.KernelOffloadedIOHandler with the latter tagged with @available) an immediate issue I see trying to do this is I run into the error Method 'activate(options:)' with Objective-C selector 'activateWithOptions:replyHandler:' conflicts with previous declaration with the same Objective-C selector when trying to conform to both FSVolume.Handler and FSVolume.Operations. Having two separate FSVolume implementations, one used for older OS versions with Operations support and one used on newer OS versions with Handler support? Keeping the use of pre-existing Operations protocols while only using the Handlers for newer features (e.g. things like SeekRegionHandler) Second, I see at https://developer.apple.com/documentation/fskit/fsvolumehandlerresult/requestedattributes that I must populate all requested attributes. Does this value only have a meaning if the initializer for the actual concrete result type has an initializer that takes in a FSItem.Attributes instance, or is there some way I’m supposed to populate those? (As a concrete example, FSCheckAccessResult has init(accessAllowed:) which doesn’t take in any attributes.)
Replies
4
Boosts
0
Views
470
Activity
2w
User created via VZMacGuestProvisioningOptions is not returned by CSIdentityQueryExecute()
This post applies to Apple Virtualization framework feature to setup a user account during VM setup (VZMacGuestProvisioningOptions) introduced in macOS 27: Issue: Creating a user via VZMacGuestProvisioningOptions during VM setup, results in a user which is not returned by CSidentityQueryExecute(). Same code executed on a macOS 26 VM or a macOS 27 VM where the user was created by hand within the VM (so without VZMacGuestProvisioningOptions) returns the user. How to reproduce: Create an VM via the Apple Virtualization framework and use the VZMacGuestProvisioningOptions to create the user during VM setup. I actually used Virtual Buddy and Tart to do this. Then run the following code: internal enum MyLogger { static let info = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "Utils-\(getuid())") } public struct Identity { public let posixUID: id_t public let posixName: String init?(posixUID: id_t, posixName: String) { self.posixUID = posixUID self.posixName = posixName } } class Utils { public static func userIdentities() -> [Identity] { let defaultAuthority = CSGetLocalIdentityAuthority().takeUnretainedValue() let query = CSIdentityQueryCreate(nil, kCSIdentityClassUser, defaultAuthority).takeRetainedValue() guard CSIdentityQueryExecute(query, 0, nil), let identities = CSIdentityQueryCopyResults(query).takeRetainedValue() as? [CSIdentity] else { return [] } for ident in identities { MyLogger.info.log("CSIdentity: \(ident.hashValue, privacy: .public)") } let idents = identities .compactMap { Identity( posixUID: CSIdentityGetPosixID($0), posixName: CSIdentityGetPosixName($0).takeUnretainedValue() as String ) } .sorted { $0.posixName.localizedStandardCompare($1.posixName) == .orderedAscending } for ident in idents { MyLogger.info.log("Identity: \(ident.posixName, privacy: .public), \(ident.posixUID, privacy: .public)") } return idents } } Expected behavior: The code returns the user account created via VZMacGuestProvisioningOptions. Actual behavior: I get no user account When you test the same on a macOS 27 VM where the user is created via the traditional way (Setup assistant), the app shows the account. This also applies to all additional user accounts created after VM setup via System Settings.app. The bug also still exists on a VM created with macOS 27 beta 4. Is anybody having the same issue? Is that a bug in macOS 27? I already created a Feedback for this: FB23716201
Replies
4
Boosts
0
Views
754
Activity
2w