mirror of
https://github.com/langgenius/dify-plugin-daemon.git
synced 2026-07-21 17:25:23 -04:00
Zombie Processes Accumulate in dify-plugin-daemon Container (Parent Process Fails to Reap Children) #220
Closed
opened 2026-02-16 00:20:33 -05:00 by yindo
·
5 comments
No Branch/Tag Specified
main
build/fix-serverless-runtime-error-propagation
gh-pages
build/test-document2
build/test-document
build/onboarding-ui
build/slim-extract
codex/depot-builds
codex/mac-runner-benchmark
feat/storage-path-prefix
feat/multi-db-user
feat/slim-action
deploy/dev
feat/dify-cli
feat/add-e2e
build/pg-bouncer
codex/add-multimodal-rerank-and-embedding-apis
refactor/local-runtime
build/multimodal-embeddings
codex/refactor-routine.submit-label-handling
codex/refactor-service-layer-based-on-provided-plan
feat/trigger-response
feat/trigger
build/trigger
deploy/trigger-dev
codex/remove-claude-code-reviewer-from-github-ci
codex/add-manifest-check-to-upload-endpoint
feat/no-root-dockerfile
fix/json-schema
fix/blocking-anthorized-langgenius
454-bump-cli-template
build/datasource
feat/datasource
bump-cloud-kit
feat/rag-tag
fix/change-session-not-found-to-400
feat/plugin-readme
add-claude-github-actions-1756274550417
docs/comprehensive-development-documentation
chore/remove-json-schema-validation-error
71cef04
fix/missing-parameter-type
fix/sessions-log
fix/template.env
bump/go-git
build/oauth
feat/oauth-refresh-token
feat/plugin-oauth
feat/tool-oauth-cli
build/plugin-oauth
feat/readme-i18n
fix/memory-leak
feat/icon-dark
feat/default-icon
plugin_launch_concurent
feat/collect-active-requests
feat/dark-icon
feat/support-structured-llm-output
feat/dynamic-selector
fix/reduce-logs
feat/decode-plugin-package
feat/db-extras
fix/backwards-invocation-overflow
feat/length-prefixed-chunking
fix/http-request-reader-header
chore/unify-configurations
fix/hardcoded-serverless-runtime-timeout
fix/cmd
fix/signature
refactor/implement-gen-routes
fix/redis-lock
refactor/codegen
feat/add-authorized-category
chore/style
feat/run-plugin-cli
reduce/run-once
feat/reinstall-serverless-runtime
feat/support-setup-process
fix/apply-stdio-buffer-size
chore/add-warning-messages-to-installed-bucket
feat/repo
enhance/stdio
feat/make-buffer-size-configurable
fix/moderation-init
fix/only-validate-profile-on-quick-mode
feat/support-quick-init-plugins
refactor/oauth-parameters
feat/oauth
refactor/simplify-plugin-invocation
test/integration-test-for-plugins
fix/backwards-compatible-to-llm-result-chunk
feat/auto-scale
enhance/reduce-ci-tests
fix/cli-ci
enhance/removes-llm-result-prompt-messages
fix/disable-benchmark-logs
benchmark/local-runtime
chore/remove-useless-benchmark
feat/benchmark
feat/fetch-app-info
fix/windows-remap-assets
fix/skip-hidden-file
feat/stream-tool-blob-message
fix/path-travel
feat/template-add-ci
enhance/version-compare
feat/sign-apple-os-cli
feat/support-minimal-dify-version-required
refactor/stdip
feat/add-serverless-connector-launching-timeout
fix/remove-prompt_messages-from-llm-result-chunk
feat/standardize-plugin-sdk-versions
chore/update-docs-and-refine-wording
update/readme-cli
fix/infinity-environment-setup
fix/cbor-unmarshaling
fix/use-aws-iam-baseendpoint
fix/lost-query-params-in-endpoint
fix/tiktoken
cohre/update-readme
fix/redis-tests
fix/friendly-identity
fix/marshal-any-map
chore/upgrade-ants
fix/graceful-precompile
enhance/tiktoken
feat/graceful-shutdown
fix/close-serverless-response
fix/correct-cli-guide
fix/plugin-active-log
fix/remove-proxy-args-from-uv
fix/endpoint-hook-url
fix/ci-credentials
feat/disable-gevent
fix/add-gcc
fix/hardcoded-endpoint-timeout
fix/bump-cli-sdk-version
fix/deadloop-when-redis-disconnect
fix/enhence/speed-up-environment-setup
enhance/introduce-uv
fix/change-default-db
fix/deadlock
readme
chore/env.example
feat/add-action-in-url
fix/add-more-pip-args
fix/optimize-local-heartbeat
optimize/db-init
fix/optimize-internal-server-error
fix/increase-default-plugin-max-execution-timeout
fix/force-patch-older-version
enhance/increase-installing-process
LICENSE
fix/set-user-id-to-unrequired
fix/max-launching-concurrent
improve/error-handing-in-serverless
refactor/json-unmarshaler-enhancement
fix/add-pip-mirror-url
enhance/serverless-connector
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0b1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
0.0.1-beta.23
0.0.1-beta.22
0.0.1-beta.21
0.0.1-beta.20
0.0.1-beta.19
0.0.1-beta.18
0.0.1-beta.17
0.0.1-beta.16
0.0.1-beta.15
0.0.1-beta.14
0.0.1-beta.13
0.0.1-beta.12
0.0.1-beta.11
0.0.1-beta.10
0.0.1-beta.9
0.0.1-beta.8
0.0.1-beta.7
0.0.1-beta.6
0.0.1-beta.5
0.0.1-beta.4
0.0.1-beta.3
0.0.1-beta.2
0.0.1-beta.1
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: langgenius/dify-plugin-daemon#220
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @yakexi007 on GitHub (Dec 17, 2025).
Self Checks
Dify version
dify-plugin-daemon:0.5.1-local
Cloud or Self Hosted
Cloud
Steps to reproduce
Hi Dify Team,
I'm encountering a critical issue with the langgenius/dify-plugin-daemon container (version 0.5.1-local) where zombie processes () accumulate rapidly during runtime. This poses a risk of PID exhaustion on the host and potential service instability over time.
Dify Plugin Daemon Version: 0.5.1-local (custom-built based on official 0.5.1 with minor tweaks)
Deployment Environment: Docker (Docker Compose) on Linux (Ubuntu 24.04 LTS)
Key mounts: ./volumes/plugin_daemon:/app/storage
Problem Symptom:
fter the container runs for ~1 hour, hundreds of zombie Python processes appear (via ps -ef | grep defunct on the host or docker exec ps -eo pid,ppid,stat):
root 357972 0.0 0.0 0 0 ? Z Dec17 0:00 [python]
root 358902 0.0 0.0 0 0 ? Z Dec17 0:00 [python]
root 359557 0.0 0.0 0 0 ? Z Dec17 0:00 [python]
root 360580 0.0 0.0 0 0 ? Z Dec17 0:00 [python]
Hundreds more...
All zombies have the same parent process (PID 9 inside the container, which maps to the plugin-daemon core process /app/main).
The parent process fails to reap these zombies even when sent the SIGCHLD signal (kill -CHLD ).
What I've Tried (Workarounds, Not Permanent Fixes):
Core Question:
Is there an official fix or recommended configuration to permanently resolve zombie process accumulation in dify-plugin-daemon? Specifically:
Thanks!
✔️ Expected Behavior
Expected Behavior
dify-plugin-daemoncontainer runs (even under high load with frequent plugin executions), exited child processes (e.g., Python plugin processes) should be automatically and immediately reaped by either:/app/main) via properSIGCHLDsignal handling andwaitpid()system calls, or<defunct>) should not accumulate — the count of zombies inside the container should remain at 0 (or ≤5 transient zombies) at all times, even after days of continuous runtime.SIGCHLDsignals, running reaping scripts, or restarting the container) should be required to prevent zombie process buildup.❌ Actual Behavior
No response
@Yeuoly commented on GitHub (Dec 18, 2025):
Hi, thank you for the feedback, I've located the root cause:
Waitwas not called after the SIGKILL signal to the subprocess inStartStdoutroutine, a routine which takes over the lifetime management of a plugin subprocess.Also, I added some comments there to make sure the logics and architecture design is not confused and clear to developers.
Would you mind take a look at the patch? #544
@yakexi007 commented on GitHub (Dec 18, 2025):
Hi @Yeuoly ,
Thank you so much for quickly locating and fixing the root cause of the zombie process issue!
I will:
Looking forward to seeing this merged!
Best regards,
yakexi007
@Yeuoly commented on GitHub (Dec 19, 2025):
@yakexi007 Would you like to try langgenius/dify-plugin-daemon:66fa57e415566678ce51b45abefdea989d0ba3e7-local ?
@yakexi007 commented on GitHub (Dec 19, 2025):
Hi @Yeuoly ,
Thanks a lot for the test image and fixing the issue so quickly!
I’d like to wait for the official release version ((e.g.,
v0.5.2/v0.6.0or similar tagged builds).) to test this fix, as we use release-tagged images in production for consistency. I’ll test it right after the official release and share the results here immediately.Appreciate your hard work!
@yakexi007 commented on GitHub (Dec 23, 2025):
Hi @Yeuoly ,
Thank you so much for the quick fix! I can confirm that the issue has been resolved in the latest v0.5.2 release. We really appreciate your efficient work and support.
Best regards.