1 # This is a real problem in the Solaris libc. It is caused by a read past the 2 # FILE structure. It's an intentional hack to differentiate between two file 3 # structures, FILE and xFILE. 4 { 5 Solaris:sprintf 6 Memcheck:Cond 7 fun:getxfdat 8 fun:_set_memstream 9 fun:sprintf 10 } 11 12 # The same problem as above. 13 { 14 Solaris:snprintf 15 Memcheck:Cond 16 fun:getxfdat 17 fun:_set_memstream 18 fun:snprintf 19 } 20 21 # The same problem as above. 22 { 23 Solaris:snprintf 24 Memcheck:Cond 25 fun:getxfdat 26 fun:_realbufend 27 fun:_ndoprnt 28 fun:snprintf 29 } 30 31 # The same problem as above. 32 { 33 Solaris:vsnprintf 34 Memcheck:Cond 35 fun:getxfdat 36 fun:_set_memstream 37 fun:vsnprintf 38 } 39 40 # The same problem as above. 41 { 42 Solaris:vsnprintf 43 Memcheck:Cond 44 fun:getxfdat 45 fun:_realbufend 46 fun:_ndoprnt 47 fun:vsnprintf 48 } 49 50 #----------------------------------------------------------------------------# 51 # Solaris libc doesn't deallocate I/O buffers on program exit. 52 { 53 Solaris:file_buffer_malloc 54 Memcheck:Leak 55 fun:malloc 56 fun:_findbuf 57 obj:/lib/libc.so.1 58 obj:/lib/libc.so.1 59 } 60 61 #----------------------------------------------------------------------------# 62 # Solaris libc doesn't deallocate netconfig list pointed to by netpp. 63 # This includes other allocated structures and strings contained there. 64 { 65 Solaris:setnetconfig-fgetnetconfig 66 Memcheck:Leak 67 match-leak-kinds: reachable 68 fun:calloc 69 fun:fgetnetconfig 70 fun:getnetlist 71 fun:setnetconfig 72 } 73 74 # The same problem as above. 75 { 76 Solaris:setnetconfig-fgetnetconfig-getlookups-strdup 77 Memcheck:Leak 78 match-leak-kinds: reachable 79 fun:malloc 80 fun:strdup 81 fun:getlookups 82 fun:fgetnetconfig 83 fun:getnetlist 84 fun:setnetconfig 85 } 86 87 # The same problem as above. 88 { 89 Solaris:setnetconfig-fgetnetconfig-getlookups-malloc 90 Memcheck:Leak 91 match-leak-kinds: reachable 92 fun:malloc 93 fun:getlookups 94 fun:fgetnetconfig 95 fun:getnetlist 96 fun:setnetconfig 97 } 98 99 # The same problem as above. 100 { 101 Solaris:setnetconfig-fgetnetconfig-gettoken 102 Memcheck:Leak 103 match-leak-kinds: reachable 104 fun:malloc 105 fun:strdup 106 fun:gettoken 107 fun:fgetnetconfig 108 fun:getnetlist 109 fun:setnetconfig 110 } 111 112 # The same problem as above. 113 { 114 Solaris:setnetconfig-getnetlist 115 Memcheck:Leak 116 match-leak-kinds: reachable 117 fun:malloc 118 fun:getnetlist 119 fun:setnetconfig 120 } 121 122 #----------------------------------------------------------------------------# 123 # Solaris libc doesn't deallocate static strings netid_tcp_main 124 # and netid_tcp_udp allocated in __rpc_getconfip. 125 { 126 Solaris:__rpc_getconfip-netid_tcp+udp_main 127 Memcheck:Leak 128 match-leak-kinds: reachable 129 fun:malloc 130 fun:strdup 131 fun:__rpc_getconfip 132 } 133 134 #----------------------------------------------------------------------------# 135 # Solaris libc doesn't deallocate global variable global_gt. 136 { 137 Solaris:dgettext 138 Memcheck:Leak 139 match-leak-kinds: reachable 140 fun:calloc 141 fun:dgettext 142 } 143 144 #----------------------------------------------------------------------------# 145 # Solaris libc reinitializes mutex udp->ld_lock in the child's post-fork 146 # handler. 147 { 148 Solaris:postfork_child_mutex_reinit 149 drd:MutexErr 150 fun:mutex_init 151 fun:postfork1_child 152 fun:forkx 153 } 154 155 #----------------------------------------------------------------------------# 156 # Solaris libc implements pthread barrier with a mutex and a condition 157 # variable. In pthread_barrier_wait(), the last thread returning with 158 # SERIAL_THREAD first unlocks the mutex and then broadcasts the condition 159 # variable. This is ok here because that mutex does not have any priorities 160 # associated, therefore no unpredicatble scheduling behaviour can occurr. 161 { 162 Solaris:pthread_barrier_wait 163 Helgrind:Misc 164 fun:pthread_cond_broadcast_WRK 165 fun:cond_broadcast 166 fun:pthread_barrier_wait 167 } 168 169