In this paper, we design, implement and evaluate AdaptGuard, a software service for guarding adaptive systems, such as QoS-adaptive servers, from instability caused by software anomalies and faults. Adaptive systems are of growing importance due to the need to adjust performance to a larger range of changing environmental conditions without human intervention. Such systems, however, implicitly assume a model of system behavior that may be violated, causing adaptation loops to perform poorly or fail. The purpose of AdaptGuard is simple: in the absence of an a priori model of the adaptive software system, anticipate system instability, attribute it correctly to the right "runaway" adaptation loop, and disconnect it, replacing it with conservative but stable open-loop control until further notice. We evaluate AdaptGuard by injecting various software faults into adaptive systems that are managed by typical adaptation loops. Results demonstrate that it can successfully anticipate instability caused by the injected faults and recover from performance degradation. Further, a case study is presented using an Apache Web server serving multiple classes of traffic. A performance anomaly is demonstrated, caused by unexpected interactions between an admission controller and the Linux anti-livelock mechanism. In the absence of a model that describes this mechanism, AdaptGuard is able to correctly attribute the unexpected problem to the right runaway loop and fix it.