<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Debugging strategies • Arrow R Package</title>
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../../favicon-96x96.png">
<link rel="icon" type="”image/svg+xml”" href="../../favicon.svg">
<link rel="apple-touch-icon" sizes="180x180" href="../../apple-touch-icon.png">
<link rel="icon" sizes="any" href="../../favicon.ico">
<link rel="manifest" href="../../site.webmanifest">
<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet">
<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><link href="../../extra.css" rel="stylesheet">
<meta property="og:title" content="Debugging strategies">
<meta name="description" content="Tools and strategies to help arrow developers with debugging
">
<meta property="og:description" content="Tools and strategies to help arrow developers with debugging
">
<meta property="og:image" content="https://arrow.apache.org/img/arrow-logo_horizontal_black-txt_white-bg.png">
<meta property="og:image:alt" content="Apache Arrow logo, displaying the triple chevron image adjacent to the text">
<!-- Matomo --><script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '20']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script><!-- End Matomo Code --><!-- Kapa AI --><script async src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" data-project-name="Apache Arrow" data-project-color="#000000" data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" data-modal-disclaimer="This is a custom LLM with access to all of [Arrow documentation](https://arrow.apache.org/docs/).  If you want an R-specific answer, please mention this in your question." data-consent-required="true" data-user-analytics-cookie-enabled="false" data-consent-screen-disclaimer="By clicking &quot;I agree, let's chat&quot;, you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies."></script><!-- End Kapa AI -->
</head>
<body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>


    <nav class="navbar fixed-top navbar-dark navbar-expand-lg bg-black"><div class="container">

    <a class="navbar-brand me-2" href="../../index.html">Arrow R Package</a>

    <span class="version">
      <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">22.0.0.9000</small>
    </span>


    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div id="navbar" class="collapse navbar-collapse ms-3">
      <ul class="navbar-nav me-auto">
<li class="nav-item"><a class="nav-link" href="../../articles/arrow.html">Get started</a></li>
<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li>
<li class="active nav-item dropdown">
  <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
  <ul class="dropdown-menu" aria-labelledby="dropdown-articles">
<li><hr class="dropdown-divider"></li>
    <li><h6 class="dropdown-header" data-toc-skip>Using the package</h6></li>
    <li><a class="dropdown-item" href="../../articles/read_write.html">Reading and writing data files</a></li>
    <li><a class="dropdown-item" href="../../articles/data_wrangling.html">Data analysis with dplyr syntax</a></li>
    <li><a class="dropdown-item" href="../../articles/dataset.html">Working with multi-file data sets</a></li>
    <li><a class="dropdown-item" href="../../articles/python.html">Integrating Arrow, Python, and R</a></li>
    <li><a class="dropdown-item" href="../../articles/fs.html">Using cloud storage (S3, GCS)</a></li>
    <li><a class="dropdown-item" href="../../articles/flight.html">Connecting to a Flight server</a></li>
    <li><hr class="dropdown-divider"></li>
    <li><h6 class="dropdown-header" data-toc-skip>Arrow concepts</h6></li>
    <li><a class="dropdown-item" href="../../articles/data_objects.html">Data objects</a></li>
    <li><a class="dropdown-item" href="../../articles/data_types.html">Data types</a></li>
    <li><a class="dropdown-item" href="../../articles/metadata.html">Metadata</a></li>
    <li><hr class="dropdown-divider"></li>
    <li><h6 class="dropdown-header" data-toc-skip>Installation</h6></li>
    <li><a class="dropdown-item" href="../../articles/install.html">Installing on Linux</a></li>
    <li><a class="dropdown-item" href="../../articles/install_nightly.html">Installing development versions</a></li>
    <li><hr class="dropdown-divider"></li>
    <li><a class="dropdown-item" href="../../articles/index.html">More articles...</a></li>
  </ul>
</li>
<li class="nav-item"><a class="nav-link" href="../../news/index.html">Changelog</a></li>
      </ul>
<form class="form-inline my-2 my-lg-0" role="search">
        <input type="search" class="form-control me-sm-2" aria-label="Toggle navigation" name="search-input" data-search-index="../../search.json" id="search-input" placeholder="" autocomplete="off">
</form>

      <ul class="navbar-nav">
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/apache/arrow/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
      </ul>
</div>


  </div>
</nav><div class="container template-article">




<div class="row">
  <main id="main" class="col-md-9"><div class="page-header">

      <h1>Debugging strategies</h1>
            
      
      <small class="dont-index">Source: <a href="https://github.com/apache/arrow/blob/main/r/vignettes/developers/debugging.Rmd" class="external-link"><code>vignettes/developers/debugging.Rmd</code></a></small>
      <div class="d-none name"><code>debugging.Rmd</code></div>
    </div>

    
    
<p>If you are a developer working with Arrow code, the package’s use of
tidy eval and C++ necessitates a solid debugging strategy. In this
article, we recommend a few approaches.</p>
<div class="section level2">
<h2 id="debugging-r-code">Debugging R code<a class="anchor" aria-label="anchor" href="#debugging-r-code"></a>
</h2>
<p>In general, we have found that using interactive debugging
(e.g. calls to <code><a href="https://rdrr.io/r/base/browser.html" class="external-link">browser()</a></code>), where you can inspect objects in
a particular environment, is more efficient than simpler techniques such
as <code><a href="https://rdrr.io/r/base/print.html" class="external-link">print()</a></code> statements.</p>
</div>
<div class="section level2">
<h2 id="getting-more-descriptive-c-error-messages-after-a-segfault">Getting more descriptive C++ error messages after a segfault<a class="anchor" aria-label="anchor" href="#getting-more-descriptive-c-error-messages-after-a-segfault"></a>
</h2>
<p>If you are working in the RStudio IDE, your R session will be aborted
if there is a segfault. If you re-run your code in a command-line R
session, the session isn’t automatically aborted and so it will be
possible to copy the error message accompanying the segfault. Here is an
example from a bug which existed at time of writing.</p>
<pre class="shell"><code>&gt; S3FileSystem$create()

 *** caught segfault ***
address 0x1a0, cause 'memory not mapped'

Traceback:
 1: (function (anonymous, access_key, secret_key, session_token,     role_arn, session_name, external_id, load_frequency, region,     endpoint_override, scheme, background_writes) {    .Call(`_arrow_fs___S3FileSystem__create`, anonymous, access_key,         secret_key, session_token, role_arn, session_name, external_id,         load_frequency, region, endpoint_override, scheme, background_writes)})(access_key = "", secret_key = "", session_token = "", role_arn = "",     session_name = "", external_id = "", load_frequency = 900L,     region = "", endpoint_override = "", scheme = "", background_writes = TRUE,     anonymous = FALSE)
 2: exec(fs___S3FileSystem__create, !!!args)
 3: S3FileSystem$create()</code></pre>
<p>This output provides the R traceback; however, it doesn’t provide any
information about the exact line of C++ code from which the segfault
originated. For this, you will need to run R with the C++ debugger
attached.</p>
<div class="section level3">
<h3 id="running-r-code-with-the-c-debugger-attached">Running R code with the C++ debugger attached<a class="anchor" aria-label="anchor" href="#running-r-code-with-the-c-debugger-attached"></a>
</h3>
<p>As Arrow has C++ code at its core, debugging code can sometimes be
tricky when errors originate in the C++ rather than the R layer. If you
are adding new code which triggers a C++ bug (or find one in existing
code), this can result in a segfault. If you are working in RStudio, the
session is aborted, and you may not be able to retrieve the error
messaging needed to diagnose and/or report the bug. One way around this
is to find the code that causes the error, and run R with a C++
debugger.</p>
<p>If you are using macOS and have installed R using the Apple
installer, you will not be able to run R with a debugger attached;
please see <a href="https://mac.r-project.org/bin/macosx/RMacOSX-FAQ.html#I-cannot-attach-debugger-to-R" class="external-link">the
instructions here for details on causes of this and workarounds.</a></p>
<p>Firstly, load R with your debugger. The most common debuggers are
<code>gdb</code> (typically found on Linux, sometimes on macOS, or
Windows via MinGW or Cygwin) and <code>lldb</code> (the default macOS
debugger).</p>
<p>In my case it’s <code>gdb</code>, but if you’re using the
<code>lldb</code> debugger (for example, if you’re on a Mac), just swap
in that command here.</p>
<pre class="shell"><code>R -d gdb</code></pre>
<p>Next, run R.</p>
<pre class="shell"><code><span><span class="va">run</span></span></code></pre>
<p>You should now be in an R session with the C++ debugger attached.
This will look similar to a normal R session, but with extra output.</p>
<p>Now, run your code - either directly in the session or by sourcing it
from a file. If the code results in a segfault, you will have extra
output that you can use to diagnose the problem or attach to an issue as
extra information.</p>
<p>Here is debugger output from the segfault shown in the previous
example. You can see here that the exact line which triggers the
segfault is included in the output.</p>
<pre class="shell"><code>&gt; S3FileSystem$create()

Thread 1 "R" received signal SIGSEGV, Segmentation fault.
0x00007ffff0128369 in std::__atomic_base&lt;long&gt;::operator++ (this=0x178) at /usr/include/c++/9/bits/atomic_base.h:318
318       operator++() noexcept</code></pre>
<div class="section level4">
<h4 id="getting-debugger-output-if-your-session-hangs">Getting debugger output if your session hangs<a class="anchor" aria-label="anchor" href="#getting-debugger-output-if-your-session-hangs"></a>
</h4>
<p>The instructions above can provide valuable additional context when a
segfault occurs. However, there are occasionally circumstances in which
a bug could cause your session to hang indefinitely without segfaulting.
In this case, it may be diagnostically useful to interrupt the debugger
and generate backtraces from all running threads.</p>
<p>To do this, firstly, press Ctrl/Cmd and C to interrupt the debugger,
and then run:</p>
<pre class="shell"><code>thread apply all bt</code></pre>
<p>This will generate a large amount of output, but this information is
useful when identifying the cause of the issue.</p>
</div>
</div>
</div>
<div class="section level2">
<h2 id="further-reading">Further reading<a class="anchor" aria-label="anchor" href="#further-reading"></a>
</h2>
<p>The following resources provide detailed guides to debugging R
code:</p>
<ul>
<li><a href="https://adv-r.hadley.nz/debugging.html" class="external-link">The chapter on
debugging in ‘Advanced R’ by Hadley Wickham</a></li>
<li><a href="https://support.rstudio.com/hc/en-us/articles/205612627-Debugging-with-RStudio" class="external-link">The
RStudio debugging documentation</a></li>
</ul>
<p>For an excellent in-depth guide to using the C++ debugger in R, see
<a href="https://blog.davisvaughan.com/2019/04/05/debug-r-package-with-cpp/" class="external-link">this
blog post by David Vaughan.</a></p>
<p>You can find a list of equivalent <a href="https://lldb.llvm.org/use/map.html" class="external-link">gdb and lldb commands on the
LLDB website.</a></p>
</div>
  </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
    </nav></aside>
</div>



    <footer><div class="pkgdown-footer-left">
  <p><a href="https://arrow.apache.org/docs/r/versions.html">Older versions of these docs</a></p>
</div>

<div class="pkgdown-footer-right">
  <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.2.0.</p>
</div>

    </footer>
</div>





  </body>
</html>
