Contain all relevant information. For example, currently most errors propagated from system calls omit perror() or an equivalent, which makes it harder for the user to track down the problem:
$ samtools sort example.bam /usr/cantwritehere
[samopen] SAM header is present: 25 sequences.
[sort_blocks] fail to create file /usr/cantwritehere.bam.
Samtools knows that the problem is "Permission denied" and it should be printing that out so that the user knows too.
This is a tracking bug for error messages and diagnostics. Diagnostics need to:
Exist where appropriate. There are a number of places where e.g. an incorrect reference sequence name is silently ignored and you just get no results rather than an indication of detectable user error.
Except for warnings, lead to a non-zero exit status. So failure can be detected in scripts.
Contain all relevant information. For example, currently most errors propagated from system calls omit
perror()or an equivalent, which makes it harder for the user to track down the problem:Samtools knows that the problem is "Permission denied" and it should be printing that out so that the user knows too.