Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lsp-test seems to have a hard time with large files. GHC 9.4, 9.6 linux affected. #497

Open
joyfulmantis opened this issue Jun 30, 2023 · 0 comments
Labels
component: lsp-test Specific issues of lsp-test package help wanted type: bug

Comments

@joyfulmantis
Copy link
Collaborator

joyfulmantis commented Jun 30, 2023

This is a weird bug, as it's only triggered on specific GHC and distro versions. Specifically 9.4 and 9.6 with Linux (windows unaffected). I ran into this bug in the HLS CI, and later reproduced it on my own machine. When opening a large file the test will just stop after sending a TextDocumentDidOpen notification, and not even time out. No useful error or debug messages either.
The file tested was
https://github.com/haskell/haskell-language-server/blob/0271ce212af57dc8ff52e6a80d0ed404cb57853e/plugins/hls-overloaded-record-dot-plugin/test/testdata/Benchmark.hs
The logs when the test is terminated with Ctrl+c after around ~50 min are (contents of TextDocumentDidOpen retracted to keep the bug short enough to post)


<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - aeson-pretty-0.8.9 (exposed by flag -package-id aeson-pretty-0.8.9-cc94f32925968947709948654d87925e0922235304fcc388e008f3ecab298408)
      - implicit-hie-0.1.2.7 (exposed by flag -package-id implicit-hie-0.1.2.7-ec013f88f8be03cfe17053bb54b6347a64e275332a18cb0615e9c83d0d7deb49)
2023-06-30T14:51:22.614391Z | Info | Heap statistics are not enabled (RTS option -T is needed)
2023-06-30T14:51:22.615094Z | Info | Starting LSP server...
  If you are seeing this in a terminal, you probably should have run WITHOUT the --lsp option!
  PluginIds: [ overloaded-record-dot
             , test
             , ghcide-completions
             , block-command
             , ghcide-hover-and-symbols
             , ghcide-type-lenses
             , ghcide-core ]
2023-06-30T14:51:22.615483Z | Info | Starting server
2023-06-30T14:51:22.624101Z | Info | Started LSP server in 0.01s
2023-06-30T14:51:22.630441Z | Debug | executing command: cabal exec -v0 -- ghc --print-libdir
2023-06-30T14:51:24.150102Z | Debug | executing command: cabal exec -v0 -- ghc -package-env=- -ignore-dot-ghci -e Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)
2023-06-30T14:51:25.142728Z | Debug | executing command: cabal --builddir=/home/zhangtianci/.cache/hie-bios/dist-haskell-language-server-d168a6a0bd3fe20ed93b29bb35ffd16e v2-exec --with-compiler /home/zhangtianci/.cache/hie-bios/wrapper-b54f81dea4c0e6d1626911c526bc4e36 --with-hc-pkg /home/zhangtianci/.cache/hie-bios/ghc-pkg-018ac07ec696acc23a6bacd0dc34d144 ghc -v0 -- --print-libdir
2023-06-30T14:51:26.634745Z | Debug | Setting initial dynflags...
2023-06-30T14:51:26.634879Z | Debug | shouldRunSubset: True
2023-06-30T14:51:26.635007Z | Debug | Initializing exports map from hiedb
2023-06-30T14:51:26.635327Z | Info | Registering IDE configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri (-2424510451474401224) "file:///home/zhangtianci/MySourceCode/haskell-language-server/plugins/hls-overloaded-record-dot-plugin/test/testdata"], clientSettings = hashed Nothing}
^C2023-06-30T15:37:31.072886Z | Debug | Done initializing exports map from hiedb. Size: 1
2023-06-30T15:37:31.074712Z | Debug | Shake session initialized
2023-06-30T15:37:31.080661Z | Debug | Received shutdown message
2023-06-30T15:37:31.083103Z | Debug | Set files of interest to: fromList [(NormalizedFilePath "/home/zhangtianci/MySourceCode/haskell-language-server/plugins/hls-overloaded-record-dot-plugin/test/testdata/Benchmark.hs",Modified {firstOpen = True})]
2023-06-30T15:37:31.088110Z | Info | Reactor thread stopped
2023-06-30T15:37:31.088255Z | Debug | Finished build session
AsyncCancelled

and

