refresh-bio / KMC

Fast and frugal disk based k-mer counter
256 stars 73 forks source link

memory errors: Conditional jump or move depends on uninitialised value(s) #96

Closed notestaff closed 5 years ago

notestaff commented 6 years ago

@marekkokot the errors below are illustrated on an empty fasta as the smallest reproducible case, but they also happen on non-empty files.

(master_env_v17) [12:18] /data/sw/KMC $ rm -f empty.fasta && touch empty.fasta (master_env_v17) [12:18] /data/sw/KMC $ valgrind --track-origins=yes --leak-check=full bin/kmc -v -t1 -fm empty.fasta empty_db /tmp ==6853== Memcheck, a memory error detector ==6853== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==6853== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==6853== Command: bin/kmc -v -t1 -fm empty.fasta empty_db /tmp ==6853== ==6853== Warning: set address range perms: large range [0x60ba040, 0x360ba080) (undefined) ==6853== Warning: set address range perms: large range [0x59e43040, 0x292ab3080) (undefined) ==6853== Warning: set address range perms: large range [0x292ab4040, 0x2f50d4080) (undefined) ==6853== Thread 3: ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x632592: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:397) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==6853== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==6853== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==6853== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==6853== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x63264C: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==6853== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==6853== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==6853== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==6853== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x632665: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==6853== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==6853== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==6853== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==6853== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Thread 2: ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x419900: CSplitter::GetSeq(char, unsigned int&) (splitter.h:249) ==6853== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==6853== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==6853== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==6853== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==6853== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==6853== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x419A18: CSplitter::GetSeq(char, unsigned int&) (splitter.h:257) ==6853== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==6853== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==6853== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==6853== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==6853== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==6853== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Use of uninitialised value of size 8 ==6853== at 0x419A59: CSplitter::GetSeq(char, unsigned int&) (splitter.h:259) ==6853== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==6853== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==6853== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==6853== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==6853== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==6853== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== *

** Used parameters: ** No. of input files : 1 Output file name : empty_db No. of working directories : 1 Input format : MULTI LINE FASTA

k-mer length : 25 Max. k-mer length : 256 Signature length : 9 Min. count threshold : 2 Max. count threshold : 1000000000 Max. counter value : 255 Type of counters : direct Both strands : true RAM only mode : false

Stage 1 configuration:

No. of bins : 512 Bin part size : 65536 Input buffer size : 16777216

No. of readers : 1 No. of splitters : 1

Max. mem. size : 12000MB Max. mem. per storer : 6202MB Max. mem. for single package : 24MB

Max. mem. for PMM (bin parts): 9542MB Max. mem. for PMM (FASTQ) : 1650MB Max. mem. for PMM (reads) : 1MB Max. mem. for PMM (b. reader): 805MB

Stage 1: 100%==6853== Thread 4: ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x632592: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:397) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==6853== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==6853== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==6853== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==6853== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x63264C: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==6853== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==6853== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==6853== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==6853== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x632665: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==6853== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==6853== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==6853== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==6853== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==6853== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==6853== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Thread 2: ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x419900: CSplitter::GetSeq(char, unsigned int&) (splitter.h:249) ==6853== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==6853== by 0x471E36: CSplitter::ProcessReads(unsigned char, unsigned long long) (splitter.h:640) ==6853== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==6853== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==6853== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==6853== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==6853== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x419A18: CSplitter::GetSeq(char, unsigned int&) (splitter.h:257) ==6853== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==6853== by 0x471E36: CSplitter::ProcessReads(unsigned char, unsigned long long) (splitter.h:640) ==6853== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==6853== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==6853== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==6853== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==6853== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Use of uninitialised value of size 8 ==6853== at 0x419A59: CSplitter::GetSeq(char, unsigned int&) (splitter.h:259) ==6853== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==6853== by 0x471E36: CSplitter::ProcessReads(unsigned char*, unsigned long long) (splitter.h:640) ==6853== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==6853== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==6853== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==6853== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==6853== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==6853== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==6853== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==6853== by 0x56D8DE4: start_thread (pthread_create.c:308) ==6853== by 0x59EBBAC: clone (clone.S:113) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==6853== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==6853== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==6853== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==6853== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== Warning: set address range perms: large range [0x292ab4028, 0x2f50d4098) (noaccess) ==6853== Warning: set address range perms: large range [0x60ba028, 0x360ba098) (noaccess)

