microsoft / vscode-azure-account

Common Azure Login extension for VS Code
https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account
Other
139 stars 129 forks source link

WSL: Cannot sign in #109

Closed sirredbeard closed 2 years ago

sirredbeard commented 5 years ago

This issue was first reported to WLinux here.

I have confirmed the bug on WLinux and I can duplicate across other WSL distros.

This appears to affect both Code and Code Insiders.

This is not limited to Azure storage bug affects all the Azure plug-ins.

This may be related to #108 but there is not enough information in that bug to determine.

This may also be related to #59 but installing (and manually running) gnome-keychain does not fix.

Initial Report:

Describe the bug Install any VSCode extension that requires login to Azure. i.e. "Azure Tools" extension. Although it happens with any VSCode extension that tried to login into Azure. To Reproduce Steps to reproduce the behavior:

  1. Install VSCode
  2. Install Azure Tools Extension
  3. Try to login to Azure using new Tab
  4. Looks like everything works but nothing happens Expected behavior To see my Azure resources in VSCode

My notes:

I can confirm this bug. This bug can be reproduced on other WSL distros as well, it is not isolated to WLinux. Adding Azure extensions to VS Code, then logging in by OAUTH2 via microsoft.com/devicelogin does not appear to 'stick'. Code says 'waiting for Azure login', and then reverts to options to Sign in or Create an account.

48390743-7f1d9a80-e6d1-11e8-9fab-ba4aa188e36a

48390880-11be3980-e6d2-11e8-95ce-f8eb300d62f3

48390797-bab86480-e6d1-11e8-896f-fae275404216

48390866-023ef080-e6d2-11e8-83c6-307c9db0ebec

48390859-fa7f4c00-e6d1-11e8-9707-4cd72300e673

48390354-8348b880-e6cf-11e8-9bd0-8957734e0bba

48390794-b8560a80-e6d1-11e8-986b-24af6234d7a6

capture

chrmarti commented 5 years ago

Make sure you are using the latest version of the extension (currently 0.6.1). Is there anything in the console? (Help > Toggle Developer Tools)

AceHack commented 5 years ago

Can confirm this is a problem using the latest version.

1542123781330.log

There are several extensions that have the error Initialize log file failed: Path must be a string. Received undefined

There is also [ms-vsts.team]Cannot read property 'cleanup' of undefined e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:42

TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.fsharp. Old grammar file: file:///usr/share/code/resources/app/extensions/fsharp/syntaxes/fsharp.tmLanguage.json. New grammar file: file:///home/acehack/.vscode/extensions/ionide.ionide-fsharp-3.29.0/syntaxes/fsharp.json e.register @ TMSyntax.ts:47 TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.yaml. Old grammar file: file:///usr/share/code/resources/app/extensions/yaml/syntaxes/yaml.tmLanguage.json. New grammar file: file:///home/acehack/.vscode/extensions/ms-azure-devops.azure-pipelines-1.143.0/syntaxes/yaml.tmLanguage.json e.register @ TMSyntax.ts:47 TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.sql. Old grammar file: file:///usr/share/code/resources/app/extensions/sql/syntaxes/sql.tmLanguage.json. New grammar file: file:///home/acehack/.vscode/extensions/ms-mssql.mssql-1.4.0/syntaxes/SQL.plist e.register @ TMSyntax.ts:47 TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.ruby. Old grammar file: file:///usr/share/code/resources/app/extensions/ruby/syntaxes/ruby.tmLanguage.json. New grammar file: file:///home/acehack/.vscode/extensions/rebornix.ruby-0.20.0/syntaxes/ruby.cson.json e.register @ TMSyntax.ts:47 TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.yaml. Old grammar file: file:///home/acehack/.vscode/extensions/ms-azure-devops.azure-pipelines-1.143.0/syntaxes/yaml.tmLanguage.json. New grammar file: file:///home/acehack/.vscode/extensions/redhat.vscode-yaml-0.1.0/syntaxes/yaml.tmLanguage.json e.register @ TMSyntax.ts:47 TMSyntax.ts:47 Overwriting grammar scope name to file mapping for scope source.sql. Old grammar file: file:///home/acehack/.vscode/extensions/ms-mssql.mssql-1.4.0/syntaxes/SQL.plist. New grammar file: file:///home/acehack/.vscode/extensions/usqlextpublisher.usql-vscode-ext-0.2.14/syntaxes/sql.tmLanguage e.register @ TMSyntax.ts:47 log.ts:157 INFO no standard startup: not just one text editor console.ts:134 [Extension Host] (11/13/2018, 10:24:57 AM) [ExtensionActivated] Extension has been activated! console.ts:134 [Extension Host] (11/13/2018, 10:24:57 AM) Spinning up telemetry client for id azure-pipelines, version 1.143.0 console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Create file systemwatcher with pattern /python console.ts:134 [Extension Host] Python Extension: Create file systemwatcher with pattern /*/python console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Display locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: Notify locators are locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Detected refreshing of Interpreters, Arg 1: {}, Return Value: console.ts:134 [Extension Host] Python Extension: Register Intepreter Watcher, Arg 1: undefined, Return Value: console.ts:134 [Extension Host] Python Extension: Build the workspace interpreter watcher, Arg 1: undefined, Return Value: UNABLE TO DETERMINE VALUE console.ts:134 [Extension Host] port:8008 console.ts:134 [Extension Host] activating extension console.ts:134 [Extension Host] Git extension API method 'getGitPath' is deprecated. t.log @ console.ts:134 5console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] rejected promise not handled within 1 second t.log @ console.ts:134 mainThreadExtensionService.ts:42 [VisualStudioOnlineApplicationInsights.application-insights]Path must be a string. Received undefined e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:42 mainThreadExtensionService.ts:43 TypeError: Path must be a string. Received undefined at assertPath (path.js:28:11) at Object.join (path.js:1251:7) at AppInsightsExtension. (/home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/AppInsightsExtension.js:103:36) at Generator.next () at /home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/AppInsightsExtension.js:10:71 at new Promise () at __awaiter (/home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/AppInsightsExtension.js:6:12) at AppInsightsExtension.LogPackagesTelemetry (/home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/AppInsightsExtension.js:99:16) at /home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/extension.js:39:36 at Generator.next () at fulfilled (/home/acehack/.vscode/extensions/visualstudioonlineapplicationinsights.application-insights-0.4.2/out/src/extension.js:4:58) at e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:43 console.ts:134 [Extension Host] 13 Nov 10:25:01 - [info]

Welcome to Node-RED

