Safe Eject Issues with MacOS?
Off the bat, I'm going to assume that this is an engineering issue with MacOS and, as such, will likely be up to Apple's developers to ultimately resolve. However, since I don't have much faith in Apple's professional-level updates, I'm going to ask if anyone else has identified this issue. To wit, MacOS's SafeEject function does not seem to work with any semblance of reliability. About 1 out of 4 times, the eGPU disconnects as expected; in the other 3 cases, the OS simply hangs indefinitely. I've heard some people point to display resolution, but that doesn't really explain why it sometimes works and sometimes doesn't. My setup:
2018 MacBook Pro i9, 32GB
Mantiz Venus TB3 Enclosure
- Sapphire Radeon 64
- Wacom Cintiq Pro 24" (DisplayPort)
- Apple 30" Cinema Display (Dual-Link DVI > Thunderbolt > DisplayPort)
I was able to determine that the eGPU prefers to have all running apps closed, which I've employed a script to do. (There is also a SSD within within the Venus, and the script ejects that as well.) But I have yet to figure out any other work-arounds. The issue has occurred with the 30" connected, with the 30" and another older Cinema Display, with the 30" and the Cintiq and, I believe, with the Cintiq by itself. My sense is that some hidden process is using the eGPU (or the OS thinks it is) and is conflicting with the eject command. Ultimately, it's probably not a huge deal, but re-connecting the laptop can also be hit-and-miss so I'm trying to eliminate as many issues as possible.
@teejaysplace Sometimes some specific hardware combinations don't play well or as expected. To eliminate this, try creating a fresh install on a new APFS volume and verify eGPU hot-plug and eject behavior. Another debugging strategy would be to find the offending application. Launch apps one by one while checking if eGPU hot-plug and eject behave as expected. By default, safe-ejecting GPUs should handle applications that are using the eGPU based on the eGPU Eject Policy. Fortunately, macOS Catalina includes a GPU tab in Activity Monitor when an eGPU is connected - making it easy to see what app/process is on what GPU.