==6853== Warning: set address range perms: large range [0x59e43028, 0x292ab3098) (noaccess)

Stage 2 configuration: No. of threads : 1

Max. mem. for 2nd stage : 16MB

Stage 2: 100% ==6853== Thread 1: ==6853== Conditional jump or move depends on uninitialised value(s) ==6853== at 0x6383DA: CStopWatch::getElapsedTime() (timer.cpp:118) ==6853== by 0x50B17F: CKMC<CKmer<1u>, 1u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmc.h:1441) ==6853== by 0x4DC055: CApplication<CKmer, 1u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:121) ==6853== by 0x4B16A2: CApplication<CKmer, 2u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x48E5F0: CApplication<CKmer, 3u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x46C1DE: CApplication<CKmer, 4u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x44EFF2: CApplication<CKmer, 5u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x435CA8: CApplication<CKmer, 6u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x425EF0: CApplication<CKmer, 7u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x41B304: CApplication<CKmer, 8u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==6853== by 0x4075E8: main (kmer_counter.cpp:522) ==6853== Uninitialised value was created by a heap allocation ==6853== at 0x4C291EA: operator new(unsigned long) (vg_replace_malloc.c:334) ==6853== by 0x4B29FE: CApplication<CKmer, 1u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:104) ==6853== by 0x48FF0F: CApplication<CKmer, 2u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x46E7CD: CApplication<CKmer, 3u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x45231B: CApplication<CKmer, 4u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x43A6C3: CApplication<CKmer, 5u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x42C58B: CApplication<CKmer, 6u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x4206EF: CApplication<CKmer, 7u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x41B129: CApplication<CKmer, 8u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==6853== by 0x407540: main (kmer_counter.cpp:514) ==6853== 1st stage: 573.172s 2nd stage: 40.8551s Total : 614.027s Tmp size : 0MB

Stats: No. of k-mers below min. threshold : 0 No. of k-mers above max. threshold : 0 No. of unique k-mers : 0 No. of unique counted k-mers : 0 Total no. of k-mers : 0 Total no. of sequences : 0 Total no. of super-k-mers : 0 ==6853== ==6853== HEAP SUMMARY: ==6853== in use at exit: 47,628 bytes in 1,024 blocks ==6853== total heap usage: 332,029 allocs, 331,005 frees, 12,082,269,291 bytes allocated ==6853== ==6853== 47,628 (24,576 direct, 23,052 indirect) bytes in 512 blocks are definitely lost in loss record 3 of 3 ==6853== at 0x4C291EA: operator new(unsigned long) (vg_replace_malloc.c:334) ==6853== by 0x63BEED: CKmerBinStorer::OpenFiles() (kb_storer.cpp:188) ==6853== by 0x63C32A: CWKmerBinStorer::CWKmerBinStorer(CKMCParams&, CKMCQueues&) (kb_storer.cpp:255) ==6853== by 0x50806F: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:973) ==6853== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==6853== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==6853== by 0x41B1EE: CApplication<CKmer, 8u, false>::Process() (kmer_counter.cpp:87) ==6853== ==6853== LEAK SUMMARY: ==6853== definitely lost: 24,576 bytes in 512 blocks ==6853== indirectly lost: 23,052 bytes in 512 blocks ==6853== possibly lost: 0 bytes in 0 blocks ==6853== still reachable: 0 bytes in 0 blocks ==6853== suppressed: 0 bytes in 0 blocks ==6853== ==6853== For counts of detected and suppressed errors, rerun with: -v ==6853== ERROR SUMMARY: 244 errors from 14 contexts (suppressed: 0 from 0)

notestaff commented 6 years ago

@marekkokot also, it seems multiple threads are used despite -t1?

notestaff commented 6 years ago

@marekkokot here are the same issues on a (minimal) non-empty fasta. also, why does it say "Total no. of sequences : 2", when there is only one sequence? thanks for looking into these things!

