Repository navigation
Description
Mac and installed build
- Model / board / SoC: MacBook Pro 14-inch M2 Max (2023) /
apple,j414c/apple,t6021 - Installed Aurora tag: not determinable. Package
linux-aurora 7.2.11.aurora12-1from the omarchy repo is what we know. The repo has no matching release tag. uname -r:7.2.11-12-1-ARCH- Bootloader:
m1n1-aurora 1.6.1.aurora22-1,uboot-asahi 2026.07.asahi2-4.asahi,m1n1-stage2-versionreadsbc79acc4-dirty. - Distribution: Omarchy on Arch Linux ARM with the omarchy package repo.
omarchy-mac 0.2.3-1andomarchy-mac-boot 20261027-1are installed. Audio is Asahi'sasahi-audio 4.1-1andalsa-ucm-conf-asahi 10-1, notaurora-audio. appledrm.hdmi_audioreadsYwith no option set, so drm/apple: turn DP/HDMI audio on by default #300's default is active.
Both firmware versions and provisioning
asahi,os-fw-version: 13.5
asahi,system-fw-version: 26.6.2
Provisioning: not relevant.
Reproduction, expected result, and actual result
Display: LG HDR 4K, moved from built-in HDMI to a USB-C adapter on one USB-C port. We didn't record which physical port. All runs used crossbar 70304c000.mux.
Steps: with the monitor on HDMI, unplug HDMI, then plug into USB-C within a few seconds.
Expected: the monitor comes up on USB-C and the session keeps running.
Actual: Hyprland aborted in 2 of 4 runs.
| Run (EDT) | Sound on | Playing | HDMI HPD drop to USB-C insertion* | Route | dcpext0 audio timeout | Result |
|---|---|---|---|---|---|---|
| 1, 09:26 | HDMI output | YouTube in Brave | 4.1 s | dispext1, then dispext0 | 09:26:28 | Hyprland SIGABRT |
| 2, 09:38 | MacBook Speakers | 5.3 s | dispext0 | none | No crash. Picture after switching the monitor to its USB-C input. First DP entry plays sound over USB-C. | |
| 3, 09:43 | First DP entry | Music in cliamp | 2.7 s | dispext1, about 14 s later dispext0 | 09:43:32 | No crash. Picture came up. |
| 4, 09:49 | First DP entry | YouTube in Brave | 3.4 s | dispext1, then dispext0 | 09:49:04 | Hyprland SIGABRT, pid 1397. Machine stayed up. Relaunched with --safe-mode. |
*To the first SMC aceElec line, which we take as the insertion. The crossbar switch follows about 0.9 s later.
Run 1 afterwards: Hyprland restarted itself. The built-in screen went black and we held power (forced shutdown at 09:27:09). No kernel panic was logged. The monitor's dark state in this run may just have been its input, which we didn't change. Hyprland restarts in safe mode, which may explain the black built-in screen, but that isn't proven.
What separates the crash runs: DP-1 cannot follow its CRTC here appears in runs 1 and 4 only, logged by dcpext0 while the route is on dcpext1. It comes from drivers/gpu/drm/apple/dcp-fabric.c, and the print is rate-limited, so its count of 10 per run says nothing. In run 4, Hyprland then tests every mode size from 3840x2160 down to 640x480 on DP-1, all Invalid argument, and the real commit at 640x480 fails too. Run 3 logged neither the kernel line nor any Invalid argument. Run 1's Hyprland log didn't survive the forced shutdown.
Run 4 had two hotplugs on dcpext1. On the first, DP-1 got CRTC 88 and the kernel finished a 3840x2160 modeset. dcpext1 then dropped at 09:49:04.89 and came back at 09:49:05.90. On that second hotplug DP-1 got CRTC 69, and that is when every mode failed.
In both crash runs the route moved to dispext0 under 70 ms after the core dump finished.
Our read: when dcpext0 isn't released yet, the display goes to dispext1, and in the crash runs the kernel rejected every mode. This looks like two problems: the kernel rejection on this handoff, and Hyprland aborting on it. The cause isn't established. Video versus music is two runs against one, too few to conclude anything, and the gap alone doesn't sort the runs.
Last known good: unknown.
Graphics or session details
hyprland 0.57.0-2(v0.57.0,0aa6745f),aquamarine 0.15.1-1.3,mesa 1:26.2.6-1. Hyprland logsUsing: OpenGL ES 3.2 Mesa 26.2.6-arch1.1.- Started through
start-hyprlandunder UWSM. Brave isbrave-origin-bin 1:1.98.63-1. - Crashes:
/usr/bin/Hyprland, signal 6 (ABRT), pid 1311 at 09:26:28 and pid 1397 at 09:49:06, 2026-10-31. - Neither the Hyprland log nor the crash report shows a 0x0 output or mode. We don't know what size
allocwas called with.
Backtrace, same frames in runs 1 and 4:
#4 raise ()
#5 Render::IFramebuffer::alloc(int, int, unsigned int) ()
#6 Monitor::CMonitorResources::initFB(...)
#7 Monitor::CMonitorResources::CMonitorResources(...)
#8 Monitor::CMonitor::resources() ()
#9 Config::Supplementary::CPropRefresher::refreshProp(bool) ()
#10 ?? ()
#11 wl_event_loop_dispatch_idle ()
Relevant error lines
Date, hostname and kernel: trimmed. Repeats collapsed.
# Run 4, kernel
09:48:57.997452 apple-dcp 289c00000.dcp: DP2HDMI HPD irq, connected:0
09:49:02.312039 apple-display-crossbar 70304c000.mux: Switched dpphy to dispext1,0
09:49:04.071518 apple-dcp 289c00000.dcp: AFK[ep:29]: DCPAVAudioInterface (chan:31) command type 0xc0 tag 0x2d00 timed out after 1000 ms
09:49:04.072053 apple-dcp 289c00000.dcp: AFK[ep:29]: DCPAVAudioInterface (chan:31) service call group 0 cmd 10 failed to complete: -110
09:49:04.073556 apple-dcp 289c00000.dcp: dcp_poweroff() done
09:49:05.896954 apple-dcp 315c00000.dcp: dcp_hotplug() connected:1 valid_mode:0 nr_modes:13
09:49:05.947450 apple-dcp 289c00000.dcp: DP-1 cannot follow its CRTC here
09:49:06.734283 apple-display-crossbar 70304c000.mux: Switched dpphy to dispext0,0
# Run 4, Hyprland (the last lines are from the crash report's log tail)
DEBUG from aquamarine ]: drm: connected slot 1 crtc 69 assigned to DP-1
DEBUG from aquamarine ]: atomic drm request: failed to commit: Invalid argument, flags: ATOMIC_ALLOW_MODESET ATOMIC_TEST_ONLY
DEBUG from aquamarine ]: drm: Modesetting DP-1 with 640x480@59.94Hz
ERR from aquamarine ]: atomic drm request: failed to commit: Invalid argument, flags: ATOMIC_ALLOW_MODESET PAGE_FLIP_EVENT
# Run 1, kernel
09:26:27.646216 apple-display-crossbar 70304c000.mux: Switched dpphy to dispext1,0
09:26:28.733715 apple-dcp 289c00000.dcp: AFK[ep:29]: DCPAVAudioInterface (chan:3) command type 0xc0 tag 0x0d00 timed out after 1000 ms
09:26:28.784620 apple-dcp 289c00000.dcp: DP-1 cannot follow its CRTC here
09:26:29.555772 apple-display-crossbar 70304c000.mux: Switched dpphy to dispext0,0
Core dumps are kept locally and not attached.
Related issues, pull requests, or code examples
- s2idle: Thunderbolt display on the borrowed dcpext1 route stays dark after resume (DPTX validate times out), while HDMI holds dcpext0 #162: dcpext1 borrowed route stays dark after resume. Same route, different trigger.
- J316S (16" M1 Pro): direct USB-C display — DCP crashes after the display is powered back on (idle lock or s2idle), no recovery until reboot #130: on a direct USB-C display, every test commit fails with
EINVALon the other port. That follows a DCP crash and Hyprland 0.56.2 stays up at0x0@60. We logged no DCP crash and Hyprland aborts. - drm/apple: turn DP/HDMI audio on by default #300: turned DP/HDMI audio on by default. The timeouts above are on the audio service. We haven't tested whether audio changes the outcome.
- aurora12 with asahi-audio: DCP outputs take the default from MacBook Speakers, which go silent #314 and DP/HDMI sound stays stuck after a display drop during playback: PCM DISCONNECTED, PipeWire error loop #315: the audio problems seen on this Mac during the same testing.
- SIGABRT (assert) in Monitor::CMonitorResources::initFB when a connected output has no mode (0x0) hyprwm/Hyprland#16370: same
initFBabort on a 0x0 output on Intel USB-C, reached fromrenderMirroredrather thanrefreshProp. A bot closed it under their issue policy, not as fixed as far as we can see.
Workaround: none tested.
What was not tested
- Without drm/apple: turn DP/HDMI audio on by default #300 (audio off through
appledrm.hdmi_audio=0) - Other USB-C ports, other monitors, other Macs
- The
aurora-audiostack - Kernels before aurora12
- More than 4 total runs, so we can't say how often a fast swap with video crashes or doesn't
Activity