修复一个可能引起崩溃的bug,就是读取reads时,初始开辟的seqs个数可能不够,导致超出seqs内存,最终崩溃

This commit is contained in:
zzh 2026-01-19 15:00:45 +08:00
parent 884e47d57d
commit a4c2411d99
3 changed files with 5 additions and 3 deletions

3
.vscode/launch.json vendored
View File

@ -13,7 +13,8 @@
"args": [
"mem",
"-t",
"1",
"128",
"-K", "800000000",
"-M",
"-R",
"'@RG\\tID:normal\\tSM:normal\\tPL:illumina\\tLB:normal\\tPG:bwa'",

View File

@ -9,7 +9,7 @@ OPTIMIZE=-O3
CFLAGS= -g -Wall -Wno-unused-function $(AVX2) $(AVX512BW) $(OPTIMIZE)
WRAP_MALLOC=-DUSE_MALLOC_WRAPPERS
#SAM_EXACT= -DSAM_EXACT
SAM_EXACT= -DSAM_EXACT
SHOW_PERF= -DSHOW_PERF
SHOW_DATA_PERF= -DSHOW_DATA_PERF
DEBUG_FILE_OUTPUT= -DDEBUG_FILE_OUTPUT

3
bwa.c
View File

@ -159,7 +159,8 @@ void bseq_read_pe_mt(int chunk_size, int* n_, void* ks1_, void* ks2_, int copy_c
*m_ = n;
return;
}
m = (chunk_size + size / init_n_reads - 1) / (size / init_n_reads);
float bases_per_read = size * 1.0 / init_n_reads;
m = (chunk_size + bases_per_read * 100) / (bases_per_read); // 多开辟100个reads的冗余空间
#else
m = 50000;
#endif