(master_env_v17) [12:58] /data/sw/KMC $ echo '>rec' > almost_empty.fasta (master_env_v17) [12:59] /data/sw/KMC $ echo A >> almost_empty.fasta (master_env_v17) [12:59] /data/sw/KMC $ valgrind --track-origins=yes --leak-check=full bin/kmc -v -t1 -fm almost_empty.fasta almost_empty_db /tmp ==8281== Memcheck, a memory error detector ==8281== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==8281== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==8281== Command: bin/kmc -v -t1 -fm almost_empty.fasta almost_empty_db /tmp ==8281== ==8281== Warning: set address range perms: large range [0x60ba040, 0x360ba080) (undefined) ==8281== Warning: set address range perms: large range [0x59e43040, 0x292ab3080) (undefined) ==8281== Warning: set address range perms: large range [0x292ab4040, 0x2f50d4080) (undefined) ==8281== Thread 3: ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x632592: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:397) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==8281== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==8281== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==8281== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==8281== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x63264C: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==8281== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==8281== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==8281== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==8281== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x632665: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633CC2: CWStatsFastqReader::operator()() (fastq_reader.cpp:902) ==8281== by 0x43F193: void std::invoke_impl<void, CWStatsFastqReader&>(std::__invoke_other, CWStatsFastqReader&) (invoke.h:60) ==8281== by 0x42E81A: std::invoke_result<CWStatsFastqReader&>::type std::invoke<CWStatsFastqReader&>(CWStatsFastqReader&) (invoke.h:95) ==8281== by 0x627CAB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625988: std::thread::_Invoker<std::tuple<CWStatsFastqReader&> >::operator()() (thread:243) ==8281== by 0x623A7F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Thread 2: ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x419900: CSplitter::GetSeq(char, unsigned int&) (splitter.h:249) ==8281== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==8281== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==8281== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==8281== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==8281== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==8281== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x419A18: CSplitter::GetSeq(char, unsigned int&) (splitter.h:257) ==8281== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==8281== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==8281== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==8281== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==8281== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==8281== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Use of uninitialised value of size 8 ==8281== at 0x419A59: CSplitter::GetSeq(char, unsigned int&) (splitter.h:259) ==8281== by 0x4716EB: CSplitter::CalcStats(unsigned char, unsigned long long, unsigned int) (splitter.h:474) ==8281== by 0x456A22: CWStatsSplitter::operator()() (splitter.h:1325) ==8281== by 0x43ED43: void std::invoke_impl<void, CWStatsSplitter&>(std::__invoke_other, CWStatsSplitter&) (invoke.h:60) ==8281== by 0x42E660: std::invoke_result<CWStatsSplitter&>::type std::invoke<CWStatsSplitter&>(CWStatsSplitter&) (invoke.h:95) ==8281== by 0x627CD7: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6259AC: std::thread::_Invoker<std::tuple<CWStatsSplitter&> >::operator()() (thread:243) ==8281== by 0x623A9F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWStatsSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== **

** Used parameters: ** No. of input files : 1 Output file name : almost_empty_db No. of working directories : 1 Input format : MULTI LINE FASTA

k-mer length : 25 Max. k-mer length : 256 Signature length : 9 Min. count threshold : 2 Max. count threshold : 1000000000 Max. counter value : 255 Type of counters : direct Both strands : true RAM only mode : false

Stage 1 configuration:

No. of bins : 512 Bin part size : 65536 Input buffer size : 16777216

No. of readers : 1 No. of splitters : 1

Max. mem. size : 12000MB Max. mem. per storer : 6202MB Max. mem. for single package : 24MB

Max. mem. for PMM (bin parts): 9542MB Max. mem. for PMM (FASTQ) : 1650MB Max. mem. for PMM (reads) : 1MB Max. mem. for PMM (b. reader): 805MB