Running 1 test suites...
Test suite tests: RUNNING...
overloaded-record-dot
  Benchmark without resolve: �[36m--> {
    "id": 0,
    "jsonrpc": "2.0",
    "method": "initialize",
    "params": {
        "capabilities": {
            "general": {
                "markdown": {
                    "allowedTags": [],
                    "parser": ""
                },
                "regularExpressions": {
                    "engine": ""
                },
                "staleRequestSupport": {
                    "cancel": true,
                    "retryOnContentModified": []
                }
            },
            "textDocument": {
                "callHierarchy": {
                    "dynamicRegistration": true
                },
                "codeAction": {
                    "codeActionLiteralSupport": {
                        "codeActionKind": {
                            "valueSet": [
                                "",
                                "quickfix",
                                "refactor",
                                "refactor.extract",
                                "refactor.inline",
                                "refactor.rewrite",
                                "source",
                                "source.organizeImports",
                                "source.fixAll"
                            ]
                        }
                    },
                    "dataSupport": false,
                    "disabledSupport": true,
                    "dynamicRegistration": true,
                    "honorsChangeAnnotations": true,
                    "isPreferredSupport": true
                },
                "codeLens": {
                    "dynamicRegistration": true
                },
                "colorProvider": {
                    "dynamicRegistration": true
                },
                "completion": {
                    "completionItem": {
                        "commitCharactersSupport": true,
                        "deprecatedSupport": true,
                        "documentationFormat": [
                            "plaintext",
                            "markdown"
                        ],
                        "insertReplaceSupport": true,
                        "insertTextModeSupport": {
                            "valueSet": []
                        },
                        "labelDetailsSupport": true,
                        "preselectSupport": true,
                        "resolveSupport": {
                            "properties": [
                                "documentation",
                                "details"
                            ]
                        },
                        "snippetSupport": true,
                        "tagSupport": {
                            "valueSet": []
                        }
                    },
                    "completionItemKind": {
                        "valueSet": [
                            1,
                            2,
                            3,
                            4,
                            5,
                            6,
                            7,
                            8,
                            9,
                            10,
                            11,
                            12,
                            13,
                            14,
                            15,
                            16,
                            17,
                            18,
                            19,
                            20,
                            21,
                            22,
                            23,
                            24,
                            25
                        ]
                    },
                    "completionList": {
                        "itemDefaults": []
                    },
                    "contextSupport": true,
                    "dynamicRegistration": true,
                    "insertTextMode": 1
                },
                "declaration": {
                    "dynamicRegistration": true,
                    "linkSupport": true
                },
                "definition": {
                    "dynamicRegistration": true,
                    "linkSupport": true
                },
                "documentHighlight": {
                    "dynamicRegistration": true
                },
                "documentLink": {
                    "dynamicRegistration": true,
                    "tooltipSupport": true
                },
                "documentSymbol": {
                    "dynamicRegistration": true,
                    "hierarchicalDocumentSymbolSupport": true,
                    "labelSupport": true,
                    "symbolKind": {
                        "valueSet": [
                            1,
                            2,
                            3,
                            4,
                            5,
                            6,
                            7,
                            8,
                            9,
                            10,
                            11,
                            12,
                            13,
                            14,
                            15,
                            16,
                            17,
                            18,
                            19,
                            20,
                            21,
                            22,
                            23,
                            24,
                            25,
                            26
                        ]
                    },
                    "tagSupport": {
                        "valueSet": [
                            1
                        ]
                    }
                },
                "foldingRange": {
                    "dynamicRegistration": true,
                    "foldingRange": {
                        "collapsedText": true
                    },
                    "foldingRangeKind": {
                        "valueSet": []
                    }
                },
                "formatting": {
                    "dynamicRegistration": true
                },
                "hover": {
                    "contentFormat": [
                        "plaintext",
                        "markdown"
                    ],
                    "dynamicRegistration": true
                },
                "implementation": {
                    "dynamicRegistration": true,
                    "linkSupport": true
                },
                "onTypeFormatting": {
                    "dynamicRegistration": true
                },
                "publishDiagnostics": {
                    "codeDescriptionSupport": true,
                    "dataSupport": true,
                    "relatedInformation": true,
                    "tagSupport": {
                        "valueSet": [
                            1,
                            2
                        ]
                    },
                    "versionSupport": true
                },
                "rangeFormatting": {
                    "dynamicRegistration": true
                },
                "references": {
                    "dynamicRegistration": true
                },
                "rename": {
                    "dynamicRegistration": true,
                    "honorsChangeAnnotations": true,
                    "prepareSupport": true,
                    "prepareSupportDefaultBehavior": 1
                },
                "selectionRange": {
                    "dynamicRegistration": true
                },
                "semanticTokens": {
                    "augmentsSyntaxTokens": true,
                    "dynamicRegistration": true,
                    "formats": [
                        "relative"
                    ],
                    "multilineTokenSupport": true,
                    "overlappingTokenSupport": true,
                    "requests": {
                        "full": {
                            "delta": true
                        },
                        "range": true
                    },
                    "serverCancelSupport": true,
                    "tokenModifiers": [
                        "declaration",
                        "definition",
                        "readonly",
                        "static",
                        "deprecated",
                        "abstract",
                        "async",
                        "modification",
                        "documentation",
                        "defaultLibrary"
                    ],
                    "tokenTypes": [
                        "namespace",
                        "type",
                        "class",
                        "enum",
                        "interface",
                        "struct",
                        "typeParameter",
                        "parameter",
                        "variable",
                        "property",
                        "enumMember",
                        "event",
                        "function",
                        "method",
                        "macro",
                        "keyword",
                        "modifier",
                        "comment",
                        "string",
                        "number",
                        "regexp",
                        "operator",
                        "decorator"
                    ]
                },
                "signatureHelp": {
                    "contextSupport": true,
                    "dynamicRegistration": true,
                    "signatureInformation": {
                        "activeParameterSupport": true,
                        "documentationFormat": [
                            "plaintext",
                            "markdown"
                        ],
                        "parameterInformation": {
                            "labelOffsetSupport": true
                        }
                    }
                },
                "synchronization": {
                    "didSave": true,
                    "dynamicRegistration": true,
                    "willSave": true,
                    "willSaveWaitUntil": true
                },
                "typeDefinition": {
                    "dynamicRegistration": true,
                    "linkSupport": true
                }
            },
            "window": {
                "showDocument": {
                    "support": true
                },
                "showMessage": {},
                "workDoneProgress": true
            },
            "workspace": {
                "applyEdit": true,
                "configuration": true,
                "didChangeConfiguration": {
                    "dynamicRegistration": true
                },
                "didChangeWatchedFiles": {
                    "dynamicRegistration": true,
                    "relativePatternSupport": true
                },
                "executeCommand": {
                    "dynamicRegistration": true
                },
                "semanticTokens": {
                    "refreshSupport": true
                },
                "symbol": {
                    "dynamicRegistration": true,
                    "resolveSupport": {
                        "properties": []
                    },
                    "symbolKind": {
                        "valueSet": [
                            1,
                            2,
                            3,
                            4,
                            5,
                            6,
                            7,
                            8,
                            9,
                            10,
                            11,
                            12,
                            13,
                            14,
                            15,
                            16,
                            17,
                            18,
                            19,
                            20,
                            21,
                            22,
                            23,
                            24,
                            25,
                            26
                        ]
                    },
                    "tagSupport": {
                        "valueSet": [
                            1
                        ]
                    }
                },
                "workspaceEdit": {
                    "changeAnnotationSupport": {
                        "groupsOnLabel": true
                    },
                    "documentChanges": true,
                    "normalizesLineEndings": true,
                    "resourceOperations": [
                        "create",
                        "delete",
                        "rename"
                    ]
                },
                "workspaceFolders": true
            }
        },
        "clientInfo": {
            "name": "lsp-test",
            "version": "0.15.0.0"
        },
        "locale": "/home/zhangtianci/MySourceCode/haskell-language-server/plugins/hls-overloaded-record-dot-plugin/test/testdata",
        "processId": 411225,
        "rootUri": "file:///home/zhangtianci/MySourceCode/haskell-language-server/plugins/hls-overloaded-record-dot-plugin/test/testdata",
        "trace": "off"
    }
}
�[0m�[35m<-- {
    "id": 0,
    "jsonrpc": "2.0",
    "result": {
        "capabilities": {
            "callHierarchyProvider": false,
            "codeActionProvider": {
                "resolveProvider": true
            },
            "codeLensProvider": {
                "resolveProvider": false,
                "workDoneProgress": false
            },
            "colorProvider": false,
            "completionProvider": {
                "resolveProvider": true,
                "triggerCharacters": [
                    "."
                ]
            },
            "declarationProvider": false,
            "definitionProvider": true,
            "documentFormattingProvider": false,
            "documentHighlightProvider": true,
            "documentRangeFormattingProvider": false,
            "documentSymbolProvider": true,
            "executeCommandProvider": {
                "commands": [
                    "411225:block-command:ghcide.command.block",
                    "411225:ghcide-type-lenses:typesignature.add"
                ]
            },
            "foldingRangeProvider": false,
            "hoverProvider": true,
            "implementationProvider": false,
            "referencesProvider": true,
            "renameProvider": false,
            "selectionRangeProvider": false,
            "semanticTokensProvider": {
                "legend": {
                    "tokenModifiers": [
                        "declaration",
                        "definition",
                        "readonly",
                        "static",
                        "deprecated",
                        "abstract",
                        "async",
                        "modification",
                        "documentation",
                        "defaultLibrary"
                    ],
                    "tokenTypes": [
                        "namespace",
                        "type",
                        "class",
                        "enum",
                        "interface",
                        "struct",
                        "typeParameter",
                        "parameter",
                        "variable",
                        "property",
                        "enumMember",
                        "event",
                        "function",
                        "method",
                        "macro",
                        "keyword",
                        "modifier",
                        "comment",
                        "string",
                        "number",
                        "regexp",
                        "operator",
                        "decorator"
                    ]
                }
            },
            "textDocumentSync": {
                "change": 2,
                "openClose": true,
                "save": {}
            },
            "typeDefinitionProvider": true,
            "workspace": {
                "workspaceFolders": {
                    "changeNotifications": true,
                    "supported": true
                }
            },
            "workspaceSymbolProvider": true
        }
    }
}
�[0m�[36m--> {
    "jsonrpc": "2.0",
    "method": "initialized",
    "params": {}
}
�[0m�[36m--> {
    "jsonrpc": "2.0",
    "method": "textDocument/didOpen",
    "params": {
        "textDocument": {
            "languageId": "haskell",
            "text": "[retracted to keep issue length under the maximum of 65536 characters]",
            "uri": "file:///home/zhangtianci/MySourceCode/haskell-language-server/plugins/hls-overloaded-record-dot-plugin/test/testdata/Benchmark.hs",
            "version": 0
        }
    }
}
�[0m�[36m--> {
    "id": 1,
    "jsonrpc": "2.0",
    "method": "test",
    "params": {
        "tag": "WaitForShakeQueue"
    }
}
�[0m�[36m--> {
    "id": 0,
    "jsonrpc": "2.0",
    "method": "shutdown",
    "params": null
}
�[0m�[35m<-- {
    "jsonrpc": "2.0",
    "method": "kick/start",
    "params": []
}
�[0m�[36m--> {
    "id": 0,
    "jsonrpc": "2.0",
    "result": null
}
�[0m�[35m<-- {
    "id": 0,
    "jsonrpc": "2.0",
    "method": "window/workDoneProgress/create",
    "params": {
        "token": "4"
    }
}
�[0m�[35m<-- {
    "id": 1,
    "jsonrpc": "2.0",
    "method": "client/registerCapability",
    "params": {
        "registrations": [
            {
                "id": "globalFileWatches",
                "method": "workspace/didChangeWatchedFiles",
                "registerOptions": {
                    "watchers": [
                        {
                            "globPattern": "**/*.hs",
                            "kind": 7
                        },
                        {
                            "globPattern": "**/*.hs-boot",
                            "kind": 7
                        },
                        {
                            "globPattern": "**/*.lhs",
                            "kind": 7
                        },
                        {
                            "globPattern": "**/*.lhs-boot",
                            "kind": 7
                        }
                    ]
                }
            }
        ]
    }
}
�[0m�[35m<-- {
    "jsonrpc": "2.0",
    "method": "kick/done",
    "params": []
}
�[0m�[35m<-- {
    "id": 0,
    "jsonrpc": "2.0",
    "result": null
}
�[0m�[36m--> {
    "jsonrpc": "2.0",
    "method": "exit",
    "params": null
}
�[0m
@joyfulmantis joyfulmantis added type: bug component: lsp-test Specific issues of lsp-test package help wanted labels Jun 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: lsp-test Specific issues of lsp-test package help wanted type: bug
Projects
None yet
Development

No branches or pull requests

1 participant