Why won't my iMac boot? (com.apple.displaypolicyd exited with abnormal code: 1) I'm using a 21.5-inch 2017 iMac with 3.6GHz i7 CPU, and Radeon Pro 560 graphics card. I'm running Mac OS Mojave 10.14.6
For the last week, the iMac will not finish booting. The progress bar gets halfway, it stalls, and eventually it appears to shut off. If I boot in safe mode, it will boot.
I have removed all non-Apple extensions, login items, daemons, etc, etc. But it makes no difference.
In the console, I see the following error message every time at the exact timestamp of the boot sequence where the Mac dies:
com.apple.xpc.launchd[1] (com.apple.displaypolicyd[418]): Service exited with abnormal code: 1

All the questions I can find online about com.apple.displaypolicyd seem to involve Hackintoshes. This is not a Hackintosh.
UPDATE (2021-02-08): After enabling verbose mode, here's a sequence of screenshots during boot:









The sequence ends with what looks like:
IOConsoleUsers: time(0) 0-&gt;0, lin 0, llk 1,
IOConsoleUsers: GIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0

Does anyone have any insight on what might be going on? Is the graphics card going bad? Might there be some setting I could adjust to fix this?
UPDATE (2021-03-03): Noticed today there is a /var/log/displaypolicy/ folder containing the files displaypolicyd.1/0/0.log, displaypolicyd.log, and iogdiagnose-last.bin. In case these might be useful in diagnosing the issue, here is a ZIP of those files.
UPDATE (2021-04-30): Sorry for the long delay. Here's another set of images made after setting the additional boot-args requested by @pion. Not sure there's a ton of difference, but please let me know if you see anything significant.






The sequence ends in almost the same place as before, with what looks like:
IOConsoleUsers: GIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0
  levelControl-&gt;setValueChangeHandler ( &amp;changeVolumeHandler &lt;ptr&gt;, this &lt;ptr&gt; ) for coreAudioChannel ID 0
  controlID: 0, coreAudioChannelID = 0 MASTER oldValue 0xC newVa

It ends mid-line (presumably that would have been &quot;newValue&quot;). The screen remains unchanged for a few moments, then everything goes black.
Let’s start with the basics and permanently enable verbose mode for booting (you can always turn it off later). Boot into Safe Mode (or single-user mode, either should work) and run the following in Terminal:
$ sudo nvram boot-args=&quot;-v&quot;

Then reboot. As you are booting, I recommend using your iPhone to take a slow-mo video of the screen so you can capture the boot text. If you can then put together some screencaps of full screens of text and share them here, we can try to see if we can catch a log of the failure sequence.
UPDATE:
From your screenshots I am starting to suspect GPU involvement. Try booting with the following and see if you get different output:
$ sudo nvram boot-args=&quot;-v panic_on_display_hang panic_on_gpu_hang&quot;

Also can you boot into safe mode and check /Library/Logs/DiagnosticReports for anything involving displaypolicyd?