Stage 1: 100%==8281== Thread 4: ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x632592: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:397) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==8281== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==8281== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==8281== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==8281== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x63264C: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==8281== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==8281== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==8281== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==8281== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x632665: CFastqReader::GetPartFromMultilneFasta(unsigned char&, unsigned long long&) (fastq_reader.cpp:409) ==8281== by 0x632838: CFastqReader::GetPartNew(unsigned char&, unsigned long long&) (fastq_reader.cpp:438) ==8281== by 0x633A9D: CWFastqReader::operator()() (fastq_reader.cpp:852) ==8281== by 0x43FFD1: void std::invoke_impl<void, CWFastqReader&>(std::__invoke_other, CWFastqReader&) (invoke.h:60) ==8281== by 0x42F6DA: std::invoke_result<CWFastqReader&>::type std::invoke<CWFastqReader&>(CWFastqReader&) (invoke.h:95) ==8281== by 0x627BFB: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWFastqReader&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x6258F8: std::thread::_Invoker<std::tuple<CWFastqReader&> >::operator()() (thread:243) ==8281== by 0x6239FF: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWFastqReader&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Thread 2: ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x419900: CSplitter::GetSeq(char, unsigned int&) (splitter.h:249) ==8281== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==8281== by 0x471E36: CSplitter::ProcessReads(unsigned char, unsigned long long) (splitter.h:640) ==8281== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==8281== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==8281== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==8281== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==8281== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x419A18: CSplitter::GetSeq(char, unsigned int&) (splitter.h:257) ==8281== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==8281== by 0x471E36: CSplitter::ProcessReads(unsigned char, unsigned long long) (splitter.h:640) ==8281== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==8281== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==8281== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==8281== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==8281== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Use of uninitialised value of size 8 ==8281== at 0x419A59: CSplitter::GetSeq(char, unsigned int&) (splitter.h:259) ==8281== by 0x404911: CSplitter_Impl::ProcessReads(CSplitter&, unsigned char, unsigned long long) (splitter.h:806) ==8281== by 0x471E36: CSplitter::ProcessReads(unsigned char*, unsigned long long) (splitter.h:640) ==8281== by 0x4570D3: CWSplitter::operator()() (splitter.h:1248) ==8281== by 0x43F9A7: void std::invoke_impl<void, CWSplitter&>(std::__invoke_other, CWSplitter&) (invoke.h:60) ==8281== by 0x42F412: std::invoke_result<CWSplitter&>::type std::invoke<CWSplitter&>(CWSplitter&) (invoke.h:95) ==8281== by 0x627C53: decltype (invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<CWSplitter&> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234) ==8281== by 0x625940: std::thread::_Invoker<std::tuple<CWSplitter&> >::operator()() (thread:243) ==8281== by 0x623A3F: std::thread::_State_impl<std::thread::_Invoker<std::tuple<CWSplitter&> > >::_M_run() (thread:186) ==8281== by 0x4EEF4FE: execute_native_thread_routine (thread.cc:83) ==8281== by 0x56D8DE4: start_thread (pthread_create.c:308) ==8281== by 0x59EBBAC: clone (clone.S:113) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C298D7: operator new[](unsigned long) (vg_replace_malloc.c:423) ==8281== by 0x40AE14: CMemoryPool::prepare(long long, long long) (queues.h:858) ==8281== by 0x40AD27: CMemoryPool::CMemoryPool(long long, long long) (queues.h:843) ==8281== by 0x40B698: CMemoryPoolWithBamSupport::CMemoryPoolWithBamSupport(long long, long long) (queues.h:986) ==8281== by 0x50752B: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:871) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== Warning: set address range perms: large range [0x292ab4028, 0x2f50d4098) (noaccess) ==8281== Warning: set address range perms: large range [0x60ba028, 0x360ba098) (noaccess)

==8281== Warning: set address range perms: large range [0x59e43028, 0x292ab3098) (noaccess)

Stage 2 configuration: No. of threads : 1

Max. mem. for 2nd stage : 16MB

Stage 2: 100% ==8281== Thread 1: ==8281== Conditional jump or move depends on uninitialised value(s) ==8281== at 0x6383DA: CStopWatch::getElapsedTime() (timer.cpp:118) ==8281== by 0x50B17F: CKMC<CKmer<1u>, 1u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmc.h:1441) ==8281== by 0x4DC055: CApplication<CKmer, 1u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:121) ==8281== by 0x4B16A2: CApplication<CKmer, 2u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x48E5F0: CApplication<CKmer, 3u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x46C1DE: CApplication<CKmer, 4u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x44EFF2: CApplication<CKmer, 5u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x435CA8: CApplication<CKmer, 6u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x425EF0: CApplication<CKmer, 7u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x41B304: CApplication<CKmer, 8u, false>::GetStats(double&, double&, double&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&, unsigned long long&) (kmer_counter.cpp:78) ==8281== by 0x4075E8: main (kmer_counter.cpp:522) ==8281== Uninitialised value was created by a heap allocation ==8281== at 0x4C291EA: operator new(unsigned long) (vg_replace_malloc.c:334) ==8281== by 0x4B29FE: CApplication<CKmer, 1u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:104) ==8281== by 0x48FF0F: CApplication<CKmer, 2u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x46E7CD: CApplication<CKmer, 3u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x45231B: CApplication<CKmer, 4u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x43A6C3: CApplication<CKmer, 5u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x42C58B: CApplication<CKmer, 6u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x4206EF: CApplication<CKmer, 7u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x41B129: CApplication<CKmer, 8u, false>::CApplication(CKMCParams&) (kmer_counter.cpp:47) ==8281== by 0x407540: main (kmer_counter.cpp:514) ==8281== 1st stage: 574.805s 2nd stage: 41.3229s Total : 616.128s Tmp size : 0MB

Stats: No. of k-mers below min. threshold : 0 No. of k-mers above max. threshold : 0 No. of unique k-mers : 0 No. of unique counted k-mers : 0 Total no. of k-mers : 0 Total no. of sequences : 2 Total no. of super-k-mers : 0 ==8281== ==8281== HEAP SUMMARY: ==8281== in use at exit: 47,628 bytes in 1,024 blocks ==8281== total heap usage: 332,031 allocs, 331,007 frees, 12,082,269,453 bytes allocated ==8281== ==8281== 47,628 (24,576 direct, 23,052 indirect) bytes in 512 blocks are definitely lost in loss record 3 of 3 ==8281== at 0x4C291EA: operator new(unsigned long) (vg_replace_malloc.c:334) ==8281== by 0x63BEED: CKmerBinStorer::OpenFiles() (kb_storer.cpp:188) ==8281== by 0x63C32A: CWKmerBinStorer::CWKmerBinStorer(CKMCParams&, CKMCQueues&) (kb_storer.cpp:255) ==8281== by 0x50806F: CKMC<CKmer<1u>, 1u, false>::Process() (kmc.h:973) ==8281== by 0x4DBD24: CApplication<CKmer, 1u, false>::Process() (kmer_counter.cpp:134) ==8281== by 0x4B131C: CApplication<CKmer, 2u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x48E26A: CApplication<CKmer, 3u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x46BE58: CApplication<CKmer, 4u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x44EC6C: CApplication<CKmer, 5u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x435922: CApplication<CKmer, 6u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x425B6A: CApplication<CKmer, 7u, false>::Process() (kmer_counter.cpp:87) ==8281== by 0x41B1EE: CApplication<CKmer, 8u, false>::Process() (kmer_counter.cpp:87) ==8281== ==8281== LEAK SUMMARY: ==8281== definitely lost: 24,576 bytes in 512 blocks ==8281== indirectly lost: 23,052 bytes in 512 blocks ==8281== possibly lost: 0 bytes in 0 blocks ==8281== still reachable: 0 bytes in 0 blocks ==8281== suppressed: 0 bytes in 0 blocks ==8281== ==8281== For counts of detected and suppressed errors, rerun with: -v ==8281== ERROR SUMMARY: 184 errors from 14 contexts (suppressed: 0 from 0) (master_env_v17) [13:10] /data/sw/KMC $

marekkokot commented 5 years ago

Finally, I have used valgrind. Two sequences was incorrect result of the "Conditional jump or move depends on uninitialised value(s)". Fixes are in commits: 4712afcb3639dfcc50d37cff8e9349cc971bc8af and aae552e4a406c220b2b140df83ccfe1485b80e9d

Now running valgrind on empty.fasta shows:

==15540== Memcheck, a memory error detector
==15540== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==15540== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==15540== Command: bin/kmc -v -t1 -fm empty.fasta empty_db .
==15540== 
==15540== Warning: set address range perms: large range [0x6091040, 0x36091080) (undefined)
==15540== Warning: set address range perms: large range [0x395f8040, 0x272268080) (undefined)
==15540== Warning: set address range perms: large range [0x2de669040, 0x340c89080) (undefined)
**

********** Used parameters: **********
No. of input files           : 1
Output file name             : empty_db
No. of working directories   : 1
Input format                 : MULTI LINE FASTA

k-mer length                 : 25
Max. k-mer length            : 64
Signature length             : 9
Min. count threshold         : 2
Max. count threshold         : 1000000000
Max. counter value           : 255
Type of counters             : direct
Both strands                 : true
RAM only mode                : false

******* Stage 1 configuration: *******

No. of bins                  : 512
Bin part size                : 65536
Input buffer size            : 16777216

No. of readers               : 1
No. of splitters             : 1

Max. mem. size               : 12000MB
Max. mem. per storer         :  6202MB
Max. mem. for single package :    24MB

Max. mem. for PMM (bin parts):  9542MB
Max. mem. for PMM (FASTQ)    :  1650MB
Max. mem. for PMM (reads)    :     1MB
Max. mem. for PMM (b. reader):   805MB

