The minimal build example provided by arrow (https://github.com/apache/arrow/blob/master/cpp/examples/minimal_build/example.cc) works fine using the libs shipped with yum on CentOS7. Using the libs shipped by pip install pyarrow instead provides a segfault at runtime. Here is the gdb dump with debugging flags included
[root@dab7bb04d93fexamples]# gdb ./../build/example_arrowGNUgdb (GDB) RedHatEnterpriseLinux7.6.1-120.el7Copyright (C) 2013FreeSoftwareFoundation, Inc.
LicenseGPLv3+: GNUGPLversion3orlater <http://gnu.org/licenses/gpl.html>Thisisfreesoftware: youarefreetochangeandredistributeit.
ThereisNOWARRANTY, totheextentpermittedbylaw. Type"show copying"and"show warranty"fordetails.
ThisGDBwasconfiguredas"x86_64-redhat-linux-gnu".
Forbugreportinginstructions, pleasesee:
<http://www.gnu.org/software/gdb/bugs/>...Readingsymbolsfrom /Users/kratsg/awkward-arrow-cmake-pybind11/build/example_arrow...done.
(gdb) runStartingprogram: /Users/kratsg/awkward-arrow-cmake-pybind11/examples/./../build/example_arrowwarning: Errordisablingaddressspacerandomization: Operationnotpermitted
[Threaddebuggingusinglibthread_dbenabled]
Usinghostlibthread_dblibrary"/lib64/libthread_db.so.1".
[NewThread0x7f9c58dff700 (LWP1643)]
* ReadingCSVfile'test.csv'intotableProgramreceivedsignalSIGSEGV, Segmentationfault.
__destroy<std::basic_string<char>*> (__last=<optimizedout>, __first=0x3200000000) at /usr/include/c++/4.8.2/bits/stl_construct.h:103103std::_Destroy(std::__addressof(*__first));
Missingseparatedebuginfos, use: debuginfo-installglibc-2.17-324.el7_9.x86_64libgcc-4.8.5-44.el7.x86_64libstdc++-4.8.5-44.el7.x86_64
(gdb) bt
#0__destroy<std::basic_string<char>*> (__last=<optimizedout>, __first=0x3200000000) at /usr/include/c++/4.8.2/bits/stl_construct.h:103
#1_Destroy<std::basic_string<char>*> (__last=<optimizedout>, __first=<optimizedout>) at /usr/include/c++/4.8.2/bits/stl_construct.h:126
#2_Destroy<std::basic_string<char>*, std::basic_string<char> > (__last=0x0, __first=<optimizedout>) at /usr/include/c++/4.8.2/bits/stl_construct.h:151
#3 ~vector (this=0x7ffff43602a8, __in_chrg=<optimizedout>) at /usr/include/c++/4.8.2/bits/stl_vector.h:415
#4arrow::csv::ConvertOptions::~ConvertOptions (this=0x7ffff4360220, __in_chrg=<optimizedout>)
at /usr/local/venv/lib/python3.8/site-packages/pyarrow/include/arrow/csv/options.h:64
#50x000000000040171ain (anonymousnamespace)::RunMain (argv=<optimizedout>, argc=<optimizedout>, this=<optimizedout>, this=<optimizedout>)
at /Users/kratsg/awkward-arrow-cmake-pybind11/src/example/arrow.cpp:39
#60x000000000040135finmain (argc=<optimizedout>, argv=<optimizedout>) at /Users/kratsg/awkward-arrow-cmake-pybind11/src/example/arrow.cpp:66
Below is the full CMake log + build log
# ./build.sh -- TheCXXcompileridentificationisGNU4.8.5
-- DetectingCXXcompilerABIinfo
-- DetectingCXXcompilerABIinfo - done
-- CheckforworkingCXXcompiler: /usr/bin/c++ - skipped
-- DetectingCXXcompilefeatures
-- DetectingCXXcompilefeatures - done
-- pybind11v2.6.2 -- FoundPythonInterp: /usr/local/bin/python3.8 (foundversion"3.8.10") -- FoundPythonLibs: /usr/local/lib/libpython3.8.so
-- PerformingTestHAS_FLTO
-- PerformingTestHAS_FLTO - Success
-- PyArrowincludes : /usr/local/venv/lib/python3.8/site-packages/pyarrow/include
-- PyArrowlibraries : arrow;arrow_python
-- PyArrowlibrarydirs : /usr/local/venv/lib/python3.8/site-packages/pyarrow
-- Awkwardincludes : /usr/local/venv/lib/python3.8/site-packages/awkward/include
-- Awkwardlibraries: /usr/local/venv/lib/python3.8/site-packages/awkward
-- Libraries: /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward-cpu-kernels.so /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward.so /usr/lib64/libdl.so /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow.so /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow_python.so
-- Configuringdone
-- Generatingdone
-- Buildfileshavebeenwrittento: /Users/kratsg/awkward-arrow-cmake-pybind11/build
-- pybind11v2.6.2 -- PyArrowincludes : /usr/local/venv/lib/python3.8/site-packages/pyarrow/include
-- PyArrowlibraries : arrow;arrow_python
-- PyArrowlibrarydirs : /usr/local/venv/lib/python3.8/site-packages/pyarrow
-- Awkwardincludes : /usr/local/venv/lib/python3.8/site-packages/awkward/include
-- Awkwardlibraries: /usr/local/venv/lib/python3.8/site-packages/awkward
-- Libraries: /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward-cpu-kernels.so /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward.so /usr/lib64/libdl.so /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow.so /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow_python.so
-- Configuringdone
-- Generatingdone
-- Buildfileshavebeenwrittento: /Users/kratsg/awkward-arrow-cmake-pybind11/build
-- CachevaluesCMAKE_BUILD_TYPE:STRING=RelWithDebInfoCMAKE_INSTALL_PREFIX:PATH=/usr/localCPU-KERNELS:FILEPATH=/usr/local/venv/lib/python3.8/site-packages/awkward/libawkward-cpu-kernels.soLIBARROW:FILEPATH=/usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow.soLIBARROW_PYTHON:FILEPATH=/usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow_python.soLIBAWKWARD:FILEPATH=/usr/local/venv/lib/python3.8/site-packages/awkward/libawkward.soLIBDL:FILEPATH=/usr/lib64/libdl.soPYBIND11_FINDPYTHON:BOOL=OFFPYBIND11_INSTALL:BOOL=OFFPYBIND11_NOPYTHON:BOOL=OFFPYBIND11_PYTHON_VERSION:STRING=
PYBIND11_TEST:BOOL=OFF
###################################################################
######################### BUILDLOGBELOW #########################
###################################################################
/usr/local/bin/cmake -S/Users/kratsg/awkward-arrow-cmake-pybind11/src -B/Users/kratsg/awkward-arrow-cmake-pybind11/build --check-build-systemCMakeFiles/Makefile.cmake0
/usr/local/bin/cmake -Ecmake_progress_start /Users/kratsg/awkward-arrow-cmake-pybind11/build/CMakeFiles /Users/kratsg/awkward-arrow-cmake-pybind11/build//CMakeFiles/progress.marks
/usr/bin/gmake -fCMakeFiles/Makefile2allgmake[1]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
/usr/bin/gmake -fCMakeFiles/babel.dir/build.makeCMakeFiles/babel.dir/depend
/usr/bin/gmake -fCMakeFiles/example_arrow.dir/build.makeCMakeFiles/example_arrow.dir/depend
/usr/bin/gmake -fCMakeFiles/example.dir/build.makeCMakeFiles/example.dir/dependgmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
cd /Users/kratsg/awkward-arrow-cmake-pybind11/build && /usr/local/bin/cmake -Ecmake_depends"Unix Makefiles" /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build/CMakeFiles/babel.dir/DependInfo.cmake --color=
gmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
cd /Users/kratsg/awkward-arrow-cmake-pybind11/build && /usr/local/bin/cmake -Ecmake_depends"Unix Makefiles" /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build/CMakeFiles/example_arrow.dir/DependInfo.cmake --color=
gmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
cd /Users/kratsg/awkward-arrow-cmake-pybind11/build && /usr/local/bin/cmake -Ecmake_depends"Unix Makefiles" /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/src /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build /Users/kratsg/awkward-arrow-cmake-pybind11/build/CMakeFiles/example.dir/DependInfo.cmake --color=
gmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
/usr/bin/gmake -fCMakeFiles/example.dir/build.makeCMakeFiles/example.dir/buildgmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
gmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
/usr/bin/gmake -fCMakeFiles/babel.dir/build.makeCMakeFiles/babel.dir/buildgmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
/usr/bin/gmake -fCMakeFiles/example_arrow.dir/build.makeCMakeFiles/example_arrow.dir/buildgmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
gmake[2]: Enteringdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
[ 14%] BuildingCXXobjectCMakeFiles/example.dir/example/python.cpp.o
/usr/bin/c++ -Dexample_EXPORTS -isystem /Users/kratsg/awkward-arrow-cmake-pybind11/src/pybind11/include -isystem /usr/local/venv/lib/python3.8/site-packages/awkward/include -O2 -g -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -MD -MTCMakeFiles/example.dir/example/python.cpp.o -MFCMakeFiles/example.dir/example/python.cpp.o.d -oCMakeFiles/example.dir/example/python.cpp.o -c /Users/kratsg/awkward-arrow-cmake-pybind11/src/example/python.cpp
[ 28%] BuildingCXXobjectCMakeFiles/babel.dir/babel/python.cpp.o
/usr/bin/c++ -Dbabel_EXPORTS -isystem /Users/kratsg/awkward-arrow-cmake-pybind11/src/pybind11/include -isystem /usr/local/venv/lib/python3.8/site-packages/pyarrow/include -isystem /usr/local/venv/lib/python3.8/site-packages/awkward/include -O2 -g -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -MD -MTCMakeFiles/babel.dir/babel/python.cpp.o -MFCMakeFiles/babel.dir/babel/python.cpp.o.d -oCMakeFiles/babel.dir/babel/python.cpp.o -c /Users/kratsg/awkward-arrow-cmake-pybind11/src/babel/python.cpp
[ 42%] BuildingCXXobjectCMakeFiles/example_arrow.dir/example/arrow.cpp.o
/usr/bin/c++ -isystem /usr/local/venv/lib/python3.8/site-packages/pyarrow/include -O2 -g -DNDEBUG -std=gnu++11 -MD -MTCMakeFiles/example_arrow.dir/example/arrow.cpp.o -MFCMakeFiles/example_arrow.dir/example/arrow.cpp.o.d -oCMakeFiles/example_arrow.dir/example/arrow.cpp.o -c /Users/kratsg/awkward-arrow-cmake-pybind11/src/example/arrow.cpp
[ 57%] LinkingCXXexecutableexample_arrow
/usr/local/bin/cmake -Ecmake_link_scriptCMakeFiles/example_arrow.dir/link.txt --verbose=1
/usr/bin/c++ -O2 -g -DNDEBUGCMakeFiles/example_arrow.dir/example/arrow.cpp.o -oexample_arrow -Wl,-rpath,/usr/local/venv/lib/python3.8/site-packages/pyarrow /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow.sogmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
[ 57%] Builttargetexample_arrow
[ 71%] BuildingCXXobjectCMakeFiles/example.dir/example/minimal.cpp.o
/usr/bin/c++ -Dexample_EXPORTS -isystem /Users/kratsg/awkward-arrow-cmake-pybind11/src/pybind11/include -isystem /usr/local/venv/lib/python3.8/site-packages/awkward/include -O2 -g -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -MD -MTCMakeFiles/example.dir/example/minimal.cpp.o -MFCMakeFiles/example.dir/example/minimal.cpp.o.d -oCMakeFiles/example.dir/example/minimal.cpp.o -c /Users/kratsg/awkward-arrow-cmake-pybind11/src/example/minimal.cpp
[ 85%] LinkingCXXsharedmoduleexample.cpython-38-x86_64-linux-gnu.so
/usr/local/bin/cmake -Ecmake_link_scriptCMakeFiles/example.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -O2 -g -DNDEBUG -shared -oexample.cpython-38-x86_64-linux-gnu.soCMakeFiles/example.dir/example/python.cpp.oCMakeFiles/example.dir/example/minimal.cpp.o -Wl,-rpath,/usr/local/venv/lib/python3.8/site-packages/awkward /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward-cpu-kernels.so /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward.so /usr/lib64/libdl.so [100%] LinkingCXXsharedmodulebabel.cpython-38-x86_64-linux-gnu.so
/usr/local/bin/cmake -Ecmake_link_scriptCMakeFiles/babel.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -O2 -g -DNDEBUG -shared -obabel.cpython-38-x86_64-linux-gnu.soCMakeFiles/babel.dir/babel/python.cpp.o -Wl,-rpath,/usr/local/venv/lib/python3.8/site-packages/pyarrow:/usr/local/venv/lib/python3.8/site-packages/awkward /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow.so /usr/local/venv/lib/python3.8/site-packages/pyarrow/libarrow_python.so /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward-cpu-kernels.so /usr/local/venv/lib/python3.8/site-packages/awkward/libawkward.so /usr/lib64/libdl.sogmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
[100%] Builttargetexamplegmake[2]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
[100%] Builttargetbabelgmake[1]: Leavingdirectory `/Users/kratsg/awkward-arrow-cmake-pybind11/build'
/usr/local/bin/cmake -Ecmake_progress_start /Users/kratsg/awkward-arrow-cmake-pybind11/build/CMakeFiles0
One can reproduce this by cloning the corresponding repository recursively, then building the docker image, compiling the code, and then running it
gitclone --recursivegit@github.com:kratsg/awkward-arrow-cmake-pybind11.gitmakebuild-image-debugmakedebug # launchesdockerimage
> ./build.sh
> ./run_example.sh
where > denotes commands run inside the docker image.
Environment: See dockerfile: https://github.com/kratsg/awkward-arrow-cmake-pybind11/blob/0e196983b2452c4c3dbbde40984db7031397d0a7/Dockerfile
Reporter: Giordon Stark / @kratsg
Assignee: Giordon Stark / @kratsg
PRs and other links:
Note: This issue was originally created as ARROW-13085. Please see the migration documentation for further details.
Refer to kratsg/awkward-arrow-cmake-pybind11#6 (comment) and code-base available here: https://github.com/kratsg/awkward-arrow-cmake-pybind11/tree/0e196983b2452c4c3dbbde40984db7031397d0a7
The minimal build example provided by arrow (https://github.com/apache/arrow/blob/master/cpp/examples/minimal_build/example.cc) works fine using the libs shipped with
yumon CentOS7. Using the libs shipped bypip install pyarrowinstead provides a segfault at runtime. Here is the gdb dump with debugging flags includedBelow is the full CMake log + build log
One can reproduce this by cloning the corresponding repository recursively, then building the docker image, compiling the code, and then running it
where
>denotes commands run inside the docker image.Environment: See dockerfile: https://github.com/kratsg/awkward-arrow-cmake-pybind11/blob/0e196983b2452c4c3dbbde40984db7031397d0a7/Dockerfile
Reporter: Giordon Stark / @kratsg
Assignee: Giordon Stark / @kratsg
Externally tracked issue: kratsg/awkward-arrow-cmake-pybind11#6
PRs and other links:
Note: This issue was originally created as ARROW-13085. Please see the migration documentation for further details.