Re: [Rd] Memory crash

From: Göran Broström <gb_at_stat.umu.se>
Date: Fri, 03 Oct 2008 12:52:44 +0200

Prof Brian Ripley wrote:

> Very likely your C code is writing out of bounds and has corrupted R's 
> memory heap.  Use the tools discussed in 'Writing R Extensions' (such as 
> Valgrind) to help you track this down.

Brian, thanks a lot; I installed valgrind, and the error was promptly spotted (your qualified guess was correct!). A new version of glmmML will soon be available.

Göran

> 
> On Fri, 3 Oct 2008, Göran Broström wrote:
> 

>> Hello,
>>
>> I get a segfault when running glmmboot in my own package glmmML. Has
>> happened many time before, but this time I get no hint of where in my
>> C functions the error might be. I give the output below. Can this be
>> an R bug? I suspect it has to do with repeated calls to 'vmmin' like
>> this:
> 
> Based on past experience of users blaming their tools, the probability
> that R is completely innocent here is close to one.
> 

>> for (...){
>> vmax = vmaxget();
>> vmmin(*p, b, &Fmin,
>> bfun, bfun_gr, *maxit, *trace,
>> mask, abstol, reltol, nREPORT,
>> ext, &fncount, &grcount, &fail);
>> vmaxset(vmax);
>> ...
>> }
>>
>> but I am only guessing. Any suggestions?
>>
>> Ubuntu 8.04, R-2.7.2.
>>
>> Göran
>> -------------------------------------------------------------------
>> > glmmboot(y ~ x, cluster = cluster, data = res$dat, family =
>> binomial, boot = 400)
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x000000000041a817 in R_gc_internal (size_needed=3000) at memory.c:1317
>> 1317 PROCESS_NODES();
>> (gdb) where
>> #0 0x000000000041a817 in R_gc_internal (size_needed=3000) at
>> memory.c:1317
>> #1 0x000000000041c31c in Rf_allocVector (type=14, length=3000)
>> at memory.c:1968
>> #2 0x000000000052a647 in duplicate1 (s=0x20cb4a0) at duplicate.c:214
>> #3 0x00000000004e1775 in do_makelist (call=<value optimized out>,
>> op=<value optimized out>, args=0x1e18238, rho=<value optimized out>)
>> at builtin.c:645
>> #4 0x000000000054697a in Rf_eval (e=0x10685a0, rho=0x1c557e0) at
>> eval.c:492
>> #5 0x000000000054a7ef in do_set (call=0x10684f8, op=0x936188,
>> args=0x1068530,
>> rho=0x1c557e0) at eval.c:1424
>> #6 0x0000000000546896 in Rf_eval (e=0x10684f8, rho=0x1c557e0) at
>> eval.c:463
>> #7 0x00000000005474c0 in do_begin (call=0x1089ab0, op=0x936ef8,
>> args=0x10684c0, rho=0x1c557e0) at eval.c:1176
>> #8 0x0000000000546896 in Rf_eval (e=0x1089ab0, rho=0x1c557e0) at
>> eval.c:463
>> #9 0x0000000000546896 in Rf_eval (e=0x1089960, rho=0x1c557e0) at
>> eval.c:463
>> #10 0x00000000005474c0 in do_begin (call=0x10fa1c0, op=0x936ef8,
>> args=0x10898f0, rho=0x1c557e0) at eval.c:1176
>> #11 0x0000000000546896 in Rf_eval (e=0x10fa1c0, rho=0x1c557e0) at
>> eval.c:463
>> #12 0x0000000000548a4c in Rf_applyClosure (call=0x13714e8, op=0x10fa4e8,
>> arglist=0x1c551c0, rho=0x1e06538, suppliedenv=0x959c50) at eval.c:669
>> #13 0x00000000005467b8 in Rf_eval (e=0x13714e8, rho=0x1e06538) at
>> eval.c:507
>> #14 0x000000000054a7ef in do_set (call=0x1371440, op=0x936188,
>> args=0x1371478,
>> rho=0x1e06538) at eval.c:1424
>> #15 0x0000000000546896 in Rf_eval (e=0x1371440, rho=0x1e06538) at
>> eval.c:463
>> #16 0x00000000005474c0 in do_begin (call=0x137e938, op=0x936ef8,
>> args=0x1371408, rho=0x1e06538) at eval.c:1176
>> #17 0x0000000000546896 in Rf_eval (e=0x137e938, rho=0x1e06538) at
>> eval.c:463
>> #18 0x0000000000548a4c in Rf_applyClosure (call=0x1e05ff8, op=0x137ef08,
>> arglist=0x1e060a0, rho=0x959c18, suppliedenv=0x959c50) at eval.c:669
>> #19 0x00000000005467b8 in Rf_eval (e=0x1e05ff8, rho=0x959c18) at
>> eval.c:507
>> #20 0x0000000000416b95 in Rf_ReplIteration (rho=0x959c18, savestack=0,
>> browselevel=0, state=0x7fffca277fa0) at main.c:257
>> #21 0x0000000000416e60 in R_ReplConsole (rho=0x959c18, savestack=0,
>> browselevel=0) at main.c:306
>> #22 0x0000000000417140 in run_Rmainloop () at main.c:967
>> #23 0x0000000000414c08 in main (ac=<value optimized out>,
>> av=<value optimized out>) at Rmain.c:35
>> #24 0x00007f10c116a1c4 in __libc_start_main () from /lib/libc.so.6
>> #25 0x0000000000414b29 in _start ()
>>
>> --
>> Göran Broström phone: 46 90 786 5223; 46 705 197 507
>> Department of Statistics fax: 46 90 786 6614
>> Umeå University email: gb_at_stat.umu.se
>> SE-90187 Umeå, Sweden
>> http://www.stat.umu.se/personal/goran.brostrom
>>
>> ______________________________________________
>> R-devel_at_r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
-- 
Göran Broström               phone: 46 90 786 5223; 46 705 197 507
Department of Statistics     fax: 46 90 786 6614
Umeå University              email: gb_at_stat.umu.se
SE-90187 Umeå, Sweden        http://www.stat.umu.se/personal/goran.brostrom

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Fri 03 Oct 2008 - 10:55:27 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 03 Oct 2008 - 12:30:16 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive