Skip to content

Segfault in AppendUnicodeStringsToBuilder #455

Description

@gsakkis

I'm getting intermittent but frequent segfaults when calling fetcharrowbatches.

Core dump bt:

#0  0x00007f93f2c84184 in __memmove_avx_unaligned_erms_rtm () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:444
#1  0x00007f93dc37cbf0 in void std::__cxx11::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t> >::_M_construct<char16_t const*>(char16_t const*, char16_t const*, std::forward_iterator_tag) [clone .isra.0] () from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#2  0x00007f93dc3849fc in turbodbc_arrow::append_to_unicode_builder(unsigned long, std::unique_ptr<arrow::ArrayBuilder, std::default_delete<arrow::ArrayBuilder> > const&, cpp_odbc::multi_value_buffer const&, unsigned char*, bool) () from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#3  0x00007f93dc384f0b in turbodbc_arrow::arrow_result_set::process_batch(unsigned long, std::vector<std::unique_ptr<arrow::ArrayBuilder, std::default_delete<arrow::ArrayBuilder> >, std::allocator<std::unique_ptr<arrow::ArrayBuilder, std::default_delete<arrow::ArrayBuilder> > > > const&) ()
   from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#4  0x00007f93dc389867 in turbodbc_arrow::arrow_result_set::fetch_all_native(std::shared_ptr<arrow::Table>*, bool) ()
   from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#5  0x00007f93dc389e01 in turbodbc_arrow::arrow_result_set::fetch_next_batch() ()
   from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#6  0x00007f93dc35faec in pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<pybind11::object, turbodbc_arrow::arrow_result_set, , pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::object (turbodbc_arrow::arrow_result_set::*)(), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(turbodbc_arrow::arrow_result_set*)#1}, pybind11::object, turbodbc_arrow::arrow_result_set*, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::cpp_function::initialize<pybind11::object, turbodbc_arrow::arrow_result_set, , pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::object (turbodbc_arrow::arrow_result_set::*)(), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(turbodbc_arrow::arrow_result_set*)#1}&&, pybind11::object (*)(turbodbc_arrow::arrow_result_set*), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#1}::_FUN(pybind11::detail::function_call&) ()
   from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so
#7  0x00007f93dc342717 in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) ()
   from ENV/lib/python3.11/site-packages/turbodbc_intern.cpython-311-x86_64-linux-gnu.so

Related packages:

python                    3.11.10         hc5c86c4_3_cpython    conda-forge
pyarrow                   18.1.0          py311h38be061_0    conda-forge
turbodbc                  5.1.0           py311ha7ebf01_0    conda-forge

Although it's not a recent issue, I can reproduce it (with slighly different bt) all the way back to 4.8.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions