Skip to content

maker-dmg fails with "hdiutil: attach failed - Resource busy" on macOS 26.4 Beta #4147

@shirakaba

Description

@shirakaba

Pre-flight checklist

  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project uses.
  • I have searched the issue tracker for a bug that matches the one I want to file, without success.

Forge version

7.10.2

Electron version

36.3.2

Operating system

macOS 26.4 Beta (25E5207k)

Last known working Forge version

No response

Expected behavior

Running electron-forge make on macOS, when using MakerDMG, should succeed.

Actual behavior

It fails with the following message:

An unhandled rejection has occurred inside Forge:
Error: Command failed: hdiutil attach /var/folders/0m/nf10bfxx6rgft8tn29fznymc0000gn/T/2TZ7JTG.dmg -nobrowse -noverify -noautoopen
hdiutil: attach failed - no mountable file systems
at makeError (/Users/jamie/Documents/git/banana_native/node_modules/appdmg/node_modules/execa/index.js:174:9)
    at /Users/jamie/Documents/git/banana_native/node_modules/appdmg/node_modules/execa/index.js:278:16
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
 ELIFECYCLE  Command failed with exit code 1.

Steps to reproduce

Install macOS 26.4 Beta (25E5207k) and run electron-forge make with the following config for @electron-forge/maker-dmg:

new MakerDMG(
  {
    name: "banana_macos_installer",
    icon: path.resolve(workspace, "assets/icons/banana/icon.icns"),
    format: "ULFO",
    background: path.resolve(workspace, "assets/dmg/banana-background.tiff"),
    contents: (opts) => [
      { x: 253, y: 298, type: "file", path: opts.appPath },
      { x: 590, y: 298, type: "link", path: "/Applications" },
    ],
    additionalDMGOptions: {
      window: {
        size: { width: 842, height: 595 },
      },
    },
  },
  ["darwin"],
),

For an example project, try adding MakerDMG into Electron Fiddle or any other Electrin Forge app.

Additional information

It calls an API from the appdmg package, appdmg/lib/hdiutil.js, which runs the following shell command:

hdiutil attach /var/folders/0m/nf10bfxx6rgft8tn29fznymc0000gn/T/2TZ7JTG.dmg -nobrowse -noverify -noautoopen

On a colleague's computer running an older non-beta version of macOS, 13.7.4 (22H420), it succeeds with:

/dev/disk2          	GUID_partition_scheme
/dev/disk2s1        	Apple_HFS                      	/Volumes/banana_macos_installer

On my own computer, since updating to macOS 26.4 Beta (25E5207k) (it worked on my computer on older versions of macOS), it has been failing as follows:

hdiutil: attach failed - Resource busy

When I run sudo log show --predicate 'process == "diskarbitrationd"' --last 5m | tail -1000, I get the following debug logs:

See diskarbitrationd logs
Timestamp                       Thread     Type        Activity             PID    TTL  
2026-02-20 16:23:26.997526+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] created disk, id = /dev/disk14.
2026-02-20 16:23:26.999032+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] created disk, id = /dev/disk14s1.
2026-02-20 16:23:26.999135+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] encryption status changed, id = /dev/disk14.
2026-02-20 16:23:26.999481+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] probed disk, id = /dev/disk14s1, with hfs, ongoing.
2026-02-20 16:23:27.002247+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] encryption status changed, id = /dev/disk14s1.
2026-02-20 16:23:27.023833+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default]  fsck status 6 /dev/rdisk14s1
2026-02-20 16:23:27.025937+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] probed disk, id = /dev/disk14s1, with hfs, success.
2026-02-20 16:23:27.027389+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default]   diskimages-helper [10979]:104519 queued solicitation, id = 0000000000000005:0000000000000005, kind = disk claim, disk = /dev/disk14s1, options = 0x00000000.
2026-02-20 16:23:27.028527+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Found FSModule: {
    CFBundleName = "exfat_fskit";
    FSBundleID = "com.apple.fskit.exfat";
    FSImplementation =     (
        UserFS,
        kext
    );
    FSIsFSModule = 1;
    FSMediaTypes =     {
        "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7" =         {
            FSMediaProperties =             {
                "Content Hint" = "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7";
                Leaf = 1;
            };
            FSProbeArguments = "-p";
            FSProbeExecutable = "exfat.util";
            FSProbeOrder = 2000;
        };
        Partitionless =         {
            FSMediaProperties =             {
                Leaf = 1;
                Whole = 1;
            };
            FSProbeArguments = "-p";
            FSProbeExecutable = "exfat.util";
            FSProbeOrder = 4000;
        };
        "Windows_NTFS" =         {
            FSMediaProperties =             {
                "Content Hint" = "Windows_NTFS";
                Leaf = 1;
            };
            FSPro<…>
2026-02-20 16:23:27.028666+0900 0xba389    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Found FSModule: {
    CFBundleName = "msdos_fskit";
    FSBundleID = "com.apple.fskit.msdos";
    FSImplementation =     (
        UserFS,
        kext
    );
    FSIsFSModule = 1;
    FSMediaTypes =     {
        "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" =         {
            FSMediaProperties =             {
                "Content Hint" = "C12A7328-F81F-11D2-BA4B-00A0C93EC93B";
                Leaf = 1;
            };
            FSProbeArguments = "-p";
            FSProbeExecutable = "msdos.util";
            FSProbeOrder = 1000;
            autodiskmount = 0;
        };
        "DOS_FAT_12" =         {
            FSMediaProperties =             {
                "Content Hint" = "DOS_FAT_12";
                Leaf = 1;
            };
            FSProbeArguments = "-p";
            FSProbeExecutable = "msdos.util";
            FSProbeOrder = 1000;
        };
        "DOS_FAT_16" =         {
            FSMediaProperties =             {
                "Content Hint" = "DOS_FAT_16";
            <…>
2026-02-20 16:23:27.030654+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default]   diskimages-helper [10979]:104519 queued solicitation, id = 0000000000000007:0000000000000007, kind = disk claim, disk = /dev/disk14, options = 0x00000000.
2026-02-20 16:23:27.033483+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] claimed disk, id = /dev/disk14, success.
2026-02-20 16:23:27.036488+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] claimed disk, id = /dev/disk14s1, success.
2026-02-20 16:23:27.048215+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default]  Mount options -u=501,-g=20,-m=755,nodev,noowners,nosuid
2026-02-20 16:23:27.048221+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] repaired disk, id = /dev/disk14s1, ongoing.
2026-02-20 16:23:27.053440+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] repaired disk, id = /dev/disk14s1, failure.
2026-02-20 16:23:27.053444+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] unable to repair /dev/disk14s1 (status code 0x00000006).
2026-02-20 16:23:27.053496+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default]  Mount options -u=501,-g=20,-m=755,nodev,noowners,nosuid,rdonly
2026-02-20 16:23:27.053513+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -u=501
2026-02-20 16:23:27.053514+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -u=501
2026-02-20 16:23:27.053515+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -u=501
2026-02-20 16:23:27.053516+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -u=501
2026-02-20 16:23:27.053518+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -u=501
2026-02-20 16:23:27.053520+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -g=20
2026-02-20 16:23:27.053522+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -g=20
2026-02-20 16:23:27.053523+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -g=20
2026-02-20 16:23:27.053524+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -g=20
2026-02-20 16:23:27.053526+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -m=755
2026-02-20 16:23:27.053528+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -m=755
2026-02-20 16:23:27.053529+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -m=755
2026-02-20 16:23:27.053530+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -m=755
2026-02-20 16:23:27.053531+0900 0xbcde9    Error       0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] Unknown mount arg string -m=755
2026-02-20 16:23:27.053628+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] mounted disk, id = /dev/disk14s1, ongoing.
2026-02-20 16:23:27.064739+0900 0xbcde9    Default     0x0                  365    7    diskarbitrationd: [com.apple.DiskArbitration.diskarbitrationd:default] mounted disk, id = /dev/disk14s1, success.

As the -noverify and -noautoopen flags alone each work, it may suggest some change in macOS's support for the -nobrowse flag. The above logs seem to suggest that the -u=501,-g=20,-m=755 mount args are not recognised. But I'm not sure. This is way out of my familiarity zone.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions