R Under development (unstable) (2026-04-10 r89857) -- "Unsuffered Consequences" Copyright (C) 2026 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(testthat) > library(readODS) > > test_check("readODS") ================================================================= ==2866879==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7b62b1f40280 at pc 0x559a015b5e18 bp 0x7ffd19496290 sp 0x7ffd19495a58 READ of size 3899 at 0x7b62b1f40280 thread T0 #0 0x559a015b5e17 in fwrite /home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:1151:16 #1 0x7b62a1f4ad36 in std::__1::basic_filebuf>::overflow(int) (/usr/local/clang22/lib/x86_64-unknown-linux-gnu/libc++.so.1+0xb4d36) #2 0x7b62a1f4b2ad in std::__1::basic_filebuf>::sync() (/usr/local/clang22/lib/x86_64-unknown-linux-gnu/libc++.so.1+0xb52ad) #3 0x7b62a1f4a3e6 in std::__1::basic_filebuf>::~basic_filebuf() (/usr/local/clang22/lib/x86_64-unknown-linux-gnu/libc++.so.1+0xb43e6) #4 0x7b62a571508f in std::__1::basic_ofstream>::~basic_ofstream() /data/gannet2/ripley/Sources/LLVM/LLVM-22.1.3-Linux-X64/bin/../include/c++/v1/fstream:1615:56 #5 0x7b62a571508f in std::__1::basic_ofstream>::~basic_ofstream() /data/gannet2/ripley/Sources/LLVM/LLVM-22.1.3-Linux-X64/bin/../include/c++/v1/fstream:1615:56 #6 0x7b62a571508f in write_sheet_file_(std::__1::basic_string, std::__1::allocator> const&, cpp11::data_frame const&, std::__1::basic_string, std::__1::allocator> const&, bool, bool, bool, bool, std::__1::basic_string, std::__1::allocator> const&, std::__1::basic_string, std::__1::allocator> const&) /data/gannet/ripley/R/packages/tests-clang-ASAN/readODS/src/write_sheet_file_.cpp:173:1 #7 0x7b62a56dab5f in _readODS_write_sheet_file_ /data/gannet/ripley/R/packages/tests-clang-ASAN/readODS/src/cpp11.cpp:54:27 #8 0x559a017fcae9 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c #9 0x559a018c056d in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8682:21 #10 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #11 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #12 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #13 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #14 0x559a018a6d36 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #15 0x559a018a6d36 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280:12 #16 0x559a018a866a in forcePromise /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:976:13 #17 0x559a018d39e1 in getvar /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:5849:6 #18 0x559a018d39e1 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7862:20 #19 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #20 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #21 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #22 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #23 0x559a018a6d36 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #24 0x559a018a6d36 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280:12 #25 0x559a017f1015 in do_External /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:573:11 #26 0x559a018b4fca in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8132:14 #27 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #28 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #29 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #30 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #31 0x559a018a6d36 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #32 0x559a018a6d36 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280:12 #33 0x559a018fcfe9 in do_begin /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2992:10 #34 0x559a018a6850 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1232:12 #35 0x559a019048d3 in do_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3955:13 #36 0x559a018b4fca in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8132:14 #37 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #38 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #39 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #40 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #41 0x559a018a6d36 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #42 0x559a018a6d36 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280:12 #43 0x559a0190523a in do_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3973:9 #44 0x559a018b4fca in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8132:14 #45 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #46 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #47 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #48 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #49 0x559a018f74c1 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #50 0x559a018f74c1 in R_forceAndCall /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2456:8 #51 0x559a016afcf1 in do_lapply /data/gannet/ripley/R/svn/R-devel/src/main/apply.c:75:8 #52 0x559a019ad179 in do_internal /data/gannet/ripley/R/svn/R-devel/src/main/names.c:1423:11 #53 0x559a018ba7e3 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8152:15 #54 0x559a018a7dd4 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7515:16 #55 0x559a018a6311 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167:8 #56 0x559a018ee7dc in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2389:39 #57 0x559a018ed9a1 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2302:16 #58 0x559a018a6d36 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2324:16 #59 0x559a018a6d36 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280:12 #60 0x559a019768a1 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:264:23 #61 0x559a019790d0 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:317:11 #62 0x559a019790d0 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1235:5 #63 0x559a01979162 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1242:5 #64 0x559a0167cd3c in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29:5 #65 0x7f62b6311574 in __libc_start_call_main (/lib64/libc.so.6+0x3574) (BuildId: 92b5376d35bb29c098175948cf3e7cbcae3aeae1) #66 0x7f62b6311627 in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x3627) (BuildId: 92b5376d35bb29c098175948cf3e7cbcae3aeae1) #67 0x559a015947d4 in _start (/data/gannet/ripley/R/clang-ASAN/bin/exec/R+0x17d4) Address 0x7b62b1f40280 is located in stack of thread T0 at offset 640 in frame #0 0x7b62a5714b8f in write_sheet_file_(std::__1::basic_string, std::__1::allocator> const&, cpp11::data_frame const&, std::__1::basic_string, std::__1::allocator> const&, bool, bool, bool, bool, std::__1::basic_string, std::__1::allocator> const&, std::__1::basic_string, std::__1::allocator> const&) /data/gannet/ripley/R/packages/tests-clang-ASAN/readODS/src/write_sheet_file_.cpp:156 This frame has 7 object(s): [32, 64) 'ref.tmp' [96, 104) 'ref.tmp' [128, 136) 'ref.tmp' [160, 164) 'ref.tmp' [176, 504) 'xml_file' (line 158) [576, 600) 'ref.tmp' (line 160) [640, 8832) 'buffer' (line 164) <== Memory access at offset 640 is inside this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork (longjmp and C++ exceptions *are* supported) SUMMARY: AddressSanitizer: stack-use-after-scope (/usr/local/clang22/lib/x86_64-unknown-linux-gnu/libc++.so.1+0xb4d36) in std::__1::basic_filebuf>::overflow(int) Shadow bytes around the buggy address: 0x7b62b1f40000: f1 f1 f1 f1 f8 f8 f8 f8 f2 f2 f2 f2 f8 f2 f2 f2 0x7b62b1f40080: f8 f2 f2 f2 f8 f2 00 00 00 00 00 00 00 00 00 00 0x7b62b1f40100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7b62b1f40180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 0x7b62b1f40200: f2 f2 f2 f2 f2 f2 f2 f2 f8 f8 f8 f2 f2 f2 f2 f2 =>0x7b62b1f40280:[f8]f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 0x7b62b1f40300: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 0x7b62b1f40380: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 0x7b62b1f40400: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 0x7b62b1f40480: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 0x7b62b1f40500: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==2866879==ABORTING