Stage 1: 100%==15540== Warning: set address range perms: large range [0x2de669028, 0x340c89098) (noaccess)
==15540== Warning: set address range perms: large range [0x6091028, 0x36091098) (noaccess)
==15540== Warning: set address range perms: large range [0x395f8028, 0x272268098) (noaccess)

******* Stage 2 configuration: *******
No. of threads               : 1

Max. mem. for 2nd stage      :    16MB

Stage 2: 100%
1st stage: 482.088s
2nd stage: 3.82243s
Total    : 485.911s
Tmp size : 0MB

Stats:
   No. of k-mers below min. threshold :            0
   No. of k-mers above max. threshold :            0
   No. of unique k-mers               :            0
   No. of unique counted k-mers       :            0
   Total no. of k-mers                :            0
   Total no. of sequences             :            0
   Total no. of super-k-mers          :            0
==15540== 
==15540== HEAP SUMMARY:
==15540==     in use at exit: 0 bytes in 0 blocks
==15540==   total heap usage: 325,129 allocs, 325,129 frees, 12,082,110,610 bytes allocated
==15540== 
==15540== All heap blocks were freed -- no leaks are possible
==15540== 
==15540== For counts of detected and suppressed errors, rerun with: -v
==15540== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) 

And on almost empty (a little different)

>
AA

it shows:

==15592== Memcheck, a memory error detector
==15592== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==15592== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info
==15592== Command: bin/kmc -v -t1 -fm almost_empty.fa empty_db .
==15592== 
==15592== Warning: set address range perms: large range [0x6091040, 0x36091080) (undefined)
==15592== Warning: set address range perms: large range [0x395f8040, 0x272268080) (undefined)
==15592== Warning: set address range perms: large range [0x2de669040, 0x340c89080) (undefined)
**

********** Used parameters: **********
No. of input files           : 1
Output file name             : empty_db
No. of working directories   : 1
Input format                 : MULTI LINE FASTA

k-mer length                 : 25
Max. k-mer length            : 64
Signature length             : 9
Min. count threshold         : 2
Max. count threshold         : 1000000000
Max. counter value           : 255
Type of counters             : direct
Both strands                 : true
RAM only mode                : false

******* Stage 1 configuration: *******

No. of bins                  : 512
Bin part size                : 65536
Input buffer size            : 16777216

No. of readers               : 1
No. of splitters             : 1

Max. mem. size               : 12000MB
Max. mem. per storer         :  6202MB
Max. mem. for single package :    24MB

Max. mem. for PMM (bin parts):  9542MB
Max. mem. for PMM (FASTQ)    :  1650MB
Max. mem. for PMM (reads)    :     1MB
Max. mem. for PMM (b. reader):   805MB

Stage 1: 0%
Stage 1: 100%==15592== Warning: set address range perms: large range [0x2de669028, 0x340c89098) (noaccess)
==15592== Warning: set address range perms: large range [0x6091028, 0x36091098) (noaccess)

==15592== Warning: set address range perms: large range [0x395f8028, 0x272268098) (noaccess)

******* Stage 2 configuration: *******
No. of threads               : 1

Max. mem. for 2nd stage      :    16MB

Stage 2: 100%
1st stage: 478.172s
2nd stage: 3.58126s
Total    : 481.754s
Tmp size : 0MB

Stats:
   No. of k-mers below min. threshold :            0
   No. of k-mers above max. threshold :            0
   No. of unique k-mers               :            0
   No. of unique counted k-mers       :            0
   Total no. of k-mers                :            0
   Total no. of sequences             :            1
   Total no. of super-k-mers          :            0
==15592== 
==15592== HEAP SUMMARY:
==15592==     in use at exit: 0 bytes in 0 blocks
==15592==   total heap usage: 325,129 allocs, 325,129 frees, 12,082,110,610 bytes allocated
==15592== 
==15592== All heap blocks were freed -- no leaks are possible
==15592== 
==15592== For counts of detected and suppressed errors, rerun with: -v
==15592== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) 

Memory leaks was also fixed.

The settings of threads in kmc works as follows: There are some threads that are not CPU intensive (e.g. disk access), they are created always. The -t sets CPU intensive tasks threads, but at the first stage the minimum number of intensive threads that must be created is 2. It will be fixed, for now if one wants to run kmc really on single core, taskset linux command should be used.