read_parquet segmentation fault with pyarrow
#### Problem description
Loading a dataframe with `pandas.read_parquet` with `engine='pyarrow'` can semi-randomly result in a segmentation fault.  

This only seems to affect certain dataframes, others always seem to work.  Unfortunately I can't share an affected dataframe because the problematic ones have sensitive data.

This happens with or without compression, and with or without `memory_map`.  It happens consistently for certain data, even if I load it and save it to a different format (e.g. changing from compressed to uncompressed).

~This only happens when reading a file multiple times in a single python interpreter.  Loading a file once seems to always work.~\
**EDIT:** This USUALLY happens only when reading a file multiple times in a single python interpreter.  Loading a file once USUALLY works.  Not always

## Examples

### Loading a file several times in one script

```python
# seg_fault.py
import pandas as pd

if __name__ == '__main__':
    for i in range(100):
        print('ITERATION {}: '.format(i), end='', flush=True)
        x = pd.read_parquet('test-comp.parquet', engine='pyarrow', memory_map=False)
        print('success', flush=True)

    print('SUCCESS -- all runs succeeded')
```
#### output of seg_fault.py

```bash
ibackus@ilearn:$ python -u seg_fault.py
ITERATION 0: success
ITERATION 1: success
ITERATION 2: success
ITERATION 3: success
ITERATION 4: success
Segmentation fault (core dumped)
ibackus@ilearn:$ python -u seg_fault.py
ITERATION 0: success
ITERATION 1: success
ITERATION 2: success
ITERATION 3: success
ITERATION 4: success
ITERATION 5: success
ITERATION 6: success
ITERATION 7: success
ITERATION 8: success
ITERATION 9: success
ITERATION 10: success
ITERATION 11: success
ITERATION 12: Segmentation fault (core dumped)
ibackus@ilearn:$ python -u seg_fault.py
ITERATION 0: success
ITERATION 1: success
ITERATION 2: Segmentation fault (core dumped)
```

### Loading a file once per script
```python
# load.py
import pandas as pd

if __name__ == '__main__':
    x = pd.read_parquet('test-comp.parquet', engine='pyarrow', memory_map=False)
```

```
#!/bin/bash -e
# load.sh
for run in {1..50}; do
    echo "Run: $run"
    python -u load.py
done
echo "ALL RUNS SUCCEEDED"
```


#### output of load.sh

```bash
ibackus@ilearn:$ ./load.sh
Run: 1
Run: 2
Run: 3
Run: 4
Run: 5
Run: 6
Run: 7
Run: 8
Run: 9
Run: 10
Run: 11
Run: 12
Run: 13
Run: 14
Run: 15
Run: 16
Run: 17
Run: 18
Run: 19
Run: 20
Run: 21
Run: 22
Run: 23
Run: 24
Run: 25
Run: 26
Run: 27
Run: 28
Run: 29
Run: 30
Run: 31
Run: 32
Run: 33
Run: 34
Run: 35
Run: 36
Run: 37
Run: 38
Run: 39
Run: 40
Run: 41
Run: 42
Run: 43
Run: 44
Run: 45
Run: 46
Run: 47
Run: 48
Run: 49
Run: 50
ALL RUNS SUCCEEDED
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.8.final.0
python-bits: 64
OS: Linux
OS-release: 4.15.0-1032-aws
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: C.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.24.1
pytest: 4.1.0
pip: 18.1
setuptools: 40.6.3
Cython: 0.29.2
numpy: 1.15.4
scipy: 1.1.0
pyarrow: 0.12.0
xarray: None
IPython: 7.2.0
sphinx: 1.8.3
patsy: 0.5.1
dateutil: 2.7.5
pytz: 2018.9
blosc: None
bottleneck: 1.2.1
tables: 3.4.4
numexpr: 2.6.9
feather: 0.4.0
matplotlib: 3.0.2
openpyxl: 2.5.12
xlrd: 1.2.0
xlwt: 1.3.0
xlsxwriter: 1.1.2
lxml.etree: 4.2.6
bs4: 4.7.1
html5lib: 1.0.1
sqlalchemy: 1.2.15
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: 0.2.1
pandas_gbq: None
pandas_datareader: None
gcsfs: None

</details>
