[R] Hanging -- please help decipher event report

Duncan Murdoch
Fri, 03 Feb 2012 20:20:53 -0000

On 03/02/2012 11:53 AM, jeremyd wrote:
> I'm running some code in R64 on a Mac OS 10.6.8 that calls a C program
> through the dyn.load() function. The code hangs after several days of
> computation, and I've having trouble locating the problem. Can anyone
> decipher this info from the error report, and tell me if this is a problem
> in R64, or in the C code? Thanks very much in advance.
>
> A few hints: "pa" is the name of the C function in R, and
"polio_3A.so" is
> the compiled code. I can post the R code or the C code if anyone needs to
> see it, but my first priority is to figure out what this stack trace is
> telling me.
>
> Date/Time:       2012-02-03 10:35:57 -0500
> OS Version:      10.6.8 (Build 10K549)
> Architecture:    x86_64
> Report Version:  7
>
> Command:         R
> Path:            /Applications/R64.app/Contents/MacOS/R
> Version:         R 2.11.1 GUI 1.34 Leopard build 64-bit (5589)
> Parent:          launchd [95]
>
> PID:             37306
> Event:           hang
> Duration:        5.96s (sampling started after 2 seconds)
> Steps:           19 (100ms sampling interval)
>
> Pageins:         88
> Pageouts:        0
>
>
> Process:         R [37306]
> Path:            /Applications/R64.app/Contents/MacOS/R
> UID:             501
>
>    Thread eef8d9     DispatchQueue 1
>    User stack:
>      19 start + 52 (in R) [0x100001a74]
>        19 main + 844 (in R) [0x100001dec]
>          19 -[REngine runREPL] + 102 (in R) [0x100010f86]
>            19 run_REngineRmainloop + 192 (in R) [0x1000194a0]
>              19 R_ReplDLLdo1 + 462 (in libR.dylib) [0x10016ce4e]
>                19 Rf_eval + 1196 (in libR.dylib) [0x10013ca1c]
>                  19 do_for + 678 (in libR.dylib) [0x100140f66]
>                    19 Rf_eval + 1196 (in libR.dylib) [0x10013ca1c]
>                      19 do_begin + 308 (in libR.dylib) [0x100141724]
>                        19 Rf_eval + 1196 (in libR.dylib) [0x10013ca1c]
>                          19 Rf_eval + 1196 (in libR.dylib) [0x10013ca1c]
>                            19 do_begin + 308 (in libR.dylib) [0x100141724]
>                              19 Rf_eval + 1196 (in libR.dylib)
[0x10013ca1c]
>                                19 do_while + 614 (in libR.dylib)
> [0x10013dca6]
>                                  19 Rf_eval + 1196 (in libR.dylib)
> [0x10013ca1c]
>                                    19 do_begin + 308 (in libR.dylib)
> [0x100141724]
>                                      19 Rf_eval + 1196 (in libR.dylib)
> [0x10013ca1c]
>                                        19 do_set + 709 (in libR.dylib)
> [0x10013ea55]
>                                          19 Rf_eval + 962 (in libR.dylib)
> [0x10013c932]
>                                            19 Rf_applyClosure + 724 (in
> libR.dylib) [0x10013f364]
>                                              19 Rf_eval + 1196 (in
> libR.dylib) [0x10013ca1c]
>                                                19 do_begin + 308 (in
> libR.dylib) [0x100141724]
>                                                  19 Rf_eval + 1196 (in
> libR.dylib) [0x10013ca1c]
>                                                    19 do_set + 709 (in
> libR.dylib) [0x10013ea55]
>                                                      19 Rf_eval + 1676 (in
> libR.dylib) [0x10013cbfc]

Down to here is normal stuff R will show when evaluating a complex
expression.
>                                                        19 do_dotCode + 6074
> (in libR.dylib) [0x100111e9a]

This is where we leave R and enter your code.
>                                                          6 pa + 2960
> (polio_3A.c:258 in polio_3A.so) [0x101707b70]

Presumably polio_3A.c line 258 is meaningful to you.  It's where your
code called some other function in your code,
and there were some nested calls...
>                                                          5 pa + 2989
> (polio_3A.c:256 in polio_3A.so) [0x101707b8d]
>                                                          2 pa + 2964
> (polio_3A.c:258 in polio_3A.so) [0x101707b74]
>                                                          2 pa + 2969
> (polio_3A.c:259 in polio_3A.so) [0x101707b79]
>                                                          1 pa + 2966
> (polio_3A.c:258 in polio_3A.so) [0x101707b76]
>                                                          1 pa + 1035
> (polio_3A.c:144 in polio_3A.so) [0x1017073eb]

... down to here, on line 144 of  the same file, where you decided to
let R process some events.

>                                                            1
R_ProcessEvents
> + 30 (in libR.dylib) [0x10021dc1e]
>                                                              1
> Re_ProcessEvents + 29 (in R) [0x10000f46d]
>                                                                1
gettimeofday
> + 43 (in libSystem.B.dylib) [0x7fff82a0814f]
>                                                                  1
> __gettimeofday + 80 (in commpage [libSystem.B.dylib]) [0x7fffffe00330]
>                                                          1 pa + 1262
> (polio_3A.c:165 in polio_3A.so) [0x1017074ce]
>                                                          1 pa + 2975
> (polio_3A.c:260 in polio_3A.so) [0x101707b7f]
>

and it looks as though one of those events called something in your code
near line 165 then line 260.  Are you setting up signal handlers?

Duncan Murdoch

> --
> View this message in context:
http://r.789695.n4.nabble.com/Hanging-please-help-decipher-event-report-tp4355128p4355128.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.