Semitic languages don't always preserve consonants perfectly. In fact, I don't think that there is any Semitic language without multiple classes of conjugation to account for irregularities.
All Semitic languages have collapsed at least some phonemes, which makes some originally separate roots homophonous. For example, *θ merges with /ʃ/ in Hebrew, but with /t/ in Aramaic, making the Hebrew root ʃ-n-y mean both "change" (Aramaic ʃ-n-y) and "repeat" (Aramaic t-n-y). In cases like this, two roots may develop into one, but the root itself remains consistent.
But sometimes the root itself isn't preserved consistently. For example, in Hebrew, the reflexes of the consonants /b k p/ included an allophone in certain positions /v x f/, which is phonemic in Modern Hebrew. This means that אשבור /eʃˈbor/ and שברתי /ʃaˈvarti/, for instance, come from the same root שבר "break," although in the future the root is phonemically ʃ-b-r while in the past the root is ʃ-v-r.
Consonants are also subject to normal sound changes. In Hebrew, /ʔ/ and /ʕ/ were both lost, but /ʕ/ developed into /a/ in certain conditions (Akkadian went a similar way). Thus the root n-s-ʔ is now realized as /noˈse/ and the root n-s-ʕ is realized as /noˈsea/ in the present tense (sg. m.), though the difference between the two roots was lost in past and future tense. Synchronically, the root might be better described as n-s-a than by reference to the lost consonant.
Losing consonants doesn't destroy a Semitic language, because root consonants are an abstraction that helps you to understand morphology. If the concept of roots no longer accurately describes the morphology, the morphology continues to function even if it becomes less regular.