# This is a real problem in the Solaris libc. It is caused by a read past the # FILE structure. It's an intentional hack to differentiate between two file # structures, FILE and xFILE. { Solaris:sprintf Memcheck:Cond fun:getxfdat fun:_set_memstream fun:sprintf } # The same problem as above. { Solaris:snprintf Memcheck:Cond fun:getxfdat fun:_set_memstream fun:snprintf } # The same problem as above. { Solaris:snprintf Memcheck:Cond fun:getxfdat fun:_realbufend fun:_ndoprnt fun:snprintf } # The same problem as above. { Solaris:vsnprintf Memcheck:Cond fun:getxfdat fun:_set_memstream fun:vsnprintf } # The same problem as above. { Solaris:vsnprintf Memcheck:Cond fun:getxfdat fun:_realbufend fun:_ndoprnt fun:vsnprintf } #----------------------------------------------------------------------------# # Solaris libc doesn't deallocate I/O buffers on program exit. { Solaris:file_buffer_malloc Memcheck:Leak fun:malloc fun:_findbuf obj:/lib/libc.so.1 obj:/lib/libc.so.1 } #----------------------------------------------------------------------------# # Solaris libc doesn't deallocate netconfig list pointed to by netpp. # This includes other allocated structures and strings contained there. { Solaris:setnetconfig-fgetnetconfig Memcheck:Leak match-leak-kinds: reachable fun:calloc fun:fgetnetconfig fun:getnetlist fun:setnetconfig } # The same problem as above. { Solaris:setnetconfig-fgetnetconfig-getlookups-strdup Memcheck:Leak match-leak-kinds: reachable fun:malloc fun:strdup fun:getlookups fun:fgetnetconfig fun:getnetlist fun:setnetconfig } # The same problem as above. { Solaris:setnetconfig-fgetnetconfig-getlookups-malloc Memcheck:Leak match-leak-kinds: reachable fun:malloc fun:getlookups fun:fgetnetconfig fun:getnetlist fun:setnetconfig } # The same problem as above. { Solaris:setnetconfig-fgetnetconfig-gettoken Memcheck:Leak match-leak-kinds: reachable fun:malloc fun:strdup fun:gettoken fun:fgetnetconfig fun:getnetlist fun:setnetconfig } # The same problem as above. { Solaris:setnetconfig-getnetlist Memcheck:Leak match-leak-kinds: reachable fun:malloc fun:getnetlist fun:setnetconfig } #----------------------------------------------------------------------------# # Solaris libc doesn't deallocate static strings netid_tcp_main # and netid_tcp_udp allocated in __rpc_getconfip. { Solaris:__rpc_getconfip-netid_tcp+udp_main Memcheck:Leak match-leak-kinds: reachable fun:malloc fun:strdup fun:__rpc_getconfip } #----------------------------------------------------------------------------# # Solaris libc doesn't deallocate global variable global_gt. { Solaris:dgettext Memcheck:Leak match-leak-kinds: reachable fun:calloc fun:dgettext } #----------------------------------------------------------------------------# # Solaris libc reinitializes mutex udp->ld_lock in the child's post-fork # handler. { Solaris:postfork_child_mutex_reinit drd:MutexErr fun:mutex_init fun:postfork1_child fun:forkx } #----------------------------------------------------------------------------# # Solaris libc implements pthread barrier with a mutex and a condition # variable. In pthread_barrier_wait(), the last thread returning with # SERIAL_THREAD first unlocks the mutex and then broadcasts the condition # variable. This is ok here because that mutex does not have any priorities # associated, therefore no unpredicatble scheduling behaviour can occurr. { Solaris:pthread_barrier_wait Helgrind:Misc fun:pthread_cond_broadcast_WRK fun:cond_broadcast fun:pthread_barrier_wait }