Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Accept initialize requests with out-of-range process IDs

Open Beginner friendly
#551 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
70/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
rust
Domain
compilers

Research direction

The issue is in the workspace actor's decoding of InitializeParams. Look at the code that handles the initialize request, likely in a file related to the workspace actor or LSP initialization. The test a_process_id_that_cannot_be_represented_installs_no_monitor is a starting point but needs to be updated or a new workspace-level test added. Ensure the decode succeeds for out-of-range processId by either ignoring the field or handling it gracefully, while parent::process_id remains unchanged. Verify by running the new test and any existing LSP tests.

Written by the indexing model from the issue text.

Description

bug language-server

Context

Since #549, the workspace actor decodes initialize parameters as gen-lsp-types' InitializeParams, which types processId as Option<i32>. lsp-types 0.95 typed it as Option<u32>.

An editor that sends a processId above 2³¹−1 now has initialize rejected with InvalidParams (invalid value: integer '2147483648', expected i32), so the language server cannot start. The workspace does not use processId at all.

The protocol actor already handles this case on its own: parent::process_id reads processId from the raw JSON and declines to monitor an ID that does not fit in i32. The server test a_process_id_that_cannot_be_represented_installs_no_monitor expresses that intent, but it still passes because it uses a fake workspace and never exercises the real decoding.

LSP defines integer as a signed 32-bit value, so such IDs are outside the specification, and they are rare in practice. The server should still not refuse to start over a field the workspace ignores.

Goal

An out-of-range processId must not prevent initialize from succeeding. Parent process monitoring keeps its current behavior of skipping IDs it cannot represent.

Scope

  • Decode only the initialize fields the workspace uses (capabilities and workspace folders), or otherwise stop an unrepresentable processId from failing the decode.
  • Keep parent::process_id as the single owner of processId interpretation.

Tests

  • A workspace-level test that sends initialize with processId: 2147483648 and receives an InitializeResult.
  • Consider covering the same case end to end, since the existing server test cannot observe workspace decoding.
Dominant language
Rust
Stars
102
Forks
11
Avg merge
3h 31m
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from purefunctor/purescript-iris

All issues in purefunctor/purescript-iris

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.