paleolimbot opened a new pull request, #35812:
URL: https://github.com/apache/arrow/pull/35812

   This was identified and 99% debugged by @lgautier on 
https://github.com/rpy2/rpy2-arrow/issues/11 . Thank you!
   
   I have no idea why this does anything; however, the `RStringViewer` class 
*was* holding on to an unnecessary Array reference and this seemed to fix the 
crash for me. Maybe a circular reference? The reprex I was using (provided by 
@lgautier) was:
   
   Install fresh deps:
   
   ```bash
   pip3 install pandas pyarrow rpy2-arrow
   R -e 'install.packages("arrow", repos = "https://cloud.r-project.org/";)'
   ```
   
   Run this python script:
   
   ```python
   import pandas as pd
   import pyarrow
   from rpy2.robjects.packages import importr
   import rpy2.robjects
   import rpy2_arrow.arrow as pyra
   base = importr('base')
   nanoarrow = importr('nanoarrow')
   
   code = """
       function(df) {
           # df$col1  # no segfault on exit
           # I(df$col1)  # no segfault on exit
           # df$col2  # no segfault on exit
           I(df$col2)  # segfault on exit
       }
   """
   rfunction = rpy2.robjects.r(code)
   
   pd_df = pd.DataFrame({
       "col1": range(10),
       "col2":["a" for num in range(10)]
   })
   pd_tbl = pyarrow.Table.from_pandas(pd_df)
   r_tbl = pyra.pyarrow_table_to_r_table(pd_tbl)
   r_df = base.as_data_frame(nanoarrow.as_nanoarrow_array_stream(r_tbl))
   
   output = rfunction(r_df)
   print(output)
   ```
   
   Before this PR (installing R/arrow from main) I get:
   
   ```
   (.venv) dewey@Deweys-Mac-mini 2023-05-29_rpy % python reprex-arrow.py
    [1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
   
   zsh: segmentation fault  python reprex-arrow.py
   ```
   
   After this PR I get:
   
   ```
   (.venv) dewey@Deweys-Mac-mini 2023-05-29_rpy % python reprex-arrow.py
    [1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
   ```
   
   (with no segfault)
   
   I wonder if this also will help with #35391 since it's also a segfault 
involving the Python <-> R bridge.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to