Ok, perhaps you should put a note in the docs about falling back to the C heap. Or maybe that's just common sense for people in the know-how?
I've realized the allocation attempt was actually quite a bit more than 500Mb. The C lib returned the number of channels and frame count, which totalled to a frame count of 291_335_184. Multiply that by the float size (4), and you get: 1_165_340_736, or 1.65 GB. The GC heap can actually allocate even 200_000_000 elements on my system, so that's around 800MB if I'm right.
