Skip to content

Commit

Permalink
Fix sil
Browse files Browse the repository at this point in the history
  • Loading branch information
hkctkuy authored and hkctkuy committed Dec 8, 2023
1 parent a5b58a8 commit bdec678
Show file tree
Hide file tree
Showing 4 changed files with 283 additions and 21 deletions.
21 changes: 12 additions & 9 deletions casr/src/bin/casr-cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ fn update_clusters(
.zip(stacktraces.iter().zip(crashlines.iter()));

// Get casreps from existing clusters
let cluster_dirs: Vec<PathBuf> = fs::read_dir(oldpath)
let mut cluster_dirs: Vec<PathBuf> = fs::read_dir(oldpath)
.unwrap()
.map(|path| path.unwrap().path())
.filter(|path| {
Expand All @@ -350,6 +350,7 @@ fn update_clusters(
.starts_with("cl")
})
.collect();
cluster_dirs.sort();
let len = cluster_dirs.len();
// Init clusters vector
let mut clusters: Vec<Cluster> = Vec::new();
Expand Down Expand Up @@ -490,7 +491,7 @@ fn update_clusters(
/// Silhouette coefficient
fn get_sil(dir: &Path, jobs: usize) -> Result<f64> {
// Get cluster dirs
let dirs: Vec<PathBuf> = fs::read_dir(dir)
let mut dirs: Vec<PathBuf> = fs::read_dir(dir)
.unwrap()
.map(|path| path.unwrap().path())
.filter(|path| {
Expand All @@ -502,6 +503,7 @@ fn get_sil(dir: &Path, jobs: usize) -> Result<f64> {
.starts_with("cl")
})
.collect();
dirs.sort();

if dirs.len() < 2 {
bail!("{} valid cluster, nothing to calculate...", dirs.len());

Check warning on line 509 in casr/src/bin/casr-cluster.rs

View check run for this annotation

Codecov / codecov/patch

casr/src/bin/casr-cluster.rs#L509

Added line #L509 was not covered by tests
Expand All @@ -525,9 +527,10 @@ fn get_sil(dir: &Path, jobs: usize) -> Result<f64> {
// Init sil sum
let mut sum = 0f64;
// Calculate silhouette coefficient for each casrep
for i in 0..clusters.len() - 1 {
for num in 0..clusters[i].len() - 1 {
sum += sil_coef(num, i, &clusters);
for i in 0..clusters.len() {
for num in 0..clusters[i].len() {
let sil = sil_coef(num, i, &clusters);
sum += sil;
}
}
Ok(sum / size as f64)
Expand Down Expand Up @@ -629,8 +632,8 @@ fn main() -> Result<()> {
.help("Strategy for outer cluster choosing when updating"),
)
.arg(
Arg::new("estimation")
.long("estimation")
Arg::new("estimate")
.long("estimate")
.value_name("DIR")
.action(ArgAction::Set)
.value_parser(clap::value_parser!(PathBuf))
Expand Down Expand Up @@ -748,8 +751,8 @@ fn main() -> Result<()> {
}
let sil = get_sil(paths[1], jobs)?;
println!("Cluster silhouette index: {sil}");
} else if matches.contains_id("estimation") {
let path: &PathBuf = matches.get_one::<PathBuf>("estimation").unwrap();
} else if matches.contains_id("estimate") {
let path: &PathBuf = matches.get_one::<PathBuf>("estimate").unwrap();
let sil = get_sil(path, jobs)?;
println!("Cluster silhouette index: {sil}");
}
Expand Down
224 changes: 224 additions & 0 deletions casr/tests/casr_tests/casrep/test_clustering_small/40.casrep
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
{
"Date": "2021-07-14T19:56:09.276635+03:00",
"Uname": "Linux titanfall 5.8.0-59-generic #66~20.04.1-Ubuntu SMP Thu Jun 17 11:14:10 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux",
"OS": "Ubuntu",
"OSRelease": "20.04",
"Architecture": "amd64",
"ExecutablePath": "/usr/local/bin/tiff2pdf",
"ProcEnviron": [
"SHELL=/bin/zsh",
"COLORTERM=truecolor",
"SUDO_GID=1000",
"LC_ADDRESS=ru_RU.UTF-8",
"LC_NAME=ru_RU.UTF-8",
"SUDO_COMMAND=./scrypt.sh",
"LC_MONETARY=ru_RU.UTF-8",
"SUDO_USER=avgor46",
"PWD=/home/avgor46/testdoc",
"LOGNAME=root",
"XAUTHORITY=/run/user/1000/gdm/Xauthority",
"HOME=/root",
"LC_PAPER=ru_RU.UTF-8",
"LANG=en_US.UTF-8",
"LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:",
"TERM=xterm-256color",
"LC_IDENTIFICATION=ru_RU.UTF-8",
"USER=root",
"DISPLAY=:0",
"SHLVL=1",
"LC_TELEPHONE=ru_RU.UTF-8",
"LC_MEASUREMENT=ru_RU.UTF-8",
"LC_TIME=ru_RU.UTF-8",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin",
"SUDO_UID=1000",
"MAIL=/var/mail/root",
"LC_NUMERIC=ru_RU.UTF-8",
"_=/home/avgor46/sydr/build/caesar",
"LC_ALL=C",
"LINES=60",
"COLUMNS=204"
],
"ProcCmdline": "tiff2pdf ./fuz3tiff2pdf/main/crashes/id:000009,sig:06,src:000040+000049,time:43718,op:splice,rep:4",
"ProcStatus": [
"process 2943905",
"Name:\ttiff2pdf",
"Umask:\t0022",
"State:\tt (tracing stop)",
"Tgid:\t2943905",
"Ngid:\t0",
"Pid:\t2943905",
"PPid:\t2943903",
"TracerPid:\t2943903",
"Uid:\t0\t0\t0\t0",
"Gid:\t0\t0\t0\t0",
"FDSize:\t64",
"Groups:\t0 ",
"NStgid:\t2943905",
"NSpid:\t2943905",
"NSpgid:\t2943905",
"NSsid:\t2286199",
"VmPeak:\t 7092 kB",
"VmSize:\t 7088 kB",
"VmLck:\t 0 kB",
"VmPin:\t 0 kB",
"VmHWM:\t 1216 kB",
"VmRSS:\t 1216 kB",
"RssAnon:\t 184 kB",
"RssFile:\t 1032 kB",
"RssShmem:\t 0 kB",
"VmData:\t 228 kB",
"VmStk:\t 132 kB",
"VmExe:\t 44 kB",
"VmLib:\t 2916 kB",
"VmPTE:\t 40 kB",
"VmSwap:\t 0 kB",
"HugetlbPages:\t 0 kB",
"CoreDumping:\t0",
"THP_enabled:\t1",
"Threads:\t1",
"SigQ:\t0/127573",
"SigPnd:\t0000000000000000",
"ShdPnd:\t0000000000000000",
"SigBlk:\t0000000000000000",
"SigIgn:\t0000000000000000",
"SigCgt:\t0000000000000000",
"CapInh:\t0000000000000000",
"CapPrm:\t000000ffffffffff",
"CapEff:\t000000ffffffffff",
"CapBnd:\t000000ffffffffff",
"CapAmb:\t0000000000000000",
"NoNewPrivs:\t0",
"Seccomp:\t0",
"Speculation_Store_Bypass:\tthread vulnerable",
"Cpus_allowed:\tfff",
"Cpus_allowed_list:\t0-11",
"Mems_allowed:\t00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001",
"Mems_allowed_list:\t0",
"voluntary_ctxt_switches:\t5",
"nonvoluntary_ctxt_switches:\t0"
],
"ProcMaps": [
" 0x555555554000 0x555555556000 0x2000 0x0 /usr/local/bin/tiff2pdf",
" 0x555555556000 0x555555561000 0xb000 0x2000 /usr/local/bin/tiff2pdf",
" 0x555555561000 0x555555565000 0x4000 0xd000 /usr/local/bin/tiff2pdf",
" 0x555555565000 0x555555566000 0x1000 0x10000 /usr/local/bin/tiff2pdf",
" 0x555555566000 0x555555567000 0x1000 0x11000 /usr/local/bin/tiff2pdf",
" 0x555555567000 0x555555588000 0x21000 0x0 [heap]",
" 0x7ffff7945000 0x7ffff7949000 0x4000 0x0 ",
" 0x7ffff7949000 0x7ffff7958000 0xf000 0x0 /usr/lib/x86_64-linux-gnu/libm-2.31.so",
" 0x7ffff7958000 0x7ffff79ff000 0xa7000 0xf000 /usr/lib/x86_64-linux-gnu/libm-2.31.so",
" 0x7ffff79ff000 0x7ffff7a96000 0x97000 0xb6000 /usr/lib/x86_64-linux-gnu/libm-2.31.so",
" 0x7ffff7a96000 0x7ffff7a97000 0x1000 0x14c000 /usr/lib/x86_64-linux-gnu/libm-2.31.so",
" 0x7ffff7a97000 0x7ffff7a98000 0x1000 0x14d000 /usr/lib/x86_64-linux-gnu/libm-2.31.so",
" 0x7ffff7a98000 0x7ffff7a9a000 0x2000 0x0 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7a9a000 0x7ffff7aab000 0x11000 0x2000 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7aab000 0x7ffff7ab1000 0x6000 0x13000 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7ab1000 0x7ffff7ab2000 0x1000 0x19000 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7ab2000 0x7ffff7ab3000 0x1000 0x19000 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7ab3000 0x7ffff7ab4000 0x1000 0x1a000 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11",
" 0x7ffff7ab4000 0x7ffff7ab8000 0x4000 0x0 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7ab8000 0x7ffff7afc000 0x44000 0x4000 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7afc000 0x7ffff7b36000 0x3a000 0x48000 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7b36000 0x7ffff7b37000 0x1000 0x82000 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7b37000 0x7ffff7b38000 0x1000 0x82000 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7b38000 0x7ffff7b39000 0x1000 0x83000 /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2",
" 0x7ffff7b39000 0x7ffff7b44000 0xb000 0x0 /usr/lib/x86_64-linux-gnu/libjbig.so.0",
" 0x7ffff7b44000 0x7ffff7d43000 0x1ff000 0xb000 /usr/lib/x86_64-linux-gnu/libjbig.so.0",
" 0x7ffff7d43000 0x7ffff7d44000 0x1000 0xa000 /usr/lib/x86_64-linux-gnu/libjbig.so.0",
" 0x7ffff7d44000 0x7ffff7d47000 0x3000 0xb000 /usr/lib/x86_64-linux-gnu/libjbig.so.0",
" 0x7ffff7d47000 0x7ffff7d6c000 0x25000 0x0 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7d6c000 0x7ffff7ee4000 0x178000 0x25000 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7ee4000 0x7ffff7f2e000 0x4a000 0x19d000 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7f2e000 0x7ffff7f2f000 0x1000 0x1e7000 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7f2f000 0x7ffff7f32000 0x3000 0x1e7000 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7f32000 0x7ffff7f35000 0x3000 0x1ea000 /usr/lib/x86_64-linux-gnu/libc-2.31.so",
" 0x7ffff7f35000 0x7ffff7f39000 0x4000 0x0 ",
" 0x7ffff7f39000 0x7ffff7f41000 0x8000 0x0 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7f41000 0x7ffff7f76000 0x35000 0x8000 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7f76000 0x7ffff7f9f000 0x29000 0x3d000 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7f9f000 0x7ffff7fa0000 0x1000 0x66000 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7fa0000 0x7ffff7fa2000 0x2000 0x66000 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7fa2000 0x7ffff7fa3000 0x1000 0x68000 /usr/local/lib/libtiff.so.3.9.6",
" 0x7ffff7fa3000 0x7ffff7fa5000 0x2000 0x0 ",
" 0x7ffff7fc8000 0x7ffff7fc9000 0x1000 0x0 ",
" 0x7ffff7fc9000 0x7ffff7fcd000 0x4000 0x0 [vvar]",
" 0x7ffff7fcd000 0x7ffff7fcf000 0x2000 0x0 [vdso]",
" 0x7ffff7fcf000 0x7ffff7fd0000 0x1000 0x0 /usr/lib/x86_64-linux-gnu/ld-2.31.so",
" 0x7ffff7fd0000 0x7ffff7ff3000 0x23000 0x1000 /usr/lib/x86_64-linux-gnu/ld-2.31.so",
" 0x7ffff7ff3000 0x7ffff7ffb000 0x8000 0x24000 /usr/lib/x86_64-linux-gnu/ld-2.31.so",
" 0x7ffff7ffb000 0x7ffff7ffc000 0x1000 0x0 /home/avgor46/testdoc/fuz3tiff2pdf/main/crashes/id:000009,sig:06,src:000040+000049,time:43718,op:splice,rep:4",
" 0x7ffff7ffc000 0x7ffff7ffd000 0x1000 0x2c000 /usr/lib/x86_64-linux-gnu/ld-2.31.so",
" 0x7ffff7ffd000 0x7ffff7ffe000 0x1000 0x2d000 /usr/lib/x86_64-linux-gnu/ld-2.31.so",
" 0x7ffff7ffe000 0x7ffff7fff000 0x1000 0x0 ",
" 0x7ffffffde000 0x7ffffffff000 0x21000 0x0 [stack]",
" 0xffffffffff600000 0xffffffffff601000 0x1000 0x0 [vsyscall]"
],
"CrashSeverity": {
"Type": "NOT_CRITICAL",
"ShortDescription": "SafeFunctionCheck",
"Description": "Buffer overflow in safe function",
"Explanation": "The target stopped while handling a signal that was generated by libc due to detection of buffer overflow in safe copy function."
},
"Stacktrace": [
"#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50",
"#1 0x00007ffff7d6c859 in __GI_abort () at abort.c:79",
"#2 0x00007ffff7dd73ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7f0107c \"*** %s ***: terminated\\n\") at ../sysdeps/posix/libc_fatal.c:155",
"#3 0x00007ffff7e79b4a in __GI___fortify_fail (msg=msg@entry=0x7ffff7f01012 \"buffer overflow detected\") at fortify_fail.c:26",
"#4 0x00007ffff7e783e6 in __GI___chk_fail () at chk_fail.c:28",
"#5 0x00007ffff7dcf1cf in _IO_str_chk_overflow (fp=<optimized out>, c=<optimized out>) at iovsprintf.c:35",
"#6 0x00007ffff7da7db0 in __GI___printf_fp_l (fp=<optimized out>, loc=<optimized out>, info=<optimized out>, args=<optimized out>) at printf_fp.c:1246",
"#7 0x00007ffff7dc163a in __vfprintf_internal (s=s@entry=0x7fffffffe070, format=format@entry=0x5555555613df \"%.4f\", ap=ap@entry=0x7fffffffe1b0, mode_flags=mode_flags@entry=6) at vfprintf-internal.c:1687",
"#8 0x00007ffff7dcf279 in __vsprintf_internal (string=0x7fffffffe2a0 \"79725330432.000\", maxlen=<optimized out>, format=0x5555555613df \"%.4f\", args=args@entry=0x7fffffffe1b0, mode_flags=6) at iovsprintf.c:95",
"#9 0x00007ffff7e77edb in ___sprintf_chk (s=<optimized out>, flag=<optimized out>, slen=<optimized out>, format=<optimized out>) at sprintf_chk.c:40",
"#10 0x000055555555c7a1 in sprintf (__fmt=0x5555555613df \"%.4f\", __s=0x7fffffffe2a0 \"79725330432.000\") at /usr/include/x86_64-linux-gnu/bits/stdio2.h:36",
"#12 0x00005555555601b8 in t2p_write_pdf (output=0x555555568f80, input=0x555555567ea0, t2p=0x5555555672a0) at tiff2pdf.c:5175",
"#13 t2p_write_pdf (t2p=0x5555555672a0, input=0x555555567ea0, output=0x555555568f80) at tiff2pdf.c:5133",
"#14 0x00005555555568d4 in main (argc=<optimized out>, argv=<optimized out>) at tiff2pdf.c:763"
],
"Prstatus": {
"registers": {
"cs": 51,
"ds": 0,
"eflags": 582,
"es": 0,
"fs": 0,
"gs": 0,
"r10": 8,
"r11": 582,
"r12": 140737488344896,
"r13": 32,
"r14": 140737353908224,
"r15": 1,
"r8": 0,
"r9": 140737488344256,
"rax": 0,
"rbp": 140737488345152,
"rbx": 140737347094016,
"rcx": 140737351569803,
"rdi": 2,
"rdx": 0,
"rip": 140737351569803,
"rsi": 140737488344256,
"rsp": 140737488344256,
"ss": 43
}
},
"Disassembly": [
"=> 0x7ffff7d8d18b <__GI_raise+203>:\tmov rax,QWORD PTR [rsp+0x108]",
" 0x7ffff7d8d193 <__GI_raise+211>:\txor rax,QWORD PTR fs:0x28",
" 0x7ffff7d8d19c <__GI_raise+220>:\tjne 0x7ffff7d8d1c4 <__GI_raise+260>",
" 0x7ffff7d8d19e <__GI_raise+222>:\tmov eax,r8d",
" 0x7ffff7d8d1a1 <__GI_raise+225>:\tadd rsp,0x118",
" 0x7ffff7d8d1a8 <__GI_raise+232>:\tret ",
" 0x7ffff7d8d1a9 <__GI_raise+233>:\tnop DWORD PTR [rax+0x0]",
" 0x7ffff7d8d1b0 <__GI_raise+240>:\tmov rdx,QWORD PTR [rip+0x1a4cb9] # 0x7ffff7f31e70",
" 0x7ffff7d8d1b7 <__GI_raise+247>:\tneg eax",
" 0x7ffff7d8d1b9 <__GI_raise+249>:\tmov r8d,0xffffffff",
" 0x7ffff7d8d1bf <__GI_raise+255>:\tmov DWORD PTR fs:[rdx],eax",
" 0x7ffff7d8d1c2 <__GI_raise+258>:\tjmp 0x7ffff7d8d174 <__GI_raise+180>",
" 0x7ffff7d8d1c4 <__GI_raise+260>:\tcall 0x7ffff7e79b00 <__stack_chk_fail>",
" 0x7ffff7d8d1c9:\tnop DWORD PTR [rax+0x0]",
" 0x7ffff7d8d1d0 <killpg>:\tendbr64 ",
" 0x7ffff7d8d1d4 <killpg+4>:\ttest edi,edi"
]
}
Loading

0 comments on commit bdec678

Please sign in to comment.