[OnePlus 6T  Questions & Answers] anonywimp:
OK, I think I figured out an actual recipe now, or the beginnings of one. It is still a bit fuzzy in places. It goes like this:

If you're not in qdl mode, or you are there but it won't talk to the proprietary flasher software, get the phone completely turned off. Often this is the hardest part. I have sometimes managed to brick my phone where it will Boot and insta-freeze at the infuriating-yellow-triangle screen¹. Then it will just sit there, indefinitely, and never bring up any sort of USB or wifi connectivity (nor does it show any sign of boot-looping, judging by dmesg output on my computer. It's just cold, and dead. Probably a bootloader bug/secure boot fail). In every semi-brick-like circumstance like this, I've found the following enables me to get the phone to turn itself off reasonably quickly, in fact, in just a couple of seconds, usually: unplug any USB-C cable (so I'm running on batteries), hold down all the buttons* until fingers bleeding or something happens -- if nothing happens, release all the buttons briefly and try again; once off, release all the buttons immediately.

Now get the phone back on, and in qdl mode. Somehow. Usually, if the phone is unplugged and off, I can get it there by holding all the buttons and plugging it into usb. If I'm soft-bricked, I'm already there, so nothing to do. From TWRP I can easily "reboot edl" to get there. Maybe there's ways to do it from fastboot, stock recovery, and system as well, via adb/fastboot commands.... My preferred way is holding "all the buttons" for about 1 second, and plugging in the usb cable, which will cause it to enter qdl mode "just one time" without actually bricking anything.

Now, finally, we run the proprietary flasher tool. Press start and it will go until it gets to the "sahara bingo yip-a-dee-ha" error (or whatever it really says... definitely not exactly what I wrote :P ).

Now turn the phone off again. Same recipe, but this time it seems to almost-always suffice to keep the phone connected to USB, while holding all-the-buttons. If that isn't working, then I go ahead and unplug, power cycle, and get into qdl mode like above. During this, the computer software is maybe completely disconnected from your phone, *****ing and moaning the whole time about Sahara or whatever. Ignore that, it's fine.

If the phone was fully powered off (rather than power-cycled in place), be sure to next release all the buttons, so that the phone has no usb or button-press input of any kind for at least a fraction of a second. Then press "all the buttons" again (nb: I suspect just vol+ and vol- suffice here, and the power button is superfluous? Maybe even detrimental depending on ordering? If I screw this up (sometimes it winds up booting into recovery or bootloader), then I find a way to ask it to reboot from there into qdl mode, if I can, or else power off from there and try again to use the three buttons.

Using your fourth hand, Plug in a USB-C cable, what leads from your computer, to the phone, while continuing to hold down all the buttons with your other three hands (or, if you entered qdl via software, just plug it in, now).

That's it, done. Kick back and enjoy as the tool's progress bars go wild and unbrick your phone tut suite. The qdl process should be able to go all the way to the end where it says "100%" (although when you close the program it will still treat this like you are interrupting it in the middle; I think that's because it does multiple phones at once, and you only ever fed it the one phone, so it is alerting you that, hey, phone #2 never got processed).

I am doing the above in a non-FOSS emulator under desktop linux, using the patched client referenced from xda threads.

I imagine qemu would work, as well. Obviously native Windows is going to be your best bet. I def. wouldn't trust Oracle (VirtualBox) USB emulation with my qdl flashing needs, if I were me -- which I am. Phones tend to look like huge USB hubs, full of an ever-changing kaleidoscope of peripherals. Which I don't think the VirtualBox USB stack is really ready to cope with right now. (Not even with the proprietary USB add-on pack or whatever that is -- I simply don't trust Oracle not to hard-brick my phone; VirtualBox has seemingly perma-bricked one device for me, already. That was some time ago but I'm not going to feed it any more devices and I doubt the USB was fixed in vbox. It think it's paravirtualized, or something, so as to be super-fast, but unreliable when the bus topology changes in meatspace.

-- rants / footnotes ---

¹ You know, that warning screen for "security." Which, currently, happens to be punishing me for trying to put the newest stock security updates onto my phone that I just purchased a month ago¹*².

* Not an "All the things" meme -- by "all the buttons" I literally mean all the hardware buttons: [vol+], [vol-], and [power].

¹*² I imagine the person who made the decision to require this in Android would explain it something like this: