Is it safe to call Rprintf and REprintf from a background thread? I'm working on a package that makes calls to fprintf(stderr, ...) on a background thread when errors happen, but when I run R CMD check, it says: Compiled code should not call entry points which might terminate R nor write to stdout/stderr instead of to the console, nor the system RNG. Is it safe to replace these calls with REprintf()? -Winston
luke-tierney at uiowa.edu
2017-Nov-21 18:42 UTC
[Rd] Are Rprintf and REprintf thread-safe?
On Tue, 21 Nov 2017, Winston Chang wrote:> Is it safe to call Rprintf and REprintf from a background thread? I'm > working on a package that makes calls to fprintf(stderr, ...) on a > background thread when errors happen, but when I run R CMD check, it > says: > > Compiled code should not call entry points which might terminate R nor > write to stdout/stderr instead of to the console, nor the system RNG. > > Is it safe to replace these calls with REprintf()?Only if you enjoy race conditions or segfaults. Rprintf and REprintf are not thread-safe. Best, luke> > -Winston > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Luke Tierney Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tierney at uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
Thanks - I'll find another way to send messages to the main thread for printing. -Winston On Tue, Nov 21, 2017 at 12:42 PM, <luke-tierney at uiowa.edu> wrote:> On Tue, 21 Nov 2017, Winston Chang wrote: > >> Is it safe to call Rprintf and REprintf from a background thread? I'm >> working on a package that makes calls to fprintf(stderr, ...) on a >> background thread when errors happen, but when I run R CMD check, it >> says: >> >> Compiled code should not call entry points which might terminate R nor >> write to stdout/stderr instead of to the console, nor the system RNG. >> >> Is it safe to replace these calls with REprintf()? > > > Only if you enjoy race conditions or segfaults. > > Rprintf and REprintf are not thread-safe. > > Best, > > luke > > >> >> -Winston >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > -- > Luke Tierney > Ralph E. Wareham Professor of Mathematical Sciences > University of Iowa Phone: 319-335-3386 > Department of Statistics and Fax: 319-335-3017 > Actuarial Science > 241 Schaeffer Hall email: luke-tierney at uiowa.edu > Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
Possibly Parallel Threads
- Are Rprintf and REprintf thread-safe?
- [External] REprintf could be caught by tryCatch(message)
- REprintf could be caught by tryCatch(message)
- [External] REprintf could be caught by tryCatch(message)
- RFC: API to allow identification of warnings and errors in the output stream