I actually ran HandBrake without PDB under a debugger, just to see what's up, and it looks like it's stuck here:
Code: Select all
# Child-SP RetAddr Call Site
00 0000001e`c097d248 00007ffa`62e02627 amfrt64!AMFInit+0x7
01 0000001e`c097d250 00007ffa`62e02832 hb!check_component_available+0x87
02 0000001e`c097d2e0 00007ffa`62e0b585 hb!hb_vce_h264_available+0x22
03 0000001e`c097d310 00007ffa`62dfa115 hb!hb_common_global_init+0x215
04 0000001e`c097d360 00007ffa`16e95c35 hb!hb_global_init+0x175
05 0000001e`c097d390 00000148`df7f1537 0x00007ffa`16e95c35
06 0000001e`c097d450 00000148`df7f0ace 0x00000148`df7f1537
07 0000001e`c097d4b0 00000644`8826dfb0 0x00000148`df7f0ace
08 0000001e`c097d540 00000644`88198f54 0x00000644`8826dfb0
09 0000001e`c097d570 00007ffa`7462975f 0x00000644`88198f54
0a 0000001e`c097da10 00007ffa`75674476 PresentationFramework+0x7c975f
0b 0000001e`c097da50 00007ffa`75674306 WindowsBase+0x194476
// snip
1c 0000001e`c097e1c0 00007ffa`f1c31a6c 0x00007ffa`1660f182
1d 0000001e`c097e240 00007ffa`f1c30cc6 USER32!UserCallWinProcCheckWow+0x33c
1e 0000001e`c097e3b0 00007ffa`16c7d32b USER32!DispatchMessageWorker+0x2a6
1f 0000001e`c097e430 00007ffa`75677ee3 0x00007ffa`16c7d32b
20 0000001e`c097e4f0 00007ffa`756753c1 WindowsBase+0x197ee3
21 0000001e`c097e580 00007ffa`7567536e WindowsBase+0x1953c1
22 0000001e`c097e5b0 00007ffa`746296bc WindowsBase+0x19536e
23 0000001e`c097e5e0 00007ffa`74627d1d PresentationFramework+0x7c96bc
24 0000001e`c097e610 00007ffa`74624cac PresentationFramework+0x7c7d1d
25 0000001e`c097e660 00000644`88199d91 PresentationFramework+0x7c4cac
26 0000001e`c097e690 00007ffa`76149d13 0x00000644`88199d91
Cut down a bit for brevity. Basically, no HandBrake PDB necessary because it won't do me much good anyways. amfrt64 seems to be AMDs hardware transcoding library? Of course no symbol file available for that. Also weirdly enough, I don't have a AMD GPU in this machine _right now_. This is my dev machine used for game development and I do have the occasional AMD GPU attached, so I'm wondering if the presence of the AMD drivers is enough to make Handbrake load the driver which then fails because there just isn't any AMD hardware that can be initialized? I can see it looping over and over again calling into `AMFXInputCreateController` and checking the result (which, surprise, fails). Questionable loop choices from AMD here...
My other machine only ever has seen an Nvidia GPU, so it doesn't have any AMD driver. So no surprises that it doesn't fail in this way. The HandBrake code that corresponds to this seems to be this one:
https://github.com/HandBrake/HandBrake/ ... .c#L37-L45
It also looks like disabling hardware acceleration through the preference files will prevent HandBrake from trying to load this in the first place. I guess uninstalling the AMD driver would also do the trick? I'm mostly spitballing here based on the backtrace I have at hand as well as some quick github searches of function names. I guess ultimately this is an AMD bug, AMF just spins forever if it can't initialize device.