| // RUN: %clangxx_msan -O0 %s -o %t && %run %t | 
 |  | 
 | #include <sys/types.h> | 
 | #include <sys/socket.h> | 
 | #include <netdb.h> | 
 | #include <stdlib.h> | 
 |  | 
 | void poison_stack_ahead() { | 
 |   char buf[100000]; | 
 |   // With -O0 this poisons a large chunk of stack. | 
 | } | 
 |  | 
 | int main(void) { | 
 |   poison_stack_ahead(); | 
 |  | 
 |   struct addrinfo *ai; | 
 |  | 
 |   // This should trigger loading of libnss_dns and friends. | 
 |   // Those libraries are typically uninstrumented.They will call strlen() on a | 
 |   // stack-allocated buffer, which is very likely to be poisoned. Test that we | 
 |   // don't report this as an UMR. | 
 |   int res = getaddrinfo("not-in-etc-hosts", NULL, NULL, &ai); | 
 |   return 0; | 
 | } |