microsoft / microsoft/vscode

Terminal fails to launch due to outdated libnode.so dependency on Linux

Open
#327,229 0 comments 0 reactions 1 assignee Claimed by @anthonykim1 View on GitHub
bug terminal
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

**Does this issue occur when all extensions are disabled?**: Yes

- VS Code Version: code-oss (latest)
- OS Version: Debian Linux (x86_64)

## Steps to Reproduce

1. Install code-oss on Debian Linux
2. Launch code-oss from terminal
3. Attempt to open the Terminal panel

## Description

VS Code (code-oss) fails to launch the integrated terminal due to an outdated libnode.so dependency. When Node.js is updated on the system, the installed libnode version becomes newer than the version that unixTerminal.js expects, causing the terminal to crash.

Image

The issue manifests when:
- System libnode is updated to a newer version (e.g., libnode.so.120)
- code-oss still references the old version (e.g., libnode.so.115)
- Terminal attempts to load and system cannot find the expected library version

## Expected Behavior

Terminal should launch successfully and allow command execution, or gracefully handle version mismatches by linking to the available system libnode version.

## Actual Behavior

Terminal fails to initialize and causes a system crash (physhost crash) due to library version mismatch. The process crashes when unixTerminal.js attempts to load a libnode version that doesn't exist on the system.

## Error

```
Error: libnode.so.115: cannot open shared object file: No such file or directory
```

## Workaround

I've documented a temporary solution using symbolic links:
https://gist.github.com/CyberMan571/f98d6c633db2f5ed522015b782603265

**Temporary Fix:**
```bash
# Find the installed libnode version
ls -la /usr/lib/x86_64-linux-gnu/libnode.so* 2>/dev/null || ls -la /usr/lib/libnode.so*

# Create a symbolic link to the newer version
# Replace XX with your installed version number (e.g., 120)
sudo ln -s /usr/lib/x86_64-linux-gnu/libnode.so.XX /usr/lib/x86_64-linux-gnu/libnode.so.115
```

## Root Cause

The `unixTerminal.js` module has a hard-coded dependency on a specific libnode version. When the system's Node.js library is updated, this binary dependency is no longer satisfied, causing terminal initialization to fail.

## Proposed Solution

1. Update unixTerminal.js to dynamically detect and link against the available system libnode version
2. Implement version compatibility checking during terminal initialization
3. Provide a fallback mechanism for cases where exact version match is not found

## Additional Context

This issue affects users on Linux systems that receive Node.js updates, particularly on rolling-release distributions like Kali Linux. The hard-coded dependency prevents terminal usage until manual intervention is performed.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.