Skip to content

Orphaned processes left when extensionHost is killed #4580

Closed
@tjpalanca

Description

@tjpalanca

Also posted on the extension repo in case fix needs to be with them: REditorSupport/vscode-R#902

OS/Web Information

  • Web Browser: Safari iOS, Safari macOS, and Chrome macOS
  • Local OS: iOS, macOS
  • Remote OS: Ubuntu (Docker)
  • Remote Architecture: Kubernetes
  • code-server --version: 3.12.0

Steps to Reproduce

  1. Use code-server 3.12.0, vscode-R version 2.3.4
  2. Create an R terminal
  3. Close the R terminal
  4. Start another R terminal
  5. helpServer.R instances will keep piling up even if the original extensionHost was already killed.

Expected

  1. Expect only one helpServer.R child process to persist for the whole session.
  2. When extensionhost killed hlepServer.R is not orphaned

Actual

Orphaned processes remain:

> ps aux | grep helpServer.R
  565 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  566 ?        Sl     0:23 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  723 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  724 ?        Sl     0:22 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
 1464 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
 1465 ?        Sl     0:05 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R

Orphaned helpServer.R processes are leaking when opening and closing multiple R terminals in code-server.

> ps aux | grep helpServer.R
  565 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  566 ?        Sl     0:23 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  723 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
  724 ?        Sl     0:22 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
 1464 ?        S      0:00 /bin/sh -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
 1465 ?        Sl     0:05 /usr/local/lib/R/bin/exec/R --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R

Inspecting the tree for one of the orphaned processes, it's clear that they are orphaned and no longer connected to the original code-server process.

> pstree -psa 566
s6-svscan,1 -t0 /var/run/s6/services
  └─sh,565 -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
      └─R,566 --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
         ├─{R},574
         ├─{R},575
         └─{R},576

As opposed to a newly created R terminal:

> pstree -psa 2056
s6-svscan,1 -t0 /var/run/s6/services
  └─s6-supervise,414 vscode
      └─node,1672 /usr/lib/code-server --auth none --disable-telemetry --bind-addr 0.0.0.0:8788
          └─node,1706 /usr/lib/code-server --auth none --disable-telemetry --bind-addr 0.0.0.0:8788
              └─node,1724 /usr/lib/code-server/vendor/modules/code-oss-dev/out/vs/server/fork
                  └─node,1935 /usr/lib/code-server/vendor/modules/code-oss-dev/out/bootstrap-fork --type=extensionHost
                      └─sh,2055 -c /usr/local/bin/R --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
                          └─R,2056 --no-save --no-restore --silent --slave --no-save --no-restore -f /home/tjpalanca/.local/share/code-server/extensions/ikuyadeu.r-2.3.4/R/help/helpServer.R
                             ├─{R},2064
                             ├─{R},2065
                             └─{R},2066

Notes

This issue can be reproduced in VS Code: No, this works well on vanilla VS Code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions