'Text.Taggy.Parser.tagtext' should always consume input or fail:

The 'takeTill' combinator always passes, and will return an empty string
if the predicate passes on the first character of input.. this can lead
to infinite loops in the context of 'run'.. Instead use 'takeWhile1'
with the negation of the predicate.