I do not think filtering is a general best practice. From the vignette:
While it is not necessary to pre-filter low count genes before running the DESeq2 functions, there are two reasons which make pre-filtering useful: by removing rows in which there are very few reads, we reduce the memory size of the dds data object, and we increase the speed of the transformation and testing functions within DESeq2.
https://bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.html#pre-filtering
In any case it will not help here I guess as every gene contains a zero so removal of lowly-expressed genes will not change that. So either one or many corrupted samples or unusual data. @OP, please elaborate.
How can this be, so what kind of data is this?
How do you generate your countData? Maybe the problem is in the upstream steps, because the matrix seems to have no counts for your genes.