1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
|
# This is a valgrind suppressions file.
# As in libnih, we often use a heap-allocated list head to link all of
# the allocated structures such as the event queue or job list. They
# are allocated the first time that we need them with the static *_init
# functions; valgrind complains because they are not freed before exit,
# as there's little point doing so.
{
event-init
Memcheck:Leak
fun:malloc
fun:nih_alloc
fun:nih_list_new
fun:event_init
}
{
event-init
Memcheck:Leak
fun:malloc
fun:nih_alloc_ref_new
fun:nih_alloc
fun:nih_list_new
fun:event_init
}
{
job-class-init
Memcheck:Leak
fun:malloc
fun:nih_alloc
fun:nih_hash_new
fun:job_class_init
}
{
job-class-init
Memcheck:Leak
fun:malloc
fun:nih_alloc_ref_new
fun:nih_alloc
fun:nih_hash_new
fun:job_class_init
}
{
notify-init
Memcheck:Leak
fun:malloc
fun:nih_alloc
fun:nih_list_new
fun:notify_init
}
{
notify-init
Memcheck:Leak
fun:malloc
fun:nih_alloc_ref_new
fun:nih_alloc
fun:nih_list_new
fun:notify_init
}
{
conf-init
Memcheck:Leak
fun:malloc
fun:nih_alloc
fun:nih_list_new
fun:conf_init
}
{
conf-init
Memcheck:Leak
fun:malloc
fun:nih_alloc_ref_new
fun:nih_alloc
fun:nih_list_new
fun:conf_init
}
{
control-init
Memcheck:Leak
fun:malloc
fun:nih_alloc
fun:nih_list_new
fun:control_init
}
{
control-init
Memcheck:Leak
fun:malloc
fun:nih_alloc_ref_new
fun:nih_alloc
fun:nih_list_new
fun:control_init
}
# job_run_process will leak its args member to children, knowing full
# well they will either exec() or exit()
{
job-process-run-args
Memcheck:Leak
fun:realloc
fun:_test_realloc
fun:nih_realloc
fun:nih_str_array_addp
fun:nih_str_array_addn
fun:nih_str_split
fun:job_process_run
}
# job_name uses a static string which it reuses each time
{
job-name-string
Memcheck:Leak
fun:malloc
fun:realloc
fun:_test_realloc
fun:_test_malloc
fun:nih_alloc
fun:nih_strndup
fun:nih_strdup
fun:job_name
}
{
job-name-string
Memcheck:Leak
fun:malloc
fun:realloc
fun:_test_realloc
fun:_test_malloc
fun:nih_alloc
fun:nih_vsprintf
fun:nih_sprintf
fun:job_name
}
# when testing stop events, the stopping event will be emitted and
# immediately processed since we're inside event_poll() - and then the
# post-stop process will be run inside the finished handler for it, making
# the child appear to leak it
{
job-emit-event-in-event-poll
Memcheck:Leak
fun:realloc
fun:_test_realloc
fun:nih_realloc
fun:nih_str_array_addp
fun:environ_add
fun:job_emit_event
fun:job_change_state
fun:job_change_goal
fun:event_pending_handle_jobs
fun:event_pending
fun:event_poll
}
# valgrind seems to lose track of this one, it's definitely freed and
# just gets leaked when in a child
{
event-environ-in-event-poll
Memcheck:Leak
fun:realloc
fun:nih_realloc
fun:nih_str_array_addp
fun:nih_str_array_add
fun:test_pending_handle_jobs
}
# collected environment will appear to be leaked from the child's POV when
# we run it inside event poll
{
event-operator-environment-in-event-poll
Memcheck:Leak
fun:realloc
fun:_test_realloc
fun:nih_realloc
fun:nih_str_array_addp
fun:environ_add
fun:event_operator_environment
fun:event_pending_handle_jobs
fun:event_pending
fun:event_poll
}
{
event-operator-environment-in-event-poll
Memcheck:Leak
fun:malloc
fun:realloc
fun:_test_realloc
fun:_test_malloc
fun:nih_alloc
fun:nih_strndup
fun:nih_strdup
fun:environ_add
fun:event_operator_environment
fun:event_pending_handle_jobs
fun:event_pending
fun:event_poll
}
{
event-operator-environment-in-event-poll
Memcheck:Leak
fun:malloc
fun:realloc
fun:_test_realloc
fun:_test_malloc
fun:nih_alloc
fun:nih_strndup
fun:nih_strdup
fun:environ_add
fun:environ_append
fun:event_operator_environment
fun:event_pending_handle_jobs
fun:event_pending
fun:event_poll
}
# Surely this should be a default suppression?
{
glibc-setenv
Memcheck:Leak
fun:realloc
obj:/lib/libc-*.so
fun:setenv
}
{
glibc-setenv
Memcheck:Leak
fun:realloc
obj:/lib/tls/i686/cmov/libc-*.so
fun:setenv
}
|