neoclide / coc-tsserver

Tsserver extension for coc.nvim that provide rich features like VSCode for javascript & typescript
MIT License
1.05k stars 68 forks source link

Server receives SIGABRT constantly #413

Closed tflopezhidalgo closed 1 year ago

tflopezhidalgo commented 1 year ago

Hey there,

I'm having some issues with my server. It's being sigabrt'ed each 1 min. My project is written on typescript using pnpm

Specs:

Just to mention I followed: https://github.com/neoclide/coc-tsserver/blob/master/Readme.md#troubleshooting to get this information.

[Info - 03:51:06.659] Starting TS Server
[Info - 03:51:06.659] Using tsserver from: /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib
[Info - 03:51:06.660] <syntax> Log file: /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-5nIlry/tsserver.log
[Info - 03:51:06.660] <syntax> Forking...
[Info - 03:51:06.661] <syntax> Starting...
[Info - 03:51:06.661] <semantic> Log file: /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-yVC0mC/tsserver.log
[Info - 03:51:06.661] <semantic> Forking...
[Info - 03:51:06.662] <semantic> Starting...
[Trace - 03:51:06.663] <syntax> Sending request: configure (0). Response expected: no. Current queue length: 0
Arguments: {
    "hostInfo": "coc-nvim",
    "preferences": {
        "providePrefixAndSuffixTextForRename": true,
        "allowRenameOfImportPath": true,
        "includePackageJsonAutoImports": "auto"
    },
    "watchOptions": {}
}
[Trace - 03:51:06.663] <semantic> Sending request: configure (0). Response expected: no. Current queue length: 0
Arguments: {
    "hostInfo": "coc-nvim",
    "preferences": {
        "providePrefixAndSuffixTextForRename": true,
        "allowRenameOfImportPath": true,
        "includePackageJsonAutoImports": "auto"
    },
    "watchOptions": {}
}
[Trace - 03:51:06.663] <semantic> Sending request: compilerOptionsForInferredProjects (1). Response expected: no. Current queue length: 0
Arguments: {
    "options": {
        "module": "ESNext",
        "moduleResolution": "Node",
        "target": "ES2020",
        "jsx": "react",
        "strictNullChecks": true,
        "strictFunctionTypes": true,
        "sourceMap": true,
        "allowJs": true,
        "allowSyntheticDefaultImports": true,
        "allowNonTsExtensions": true
    }
}
[Trace - 03:51:06.820] <semantic> Event received: typingsInstallerPid (0).
Data: {
    "pid": 91132
}
[Trace - 03:51:06.965] <syntax> Sending request: updateOpen (1). Response expected: yes. Current queue length: 0
Arguments: {
    "changedFiles": [],
    "closedFiles": [],
    "openFiles": [
        {
            "file": "<my file>",
            "fileContent": "<my content>",
            "projectRootPath": "/private/var/git/repo",
            "scriptKindName": "TS"
        }
    ]
}
[Trace - 03:51:06.965] <semantic> Sending request: updateOpen (2). Response expected: yes. Current queue length: 0
Arguments: {
    "changedFiles": [],
    "closedFiles": [],
    "openFiles": [
        {
            "file": "<my file>",
            "fileContent": "<my content>",
            "projectRootPath": "/private/var/git/repo",
            "scriptKindName": "TS"
        }
    ]
}
[Trace - 03:51:06.969] <semantic> Event received: projectLoadingStart (0).
Data: {
    "projectName": "/private/var/git/repo/tsconfig.json",
    "reason": "Creating possible configured project for <my file> to open"
}
[Trace - 03:51:07.195] <syntax> Response received: updateOpen (1). Request took 230 ms. Success: true 
Result: true
[Error - 03:51:35.416] {"code":null,"signal":"SIGABRT"}
[Error - 03:51:35.416] TSServer exited. Code: null. Signal: SIGABRT
[Info - 03:51:35.416] TSServer log file: /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-yVC0mC/tsserver.log
[Info - 03:51:35.416] Starting TS Server
[Info - 03:51:35.416] Using tsserver from: /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib
[Info - 03:51:35.417] <syntax> Log file: /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-vrPKwc/tsserver.log
[Info - 03:51:35.417] <syntax> Forking...
[Info - 03:51:35.419] <syntax> Starting...
[Info - 03:51:35.419] <semantic> Log file: /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-tUZ0Af/tsserver.log
[Info - 03:51:35.419] <semantic> Forking...
[Info - 03:51:35.420] <semantic> Starting...
[Trace - 03:51:35.422] <semantic> Canceled request with sequence number 3
[
...
and so

tsserver.log content:

Info 0    [00:51:06.810] Starting TS Server
Info 1    [00:51:06.810] Version: 4.9.4
Info 2    [00:51:06.810] Arguments: /nix/store/rfsddap2qndffcb31gh9rafsvjiykpz0-nodejs-16.15.0/bin/node /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver/3a822022090a252f7407/tscancellation-0f68e1e21dd4ca168492.tmp* --logVerbosity verbose --logFile /var/folders/k_/xbz7__yd039f7jxvrsw10cyc0000gp/T/nvim.tomas/LAQ0Hx/coc-tsserver-log/tsserver-log-5nIlry/tsserver.log --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc
Info 3    [00:51:06.810] Platform: darwin NodeVersion: 16 CaseSensitive: false
Info 4    [00:51:06.810] ServerMode: 1 syntaxOnly: false hasUnknownServerMode: undefined
Info 5    [00:51:06.814] request:
    {
      "seq": 0,
      "type": "request",
      "command": "configure",
      "arguments": {
        "hostInfo": "coc-nvim",
        "preferences": {
          "providePrefixAndSuffixTextForRename": true,
          "allowRenameOfImportPath": true,
          "includePackageJsonAutoImports": "auto"
        },
        "watchOptions": {}
      }
    }
Info 6    [00:51:06.814] Host information coc-nvim
Info 7    [00:51:06.814] Host watch options changed to undefined, it will be take effect for next watches.
Info 8    [00:51:06.815] response:
    {"seq":0,"type":"response","command":"configure","request_seq":0,"success":true}
Perf 9    [00:51:06.815] 0::configure: async elapsed time (in milliseconds) 0.5050
Info 10   [00:51:06.966] request:
    {
      "seq": 1,
      "type": "request",
      "command": "updateOpen",
      "arguments": {
        "changedFiles": [],
        "closedFiles": [],
        "openFiles": [
          {
            "file": "<my file>",
            "fileContent": "<file content>",
            "projectRootPath": "/private/var/git/repo",
            "scriptKindName": "TS"
          }
        ]
      }
    }
Info 11   [00:51:06.968] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
Info 12   [00:51:07.194] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed: 226.14620804786682ms
Info 13   [00:51:07.194] Project '/dev/null/inferredProject1*' (Inferred)
Info 14   [00:51:07.195]    Files (6)
    /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts
    /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.es5.d.ts
    /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.dom.d.ts
    /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.webworker.importscripts.d.ts
    /Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.scripthost.d.ts
    /private/var/git/lattice/apps/weaver/src/modules/integrations/apis/zenefits.ts

    ../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts
      Default library for target 'es5'
    ../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.es5.d.ts
      Library referenced via 'es5' from file '../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts'
    ../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.dom.d.ts
      Library referenced via 'dom' from file '../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts'
    ../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.webworker.importscripts.d.ts
      Library referenced via 'webworker.importscripts' from file '../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts'
    ../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.scripthost.d.ts
      Library referenced via 'scripthost' from file '../../../../Users/tomas/.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib/lib.d.ts'
    <my file>
      Root file specified for compilation

Info 15   [00:51:07.195] -----------------------------------------------
Info 16   [00:51:07.195] Project '/dev/null/inferredProject1*' (Inferred)
Info 16   [00:51:07.195]    Files (6)

Info 16   [00:51:07.195] -----------------------------------------------
Info 16   [00:51:07.195] Open files: 
Info 16   [00:51:07.195]    FileName: <my file> ProjectRootPath: /private/var/git/repo
Info 16   [00:51:07.195]        Projects: /dev/null/inferredProject1*
Perf 16   [00:51:07.195] 1::updateOpen: elapsed time (in milliseconds) 229.5960
Info 17   [00:51:07.195] response:
    {"seq":0,"type":"response","command":"updateOpen","request_seq":1,"success":true,"performanceData":{"updateGraphDurationMs":226.14620804786682},"body":true}

Thanks in advance 👋

chemzqm commented 1 year ago

Should be signal from your system

tflopezhidalgo commented 1 year ago

Hey @chemzqm any way I could trace where that signal is coming from? any logger statement I could add to know more information? Thanks

chemzqm commented 1 year ago

You need check your system logger, could be the maximum watching files count exceeded.

tflopezhidalgo commented 1 year ago

Okay, I finally got with the root cause. My server was dying due to OOM error

https://github.com/neoclide/coc-tsserver/blob/master/package.json#L161 this lines sets max amount of memory to 3GB so I just added another GB making it 4GB. Not sure if there's a way I can provide some mechanism for having this value being dynamically set but if so let me know and I'll just open a PR

Thanks @chemzqm for you help!

chemzqm commented 1 year ago

Should be issue with tsserver, the memory value is the same as VSCode, consider report to https://github.com/microsoft/TypeScript