It looks like ply_boot_client_flush() is blocking on a write() to plymouthd, which is blocking on a write() back to the process calling that, because the former function only flushes pending writes (in a blocking way) without reading responses
I'd say then that the bug is in libply-boot-client, and that ply_boot_client_flush() should instead be called in such a way that replies are dealt with
I agree with your diagnosis.
It looks like ply_boot_ client_ flush() is blocking on a write() to plymouthd, which is blocking on a write() back to the process calling that, because the former function only flushes pending writes (in a blocking way) without reading responses
I'd say then that the bug is in libply-boot-client, and that ply_boot_ client_ flush() should instead be called in such a way that replies are dealt with