Terminal fails to launch due to outdated libnode.so dependency on Linux
- 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.
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
Assessment
This issue has not been assessed yet.