[R] Mysterious seg fault.
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Mon Aug 13 02:03:58 CEST 2018
On 12/08/2018 6:32 PM, Rolf Turner wrote:
>
> On 12/08/18 17:42, Eric Berger wrote:
>
>> Hi Rolf,
>> When faced with such a situation I take the following approach which
>> often helps.
>> Use the same setup that caused the seg fault (you need a reproducible
>> problem.)
>> Start your R session using valgrind. e.g. in linux I do:
>>
>> $ valgrind R
>>
>> Assuming that a seg fault still occurs then valgrind should provide info
>> as to where.
>>
>> HTH
>
> Well, it probably *would* help if I weren't such a thicko.
>
> The story so far: I have managed to install valgrind (downloaded a
> tarball and installed from source). Seemed to go OK, but:
>
> * when I type "valgrind" I get "command not found"
> * however valgrind is in /usr/local/bin (I did "configure" with
> prefix="/usr/local" so this is as it should be)
> * /usr/local/bin/valgrind is executable
> * /usr/local/bin is in my path
>
> So how in god's name can the command not be found? And why do these
> things always happen to *me*???
>
> I can work around this problem by giving the full path name, however.
>
> So I did:
>
> /usr/local/bin/valgrind R
I believe on your system R is a script, so you can't run valgrind this
way. It's just debugging bash, not R. You need to use
R -d valgrind
(though with your weird path problems, you might need a fully qualified
/usr/local/bin/valgrind there).
You run gdb the same way:
R -d gdb
and then give the command "r" to gdb to start R. It will give a report
when you get the segfault. I don't know which report will be more
informative.
Duncan Murdoch
>
> and got a lot of (mysterious to me) output:
>
>> /usr/local/bin/valgrind R
>> ==18051== Memcheck, a memory error detector
>> ==18051== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
>> ==18051== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
>> ==18051== Command: /usr/local/bin/R
>> ==18051==
>> ==18051== Invalid free() / delete / delete[] / realloc()
>> ==18051== at 0x4C2ECF0: free (vg_replace_malloc.c:530)
>> ==18051== by 0x45E280: ??? (in /bin/bash)
>> ==18051== by 0x45E42F: run_unwind_frame (in /bin/bash)
>> ==18051== by 0x47B714: parse_and_execute (in /bin/bash)
>> ==18051== by 0x47B102: ??? (in /bin/bash)
>> ==18051== by 0x47B35C: source_file (in /bin/bash)
>> ==18051== by 0x4849C7: source_builtin (in /bin/bash)
>> ==18051== by 0x43378D: ??? (in /bin/bash)
>> ==18051== by 0x43592C: ??? (in /bin/bash)
>> ==18051== by 0x4369C7: execute_command_internal (in /bin/bash)
>> ==18051== by 0x43851D: execute_command (in /bin/bash)
>> ==18051== by 0x42139D: reader_loop (in /bin/bash)
>> ==18051== Address 0x4241008 is in the brk data segment 0x4228000-0x4246fff
>> ==18051==
>> ==18051== Invalid free() / delete / delete[] / realloc()
>> ==18051== at 0x4C2ECF0: free (vg_replace_malloc.c:530)
>> ==18051== by 0x45E280: ??? (in /bin/bash)
>> ==18051== by 0x45E42F: run_unwind_frame (in /bin/bash)
>> ==18051== by 0x4849D3: source_builtin (in /bin/bash)
>> ==18051== by 0x43378D: ??? (in /bin/bash)
>> ==18051== by 0x43592C: ??? (in /bin/bash)
>> ==18051== by 0x4369C7: execute_command_internal (in /bin/bash)
>> ==18051== by 0x43851D: execute_command (in /bin/bash)
>> ==18051== by 0x42139D: reader_loop (in /bin/bash)
>> ==18051== by 0x41FDB0: main (in /bin/bash)
>> ==18051== Address 0x4240708 is in the brk data segment 0x4228000-0x4246fff
>> ==18051==
>>
>
> Not at all clear to me what to make of this. Does it indicate problems
> or memory leaks in my installation of R? Anyhow, things then proceed in
> an expected manner:
>
>> R version 3.5.1 (2018-07-02) -- "Feather Spray"
>> Copyright (C) 2018 The R Foundation for Statistical Computing
>> Platform: x86_64-pc-linux-gnu (64-bit)
>>
>> 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.
>>
>> Natural language support but running in an English locale
>>
>> 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.
>>
>> Loading required package: misc
>> [Previously saved workspace restored]
>
> I then loaded the problematic package and issued the problematic command:
>
>>> library(hmm.discnp)
>> hmm.discnp 2.0-9
>>
>> This package has changed SUBSTANTIALLY from its
>> previous release. Read the documentation
>> carefully. Note in particular that the meaning of
>> the argument "nsim" of the function rhmm() has
>> changed, and a new argument "ylengths" now plays
>> essentially the role previously played by
>> "nsim".
>>
>>> xxx <- get.hgl(p3,2,yyy)
>>
>> *** caught segfault ***
>> address (nil), cause 'unknown'
>> Segmentation fault (core dumped)
>
> Nothing informative. Is there something else I should be doing?
>
> Sorry for being a nuisance, but I am at a loss.
>
> cheers,
>
> Rolf
>
More information about the R-help
mailing list