You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[SC-49529](https://app.shortcut.com/tiledb-inc/story/49529/core-abort-trap-due-to-aws-sdk-pyarrow-tiledb-interaction-again)
It has been noticed that the `tiledb` PyPI package weirdly interacts
with `pyarrow` and causes aborts when `pyarrow` gets `import`ed first
and we make an S3 operation with `tiledb`, and conversely when `tiledb`
gets `import`ed first and we make an S3 operation with `pyarrow`. After
some investigations, it was theorized that the problem would be fixed if
the AWS SDK in `pyarrow` was built with `-fvisibility=hidden`, which was
verified by building a `tiledb` wheel with such configuration and
testing that the converse case does no longer abort.
Turns out however, that hiding the symbols from `tiledb` also fixes the
_original_ case, which means that we don't have to change Arrow. This PR
updates all macOS and Linux[^1] vcpkg triplets to pass the CMake
equivalent of `-fvisibility=hidden` when building all ports that start
with `aws-`. Other ports remain unchanged.
The long-term fix might be to update the AWS SDK itself to build with
`-fvisibility=hidden`. I don't think there will be any problems since it
explicitly marks all the APIs it needs to export.
Validated on macOS-arm64. To validate it yourself, you can `pip install`
[one of the wheels I built with this change
applied](https://github.com/teo-tsirpanis/TileDB-Py/actions/runs/10171044013),
and run the following script:
```python
import pyarrow
import tiledb
a = tiledb.open("s3://<bucket>/debug/a1")
```
[^1]: As a precaution, even though the bug has been observed so far on
macOS. Windows is not susceptible, it always hides symbols by default in
DLLs.
---
TYPE: BUG
DESC: Fix symbol clashes between `tiledb` and `pyarrow` by building the
AWS SDK with its internal symbols hidden.
0 commit comments