Trying to create a pyarrow table that has an empty (all zero-length) column of string values fails. This is because the underlying buffer is empty, and c++ just gives us a null pointer. Pyarrow validates that the buffer passed to the array creation functions is non-null.
This was fixed by allocating and saving a correctly aligned pointer to an empty buffer, and returning that in cases where we would try to use a null pointer.