console.ts:134 [Extension Host] 13 Nov 10:25:01 - [info] Node-RED version: v0.18.4 console.ts:134 [Extension Host] 13 Nov 10:25:01 - [info] Node.js version: v8.9.3 console.ts:134 [Extension Host] 13 Nov 10:25:01 - [info] Linux 4.4.0-17763-Microsoft x64 LE console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Hide locator refreshing progress, , Return Value: console.ts:134 [Extension Host] Python Extension: All locators have completed locating, , Return Value: console.ts:134 [Extension Host] Python Extension: Checking whether locactors have completed locating, , Return Value: console.ts:134 [Extension Host] 13 Nov 10:25:02 - [info] Loading palette nodes console.ts:134 [Extension Host] 13 Nov 10:25:03 - [warn] ------------------------------------------------------ console.ts:134 [Extension Host] 13 Nov 10:25:03 - [warn] [node-red/rpi-gpio] Info : Ignoring Raspberry Pi specific node console.ts:134 [Extension Host] 13 Nov 10:25:03 - [warn] ------------------------------------------------------ console.ts:134 [Extension Host] 13 Nov 10:25:03 - [info] User directory : /home/acehack/.node-red console.ts:134 [Extension Host] 13 Nov 10:25:03 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable console.ts:134 [Extension Host] 13 Nov 10:25:03 - [info] Flows file : /home/acehack/.node-red/flows_RAL-ASTAINBA.json console.ts:134 [Extension Host] 13 Nov 10:25:04 - [info] Creating new flow file console.ts:134 [Extension Host] 13 Nov 10:25:04 - [info] Starting flows console.ts:134 [Extension Host] 13 Nov 10:25:04 - [info] Started flows console.ts:134 [Extension Host] runCommand platformio Array(1) Object console.ts:134 [Extension Host] Starting express server on port: 5515 notificationsAlerts.ts:40 Initialize log file failed: Path must be a string. Received undefined t.onDidNotificationChange @ notificationsAlerts.ts:40 console.ts:134 [Extension Host] using /home/acehack/.vscode/extensions/vsciot-vscode.vscode-iot-workbench-0.1.13/vendor/node-usb-native/lib/native/usb-native_Ubuntu14.04_2.0.2_x64.node console.ts:134 [Extension Host] Found PIO Core 3.6.2-a.2 console.ts:134 [Extension Host] runCommand platformio Array(7) Object console.ts:134 [Extension Host] Congratulations, your extension "vscode-iot-workbench" is now active! console.ts:134 [Extension Host] Starting express server on port: 5530 mainThreadExtensionService.ts:42 [ms-vsts.team]Cannot read property 'cleanup' of undefined e.$onExtensionRuntimeError @ mainThreadExtensionService.ts:42 mainThreadExtensionService.ts:43 TypeError: Cannot read property 'cleanup' of undefined at ExtensionManager.cleanup (/home/acehack/.vscode/extensions/ms-vsts.team-1.144.1/out/src/extensionmanager.js:573:29) at ExtensionManager.Reinitialize (/home/acehack/.vscode/extensions/ms-vsts.team-1.144.1/out/src/extensionmanager.js:77:14) at vscode_1.workspace.onDidChangeConfiguration (/home/acehack/.vscode/extensions/ms-vsts.team-1.144.1/out/src/extensionmanager.js:49:26) at e.fire (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:105:344) at e.$acceptConfigurationChanged (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:380:741) at t._doInvokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:609:757) at t._invokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:609:423) at t._receiveRequest (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:608:15) at t._receiveOneMessage (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:606:957) at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:604:773 at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:103:886 at e.fire (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:105:344) at a (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:156:881) at Socket._socketDataListener (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:157:95) at emitOne (events.js:116:13) at Socket.emit (events.js:211:7) at addChunk (_stream_readable.js:263:12) at readableAddChunk (_stream_readable.js:250:11) at Socket.Readable.push (_stream_readable.js:208:10) at Pipe.onread (net.js:594:20)

[Extension Host] Activating extension 'formulahendry.azure-storage-explorer' failed: Cannot find module './model/subscriptionNode'.

[Extension Host] Activating extension formulahendry.azure-storage-explorer failed: Cannot find module './model/subscriptionNode'

