troglobit/inadyn

Defunct ssl_client processes

Smart123s opened this issue · 2 comments

The inadyn process spawns a lot of ssl_client child processes, but they won't get cleaned up. After running inadyn for a few days I had 13000+ defunct ssl_client, which have disappeared after stoping inadyn.

I noticed this bug because htop began to lag.

Platform: Debian 12 (x64) - Docker (27.2.0)
Image: ghcr.io/troglobit/inadyn@sha256:f18e14746f819d9fff33af2ca5590571bc74e9a6645223ee4c6b54a8c1c00e2f

Output of ps -axjf after a few minutes of running:

   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
  [...]
 137201 3082403 3082403  137379 ?             -1 Sl       0   0:00      \_ /usr/bin/containerd-shim-runc-v2 -namespace moby -id 14bedc7c91e5af2b384ad78b4e68d977082c09404f4bf05db3f1f9cacd10e437 -address /run/containerd/containerd.sock
3082403 3082423 3082423 3082423 ?             -1 Ss       0   0:00          \_ /usr/sbin/inadyn --foreground
3082423 3082573 3082565 3082565 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3082574 3082565 3082565 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3082727 3082719 3082719 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3082728 3082719 3082719 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3082973 3082965 3082965 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3082974 3082965 3082965 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083145 3083137 3083137 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083146 3083137 3083137 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083289 3083281 3083281 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083312 3083281 3083281 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083576 3083568 3083568 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083577 3083568 3083568 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083730 3083722 3083722 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083731 3083722 3083722 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083889 3083881 3083881 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3083890 3083881 3083881 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084086 3084078 3084078 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084087 3084078 3084078 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084242 3084234 3084234 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084243 3084234 3084234 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084445 3084434 3084434 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084453 3084434 3084434 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084639 3084631 3084631 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084640 3084631 3084631 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084795 3084787 3084787 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084796 3084787 3084787 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084997 3084989 3084989 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3084998 3084989 3084989 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085154 3085146 3085146 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085155 3085146 3085146 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085317 3085309 3085309 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085318 3085309 3085309 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085538 3085529 3085529 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085539 3085529 3085529 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085682 3085674 3085674 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085683 3085674 3085674 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085855 3085847 3085847 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3085856 3085847 3085847 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086060 3086052 3086052 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086061 3086052 3086052 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086218 3086188 3086188 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086226 3086188 3086188 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086385 3086377 3086377 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086386 3086377 3086377 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086621 3086597 3086597 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086633 3086597 3086597 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086789 3086780 3086780 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086790 3086780 3086780 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086963 3086955 3086955 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3086966 3086955 3086955 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087165 3087157 3087157 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087166 3087157 3087157 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087338 3087330 3087330 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087339 3087330 3087330 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087485 3087477 3087477 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087486 3087477 3087477 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087690 3087682 3087682 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087691 3087682 3087682 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087864 3087856 3087856 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3087865 3087856 3087856 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088022 3088014 3088014 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088023 3088014 3088014 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088204 3088196 3088196 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088205 3088196 3088196 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088387 3088379 3088379 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088388 3088379 3088379 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088580 3088572 3088572 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088581 3088572 3088572 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088750 3088741 3088741 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088751 3088741 3088741 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088931 3088923 3088923 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3088932 3088923 3088923 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089121 3089113 3089113 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089140 3089113 3089113 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089262 3089254 3089254 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089280 3089254 3089254 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089500 3089477 3089477 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089508 3089477 3089477 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089750 3089742 3089742 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089751 3089742 3089742 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089901 3089889 3089889 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3089902 3089889 3089889 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090072 3090064 3090064 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090073 3090064 3090064 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090275 3090267 3090267 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090276 3090267 3090267 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090455 3090441 3090441 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090456 3090441 3090441 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090614 3090606 3090606 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090615 3090606 3090606 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090840 3090832 3090832 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3090841 3090832 3090832 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3091001 3090993 3090993 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3091002 3090993 3090993 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3091177 3091149 3091149 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>
3082423 3091178 3091149 3091149 ?             -1 Z        0   0:00              \_ [ssl_client] <defunct>

I honestly don't know what this is. Nowhere in the code does Inadyn use ssl_client. Unless you provide more information about your configuration I cannot help you.

I'm stupid. I had a buggy healthcheck in my docker-compose.yml

  inadyn:
    image: ghcr.io/troglobit/inadyn
    container_name: inadyn
    volumes:
      - [...]/inadyn.conf:/etc/inadyn.conf:ro
    labels:
      traefik.enable: false
      deunhealth.restart.on.unhealthy: true
    network_mode: host
    healthcheck:
      test: "wget --spider -S --no-check-certificate '1.1.1.1' 2>&1 | grep -q 'HTTP/1.1 200 OK' || exit 1 "
      interval: 10s
      timeout: 6s
      retries: 15
    restart: always

For every other container, I used curl for healthcheck, but your image didn't have that, so I switched to wget. The zombie processes didn't cause a problem for the first few days, so I forgot about that. Sorry for taking your time. My bad.