Skip to content

Instantly share code, notes, and snippets.

@fmichonneau
Created November 30, 2014 23:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fmichonneau/cd987db756a27c6bda67 to your computer and use it in GitHub Desktop.
Save fmichonneau/cd987db756a27c6bda67 to your computer and use it in GitHub Desktop.
UBSAN + valgrind -- rncl output
==15073== Memcheck, a memory error detector
==15073== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==15073== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==15073== Command: /usr/local/lib64/R/bin/exec/R -f test-all.R --restore --save --no-readline --vanilla
==15073==
R Under development (unstable) (2014-11-29 r67076) -- "Unsuffered Consequences"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-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.
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)
> test_check("rncl")
Loading required package: rncl
.readNCL can deal with simple NEXUS files (tree only) : ==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x16C91C15: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17244058: NxsReader::CoreExecutionTasks(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17240335: NxsReader::Execute(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171D7AEE: PublicNexusReader::Execute(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x172311EE: NxsReader::ReadFilestream(std::istream&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17230C1F: NxsReader::ReadFilepath(char const*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1717B481: MultiFormatReader::ReadFilepath(char const*, MultiFormatReader::DataFormatType) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x16C6A3AD: RNCL(SEXPREC*, SEXPREC*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
./ncl/nxsblock.h:219:22: runtime error: load of value ==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x43260A: __sanitizer::AppendNumber(char**, char const*, unsigned long long, unsigned char, unsigned char, bool, bool) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x431FC7: __sanitizer::VSNPrintf(char*, int, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x432299: __sanitizer::SharedPrintfCode(bool, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43212B: __sanitizer::Printf(char const*, ...) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109E4DB: renderText(char const*, __ubsan::Diag::Arg const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109DF6A: __ubsan::Diag::~Diag() (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x10A05B0: __ubsan_handle_load_invalid_value (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x16C91C30: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x432684: __sanitizer::AppendNumber(char**, char const*, unsigned long long, unsigned char, unsigned char, bool, bool) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x431FC7: __sanitizer::VSNPrintf(char*, int, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x432299: __sanitizer::SharedPrintfCode(bool, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43212B: __sanitizer::Printf(char const*, ...) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109E4DB: renderText(char const*, __ubsan::Diag::Arg const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109DF6A: __ubsan::Diag::~Diag() (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x10A05B0: __ubsan_handle_load_invalid_value (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x16C91C30: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x432700: __sanitizer::AppendNumber(char**, char const*, unsigned long long, unsigned char, unsigned char, bool, bool) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x431FC7: __sanitizer::VSNPrintf(char*, int, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x432299: __sanitizer::SharedPrintfCode(bool, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43212B: __sanitizer::Printf(char const*, ...) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109E4DB: renderText(char const*, __ubsan::Diag::Arg const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109DF6A: __ubsan::Diag::~Diag() (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x10A05B0: __ubsan_handle_load_invalid_value (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x16C91C30: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x42E539: __sanitizer::internal_strlen(char const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43100C: __sanitizer::RawWrite(char const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x4322CD: __sanitizer::SharedPrintfCode(bool, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43212B: __sanitizer::Printf(char const*, ...) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109E4DB: renderText(char const*, __ubsan::Diag::Arg const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109DF6A: __ubsan::Diag::~Diag() (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x10A05B0: __ubsan_handle_load_invalid_value (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x16C91C30: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
==15073== Syscall param write(buf) points to uninitialised byte(s)
==15073== at 0x42F007: __sanitizer::internal_write(int, void const*, unsigned long) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x431029: __sanitizer::RawWrite(char const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x4322CD: __sanitizer::SharedPrintfCode(bool, char const*, __va_list_tag*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x43212B: __sanitizer::Printf(char const*, ...) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109E4DB: renderText(char const*, __ubsan::Diag::Arg const*) (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x109DF6A: __ubsan::Diag::~Diag() (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x10A05B0: __ubsan_handle_load_invalid_value (in /usr/local/lib64/R/bin/exec/R)
==15073== by 0x16C91C30: NxsBlock::CopyBaseBlockContents(NxsBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414274: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== Address 0xffef02cd0 is on thread 1's stack
==15073==
140, which is not a valid value for type 'bool'
==15073== Conditional jump or move depends on uninitialised value(s)
==15073== at 0x173AD73A: NxsTreesBlock::CopyTreesBlockContents(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17414566: NxsTreesBlock::operator=(NxsTreesBlock const&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x173AC81F: NxsTreesBlock::Clone() const (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171B6349: NxsCloneBlockFactory::GetBlockReaderForID(std::string const&, NxsReader*, NxsToken*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1723FAAF: NxsReader::CreateBlockFromFactories(std::string const&, NxsToken&, NxsBlockFactory**) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17244058: NxsReader::CoreExecutionTasks(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17240335: NxsReader::Execute(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x171D7AEE: PublicNexusReader::Execute(NxsToken&, bool) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x172311EE: NxsReader::ReadFilestream(std::istream&) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x17230C1F: NxsReader::ReadFilepath(char const*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x1717B481: MultiFormatReader::ReadFilepath(char const*, MultiFormatReader::DataFormatType) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073== by 0x16C6A3AD: RNCL(SEXPREC*, SEXPREC*) (in /home/francois/rncl.Rcheck/rncl/libs/rncl.so)
==15073==
./ncl/nxstreesblock.h:795:34: runtime error: load of value 101, which is not a valid value for type 'bool'
storing implied block: TAXA
storing read block: TREES
......storing implied block: TAXA
storing read block: TREES
....storing implied block: TAXA
storing read block: TREES
..
test with Newick files : storing implied block: TAXA
storing read block: TREES
...storing implied block: TAXA
storing read block: TREES
..storing implied block: TAXA
storing read block: TREES
..storing implied block: TAXA
storing read block: TREES
..storing implied block: TAXA
storing read block: TREES
...storing implied block: TAXA
storing read block: TREES
...
>
> proc.time()
user system elapsed
129.940 0.520 129.464
==15073==
==15073== HEAP SUMMARY:
==15073== in use at exit: 42,069,275 bytes in 21,119 blocks
==15073== total heap usage: 72,143 allocs, 51,024 frees, 96,259,571 bytes allocated
==15073==
==15073== LEAK SUMMARY:
==15073== definitely lost: 1,120 bytes in 11 blocks
==15073== indirectly lost: 63,648 bytes in 1,318 blocks
==15073== possibly lost: 0 bytes in 0 blocks
==15073== still reachable: 42,004,507 bytes in 19,790 blocks
==15073== suppressed: 0 bytes in 0 blocks
==15073== Rerun with --leak-check=full to see details of leaked memory
==15073==
==15073== For counts of detected and suppressed errors, rerun with: -v
==15073== Use --track-origins=yes to see where uninitialised values come from
==15073== ERROR SUMMARY: 40 errors from 7 contexts (suppressed: 2 from 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment