It seems as though CGDataProvder::from_buffer segfaults if the buffer is empty. A reproducing test case would be something like
let buf: Arc<[u8]> = Arc::new([]);
CGDataProvider::from_buffer(buf)
I don't have a macOS box for testing, so this is based on experimentation with github CI. Apologies if I'm mistaken about this issue.