[Extension Host] Here is the error stack: Error: Cannot find module './model/subscriptionNode' at Function.Module._resolveFilename (module.js:543:15) at Function.Module._load (module.js:473:25) at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:713:896) at Function.o._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:677:885) at Function.r._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:643:436) at Module.require (module.js:586:17) at Module.patchedRequire [as require] (/home/acehack/.vscode/extensions/formulahendry.vscode-node-red-0.2.0/node_modules/diagnostic-channel/dist/src/patchRequire.js:14:46) at require (internal/module.js:11:18) at Object. (/home/acehack/.vscode/extensions/formulahendry.azure-storage-explorer-0.1.2/out/src/storageTreeDataProvider.js:15:28) at Object. (/home/acehack/.vscode/extensions/formulahendry.azure-storage-explorer-0.1.2/out/src/storageTreeDataProvider.js:64:3) at Module._compile (module.js:642:30) at Object.Module._extensions..js (module.js:653:10) at Module.load (module.js:561:32) at tryModuleLoad (module.js:504:12) at Function.Module._load (module.js:496:3) at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:713:896) at Function.o._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:677:885) at Function.r._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:643:436) at Module.require (module.js:586:17) at Module.patchedRequire [as require] (/home/acehack/.vscode/extensions/formulahendry.vscode-node-red-0.2.0/node_modules/diagnostic-channel/dist/src/patchRequire.js:14:46) at require (internal/module.js:11:18) at Object. (/home/acehack/.vscode/extensions/formulahendry.azure-storage-explorer-0.1.2/out/src/extension.js:5:35) at Object. (/home/acehack/.vscode/extensions/formulahendry.azure-storage-explorer-0.1.2/out/src/extension.js:92:3) at Module._compile (module.js:642:30) at Object.Module._extensions..js (module.js:653:10) at Module.load (module.js:561:32) at tryModuleLoad (module.js:504:12) at Function.Module._load (module.js:496:3) at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:713:896) at Function.o._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:677:885) at Function.r._load (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:643:436) at Module.require (module.js:586:17) at Module.patchedRequire [as require] (/home/acehack/.vscode/extensions/formulahendry.vscode-node-red-0.2.0/node_modules/diagnostic-channel/dist/src/patchRequire.js:14:46) at require (internal/module.js:11:18) at Function.i [as $nodeRequire] (/usr/share/code/resources/app/out/vs/loader.js:31:146) at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:704:967 at t._doActivateExtension (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:705:56) at t._activateExtension (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:703:854) at Object.actualActivateExtension (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:701:644) at e._activateExtension (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:309:880) at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:309:497 at Array.map () at e._activateExtensions (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:309:472) at e.activateByEvent (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:307:626) at t.activateByEvent (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:702:48) at t.$activateByEvent (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:706:431) at t._doInvokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:609:757) at t._invokeHandler (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:609:423) at t._receiveRequest (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:608:15) at t._receiveOneMessage (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:606:957) at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:604:773 at /usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:103:886 at e.fire (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:105:344) at a (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:156:881) at Socket._socketDataListener (/usr/share/code/resources/app/out/vs/workbench/node/extensionHostProcess.js:157:95) at emitOne (events.js:116:13) at Socket.emit (events.js:211:7) at addChunk (_stream_readable.js:263:12) at readableAddChunk (_stream_readable.js:250:11) at Socket.Readable.push (_stream_readable.js:208:10) at Pipe.onread (net.js:594:20)

Activating extension 'formulahendry.azure-storage-explorer' failed: Cannot find module './model/subscriptionNode'.

[Extension Host] Error: Unknown or unsupported transport “disabled” for address “disabled:”

chrmarti commented 5 years ago

The log messages indicate a problem with the Storage Explorer Extension (which you can file an issue for), but don't explain the sign-in issue.

Does it show you're signed-in in the status bar? Like Azure: your@email.com. If so: What does it show when you click on that status bar item?

AceHack commented 5 years ago

That's all that is in the logs, nothing else and no that staus bar Azure: your@email.com never shows so I can't click on it. This problem is easily reproducible by yourself though. It happens to everyone 100% of the time in WSL.

sirredbeard commented 5 years ago

@chrmarti

Make sure you are using the latest version of the extension (currently 0.6.1).

Yes, reproduced with clean install of latest everything.

Is there anything in the console? (Help > Toggle Developer Tools)

Posted by @AceHack.

The log messages indicate a problem with the Storage Explorer Extension (which you can file an issue for), but don't explain the sign-in issue.

The errors that appear from the authentication issue show up slightly differently in logs from each Azure-related extension.

I working on some logs for you now.

Does it show you're signed-in in the status bar? Like Azure: your@email.com. If so: What does it show when you click on that status bar item?

I can confirm @AceHack's report on this.

chrmarti commented 5 years ago

Has this worked before?

sirredbeard commented 5 years ago

Console output.

code --verbose output.

AceHack commented 5 years ago

No this has never worked

chrmarti commented 5 years ago

Could you retry with the latest update to the Azure Account extension? (Version 0.8.1 or later.)

The only limitation should be that it won't remember your session across restarts of VS Code, but it should at least work. Let me know how it goes.

sirredbeard commented 5 years ago

Thanks. I will try again.

chr1s3sw0rthy commented 5 years ago

I am having a similar issue VS Code 1.32. Azure Account Extension When I try to Azure: Sign In, I select my email from the web page and then get 127.0.0.1 could not connect. I am not behind a firewall (that I know of).

AzCode-Bot commented 2 years ago

Hey @chrisdias @chrmarti, this issue might need further attention.

@sirredbeard, you can help us out by closing this issue if the problem no longer exists, or adding more information.

bwateratmsft commented 2 years ago

Please disregard the bot's comment.

This issue has been closed because it needs more information and has not had recent activity. See also our issue reporting guidelines.

Happy Coding!