zls icon indicating copy to clipboard operation
zls copied to clipboard

zls panic "reached unreachable code"

Open Hanaasagi opened this issue 2 years ago • 2 comments

Zig Version

0.11.0-dev.3312+ab37ab33c

Zig Language Server Version

5d53f0104fe6742a28592094f9f7de5060a6f07c

Steps to Reproduce

Currently, I don't know how to reproduce this issue. Here is the full panic log for zls.

[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "thread 1895145 panic: reached unreachable code\n/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/debug.zig:260:14: 0x37c59c in assert (zls)\n    if (!ok) unreachable; // assertion failure\n             ^\n/home/kumiko/zig/zls/src/offsets.zig:49:21: 0x466d06 in positionToIndex (zls)\n    std.debug.assert(line == position.line);\n                    ^\n/home/kumiko/zig/zls/src/offsets.zig:189:31: 0x45ca3e in rangeToLoc (zls)\n        .end = positionToIndex(text, range.end, encoding),\n                              ^\n/home/kumiko/zig/zls/src/diff.zig:101:39: 0x45c642 in applyContentChanges (zls)\n        const loc = offsets.rangeToLoc(text_array.items, range, encoding);\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "                                      ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zls/src/Server.zig:774:50: 0x41f3e1 in changeDocumentHandler (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "    const new_text = try diff.applyContentChanges(server.allocator, handl"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "e.text, notification.contentChanges, server.offset_encoding);\n                                                 ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zls/src/Server.zig:1509:35: 0x3b0e32 in processMessage (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "                break :blk h"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "andler(server, params) catch |err| {\n                                  ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zls/src/Server.zig:1365:26: 0x38dc2d in processJsonRpc (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "    server.processMessage(message) c"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "atch |err| switch (message) {\n                         ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zls/src/main.zig:84:30: 0x38d43a in loop (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "        ser"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "ver.processJsonRpc(json_message);\n                             ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zls/src/main.zig:417:13: 0x38e6f8 in main (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "    try loop(server, re"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "cord_file, replay_file);\n            ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/start.zig:609:37: 0x3775de in posixCallMainAndExit (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "            const result = root.main("
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        ") catch |err| {\n                                    ^\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/start.zig:368:5: 0x377041 in _start (zls)\n"
[ERROR][2023-06-02 22:43:13] .../vim/lsp/rpc.lua:734    "rpc"   "zls"   "stderr"        "    @call(.never_inline, posixCallMainAndExit, .{});\n    ^\n"

Location that where the panic occurred:

https://github.com/zigtools/zls/blob/f96b226b4d6db252d174221df2b1f97e2c54ccff/src/offsets.zig#L49

Expected Behavior

no panic.

Actual Behavior

panic

Hanaasagi avatar Jun 02 '23 14:06 Hanaasagi

After formatted

thread 1895145 panic: reached unreachable code
/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/debug.zig:260:14: 0x37c59c in assert (zls)
    if (!ok) unreachable; // assertion failure
             ^
/home/kumiko/zig/zls/src/offsets.zig:49:21: 0x466d06 in positionToIndex (zls)
    std.debug.assert(line == position.line);
                    ^
/home/kumiko/zig/zls/src/offsets.zig:189:31: 0x45ca3e in rangeToLoc (zls)
        .end = positionToIndex(text, range.end, encoding),
                              ^
/home/kumiko/zig/zls/src/diff.zig:101:39: 0x45c642 in applyContentChanges (zls)
        const loc = offsets.rangeToLoc(text_array.items, range, encoding);
                                      ^
/home/kumiko/zig/zls/src/Server.zig:774:50: 0x41f3e1 in changeDocumentHandler (zls)
    const new_text = try diff.applyContentChanges(server.allocator, handle.text, notification.contentChanges, server.offset_encoding);
                                                 ^
/home/kumiko/zig/zls/src/Server.zig:1509:35: 0x3b0e32 in processMessage (zls)
                break :blk handler(server, params) catch |err| {
                                  ^
/home/kumiko/zig/zls/src/Server.zig:1365:26: 0x38dc2d in processJsonRpc (zls)
    server.processMessage(message) catch |err| switch (message) {
                         ^
/home/kumiko/zig/zls/src/main.zig:84:30: 0x38d43a in loop (zls)
        server.processJsonRpc(json_message);
                             ^
/home/kumiko/zig/zls/src/main.zig:417:13: 0x38e6f8 in main (zls)
    try loop(server, record_file, replay_file);
            ^
/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/start.zig:609:37: 0x3775de in posixCallMainAndExit (zls)
            const result = root.main() catch |err| {
                                    ^
/home/kumiko/zig/zig-linux-x86_64-0.11.0-dev.3312+ab37ab33c/lib/std/start.zig:368:5: 0x377041 in _start (zls)
    @call(.never_inline, posixCallMainAndExit, .{});
    ^

Hanaasagi avatar Jun 02 '23 14:06 Hanaasagi

possibly related to #985

Techatrix avatar Jul 28 '23 00:07 Techatrix