Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-18360

[Python] Incorrectly passing schema=None to do_put crashes

    XMLWordPrintableJSON

Details

    Description

      In pyarrow.flight, putting an incorrect value of None for schema in do_put will lead to a core dump.

      In pyarrow 9.0.0, trying to enter the command leads to a

      In [3]: writer, reader = client.do_put(flight.FlightDescriptor.for_command(cmd), schema=None)
      Segmentation fault (core dumped)
      

      In pyarrow 7.0.0, the kernel crashes after attempting to access the writer and I got the following:

      In [38]: client = flight.FlightClient('grpc+tls://localhost:9643', disable_server_verification=True)
      
      In [39]: writer, reader = client.do_put(flight.FlightDescriptor.for_command(cmd), None)
      
      In [40]: writer./home/conda/feedstock_root/build_artifacts/arrow-cpp-ext_1644752264449/work/cpp/src/arrow/flight/client.cc:736:  Check failed: (batch_writer_) != (nullptr) 
      miniconda3/envs/dev/lib/python3.10/site-packages/pyarrow/../../../libarrow.so.700(+0x66288c)[0x7f0feeae088c]
      miniconda3/envs/dev/lib/python3.10/site-packages/pyarrow/../../../libarrow.so.700(_ZN5arrow4util8ArrowLogD1Ev+0x101)[0x7f0feeae0c91]
      miniconda3/envs/dev/lib/python3.10/site-packages/pyarrow/../../../libarrow_flight.so.700(+0x7c1e1)[0x7f0fa9e331e1]
      miniconda3/envs/dev/lib/python3.10/site-packages/pyarrow/lib.cpython-310-x86_64-linux-gnu.so(+0x17cf1a)[0x7f0fefe7ff1a]
      miniconda3/envs/dev/bin/python(_PyObject_GenericGetAttrWithDict+0x4f3)[0x559a7cb8da03]
      miniconda3/envs/dev/bin/python(+0x144814)[0x559a7cb8f814]
      miniconda3/envs/dev/bin/python(+0x1445bf)[0x559a7cb8f5bf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x30c)[0x559a7cb7ebcc]
      miniconda3/envs/dev/bin/python(+0x1516ac)[0x559a7cb9c6ac]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(+0x1ead44)[0x559a7cc35d44]
      miniconda3/envs/dev/bin/python(+0x220397)[0x559a7cc6b397]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(+0x1516ac)[0x559a7cb9c6ac]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(+0x151ef3)[0x559a7cb9cef3]
      miniconda3/envs/dev/bin/python(+0x1ead44)[0x559a7cc35d44]
      miniconda3/envs/dev/bin/python(+0x220397)[0x559a7cc6b397]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1311)[0x559a7cb7fbd1]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x30c)[0x559a7cb7ebcc]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(+0x14fc9d)[0x559a7cb9ac9d]
      miniconda3/envs/dev/bin/python(_PyObject_GenericGetAttrWithDict+0x4f3)[0x559a7cb8da03]
      miniconda3/envs/dev/bin/python(PyObject_GetAttr+0x44)[0x559a7cb8c494]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x4d8f)[0x559a7cb8364f]
      miniconda3/envs/dev/bin/python(+0x14fc9d)[0x559a7cb9ac9d]
      miniconda3/envs/dev/bin/python(+0x1416f5)[0x559a7cb8c6f5]
      miniconda3/envs/dev/bin/python(PyObject_GetAttr+0x52)[0x559a7cb8c4a2]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x4d8f)[0x559a7cb8364f]
      miniconda3/envs/dev/bin/python(+0x14fc9d)[0x559a7cb9ac9d]
      miniconda3/envs/dev/bin/python(_PyObject_GenericGetAttrWithDict+0x4f3)[0x559a7cb8da03]
      miniconda3/envs/dev/bin/python(PyObject_GetAttr+0x44)[0x559a7cb8c494]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x4d8f)[0x559a7cb8364f]
      miniconda3/envs/dev/bin/python(+0x15a178)[0x559a7cba5178]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x9ca)[0x559a7cb7f28a]
      miniconda3/envs/dev/bin/python(+0x15a178)[0x559a7cba5178]
      miniconda3/envs/dev/bin/python(+0x1602d9)[0x559a7cbab2d9]
      miniconda3/envs/dev/bin/python(+0x19d5f5)[0x559a7cbe85f5]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x30c)[0x559a7cb7ebcc]
      miniconda3/envs/dev/bin/python(+0x15a178)[0x559a7cba5178]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x9ca)[0x559a7cb7f28a]
      miniconda3/envs/dev/bin/python(+0x1f436d)[0x559a7cc3f36d]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1ae1)[0x559a7cb803a1]
      miniconda3/envs/dev/bin/python(+0x15a178)[0x559a7cba5178]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x9ca)[0x559a7cb7f28a]
      miniconda3/envs/dev/bin/python(+0x1f436d)[0x559a7cc3f36d]
      miniconda3/envs/dev/bin/python(+0x209ae9)[0x559a7cc54ae9]
      miniconda3/envs/dev/bin/python(+0x104a5c)[0x559a7cb4fa5c]
      miniconda3/envs/dev/bin/python(PyIter_Send+0x53a)[0x559a7cc0dc6a]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1ae1)[0x559a7cb803a1]
      miniconda3/envs/dev/bin/python(+0x1f436d)[0x559a7cc3f36d]
      miniconda3/envs/dev/bin/python(+0x209ae9)[0x559a7cc54ae9]
      miniconda3/envs/dev/bin/python(+0x104a5c)[0x559a7cb4fa5c]
      miniconda3/envs/dev/bin/python(PyIter_Send+0x53a)[0x559a7cc0dc6a]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1ae1)[0x559a7cb803a1]
      miniconda3/envs/dev/bin/python(+0x1f436d)[0x559a7cc3f36d]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1ae1)[0x559a7cb803a1]
      miniconda3/envs/dev/bin/python(+0x1f436d)[0x559a7cc3f36d]
      miniconda3/envs/dev/lib/python3.10/lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so(+0x78d0)[0x7f0ff5eeb8d0]
      miniconda3/envs/dev/bin/python(_PyObject_MakeTpCall+0x338)[0x559a7cb88298]
      miniconda3/envs/dev/bin/python(+0xfe792)[0x559a7cb49792]
      miniconda3/envs/dev/bin/python(+0x13b8e7)[0x559a7cb868e7]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x5aec)[0x559a7cb843ac]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(+0x1516ac)[0x559a7cb9c6ac]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x1311)[0x559a7cb7fbd1]
      miniconda3/envs/dev/bin/python(+0x1516ac)[0x559a7cb9c6ac]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x66f)[0x559a7cb7ef2f]
      miniconda3/envs/dev/bin/python(+0x1516ac)[0x559a7cb9c6ac]
      miniconda3/envs/dev/bin/python(PyObject_Call+0xb8)[0x559a7cb9d348]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x2b05)[0x559a7cb813c5]
      miniconda3/envs/dev/bin/python(_PyFunction_Vectorcall+0x6f)[0x559a7cb8f3cf]
      miniconda3/envs/dev/bin/python(_PyEval_EvalFrameDefault+0x30c)[0x559a7cb7ebcc]
      miniconda3/envs/dev/bin/python(+0x1eab92)[0x559a7cc35b92]
      miniconda3/envs/dev/bin/python(PyEval_EvalCode+0x87)[0x559a7cc35ad7]
      miniconda3/envs/dev/bin/python(+0x21d709)[0x559a7cc68709]
      miniconda3/envs/dev/bin/python(+0x2183f4)[0x559a7cc633f4]
      miniconda3/envs/dev/bin/python(+0x982ba)[0x559a7cae32ba]
      miniconda3/envs/dev/bin/python(_PyRun_SimpleFileObject+0x1af)[0x559a7cc5d5cf]
      miniconda3/envs/dev/bin/python(_PyRun_AnyFileObject+0x43)[0x559a7cc5d3a3]
      miniconda3/envs/dev/bin/python(Py_RunMain+0x39f)[0x559a7cc5a56f]
      miniconda3/envs/dev/bin/python(Py_BytesMain+0x39)[0x559a7cc28e09]
      /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7f0ff77df083]
      miniconda3/envs/dev/bin/python(+0x1ddd11)[0x559a7cc28d11]
      Aborted (core dumped)
      

      I know it's incorrect to use None, but we have had a report of this crashing notebook kernels.

      Attachments

        Issue Links

          Activity

            People

              milesgranger Miles Granger
              bryanc Bryan Cutler
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2h 10m
                  2h 10m