No, violation of DRY isn't always bad. Especially, if you fail to come up with a good name for an abstraction of the duplicated code, i.e. a name that suits both contexts, it might be that they're different things after all, and should be left duplicated.
In my experience this kind of coincidence tends to be rare though, and the larger the duplicated code, the most likely it is to describe one single concept.
I also find abstracting to composition is almost always a better idea in that regard than abstracting to inheritance which can easily lead you to false equations and LSP and ISP violations.