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

IDE doesn't start when proxy configuration is required to access network #1438

Open
3 tasks done
fpistm opened this issue Sep 15, 2022 · 8 comments
Open
3 tasks done
Labels
topic: code Related to content of the project itself type: imperfection Perceived defect in any part of project

Comments

@fpistm
Copy link

fpistm commented Sep 15, 2022

Describe the problem

I've installed the new official release 2.0.0 (on Windows 10 and Linux Ubuntu 20.04 LTS) from archive.

When launching it, I got this windows and nothing happen.
image

The logs show it fails when network access are performed:

Starting backend process. PID: 669267
[669288:0915/110646.964823:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
Using browser-only version of superagent in non-browser environment
Configuring to accept webviews on '^.+\.webview\..+$' hostname.
root INFO Configuration directory URI: 'file:///local/home/<username>/.theia'
root INFO Backend Object.initialize: 7.4 ms [Finished 1.227 s after backend start]
root INFO Backend Object.configure: 5.7 ms [Finished 1.227 s after backend start]
root INFO Backend MessagingContribution.onStart: 2.9 ms [Finished 1.227 s after backend start]
root INFO Backend OSBackendApplicationContribution.configure: 0.7 ms [Finished 1.293 s after backend start]
root INFO Backend DefaultWorkspaceServer.onStart: 0.6 ms [Finished 1.293 s after backend start]
root INFO Backend LocalizationBackendContribution.configure: 0.3 ms [Finished 1.294 s after backend start]
root WARN Backend LocalizationBackendContribution.initialize took longer than the expected maximum 50 milliseconds: 66.3 ms [Finished 1.294 s after backend start]
root INFO Backend TaskBackendApplicationContribution.onStart: 0.5 ms [Finished 1.294 s after backend start]
root INFO Backend ElectronTokenBackendContribution.configure: 1.7 ms [Finished 1.296 s after backend start]
root INFO Backend PluginDeployerContribution.initialize: 0.8 ms [Finished 1.297 s after backend start]
root INFO Backend ConfigServiceImpl.onStart: 1.4 ms [Finished 1.298 s after backend start]
root INFO Backend WebviewBackendSecurityWarnings.initialize: 0.7 ms [Finished 1.299 s after backend start]
root INFO Backend ArduinoDaemonImpl.onStart: 1.6 ms [Finished 1.300 s after backend start]
root INFO Backend NodeFileUploadService.configure: 2.9 ms [Finished 1.301 s after backend start]
daemon INFO Starting daemon from /local/data/ide/arduino/arduino_2.0.0/resources/app/node_modules/arduino-ide-extension/build/arduino-cli...
discovery-log INFO start
discovery-log INFO start new deferred
root INFO Backend BoardDiscovery.onStart: 1.5 ms [Finished 1.303 s after backend start]
root INFO Backend FileDownloadEndpoint.configure: 0.8 ms [Finished 1.303 s after backend start]
root INFO Backend AuthenticationServiceImpl.onStart: 0.7 ms [Finished 1.305 s after backend start]
root INFO Backend PluginApiContribution.configure: 0.8 ms [Finished 1.305 s after backend start]
root INFO Backend HostedPluginReader.configure: 0.4 ms [Finished 1.306 s after backend start]
root INFO Backend HostedPluginReader.configure: 0.2 ms [Finished 1.306 s after backend start]
root INFO Backend PlotterBackendContribution.configure: 0.5 ms [Finished 1.307 s after backend start]
root INFO Theia app listening on http://localhost:35383.
root INFO Finished starting backend application: 5.4 ms [Finished 1.311 s after backend start]
root WARN The local plugin referenced by local-dir:/local/home/<username>/.arduinoIDE/plugins does not exist.
root WARN The local plugin referenced by local-dir:/local/home/<username>/.arduinoIDE/extensions does not exist.
root WARN The local plugin referenced by local-dir:/local/home/<username>/.arduinoProIDE/plugins does not exist.
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "cortex-debug" to a VS Code extension "cortex-debug@0.3.10" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-arduino-tools" to a VS Code extension "vscode-arduino-tools@0.0.2-beta.5" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-builtin-cpp" to a VS Code extension "cpp@1.52.1" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-builtin-json" to a VS Code extension "json@1.46.1" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-builtin-json-language-features" to a VS Code extension "json-language-features@1.46.1" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-cs" to a VS Code extension "vscode-language-pack-cs@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-de" to a VS Code extension "vscode-language-pack-de@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-es" to a VS Code extension "vscode-language-pack-es@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-fr" to a VS Code extension "vscode-language-pack-fr@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-it" to a VS Code extension "vscode-language-pack-it@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-ja" to a VS Code extension "vscode-language-pack-ja@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-nl" to a VS Code extension "vscode-language-pack-nl@1.48.3" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-pt-BR" to a VS Code extension "vscode-language-pack-pt-BR@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-ru" to a VS Code extension "vscode-language-pack-ru@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-tr" to a VS Code extension "vscode-language-pack-tr@1.69.0" with engines:
root INFO PluginTheiaDirectoryHandler: accepting plugin with path
root INFO Resolved "vscode-language-pack-zh-hans" to a VS Code extension "vscode-language-pack-zh-hans@1.69.0" with engines:
daemon INFO {"level":"info","msg":"Using config file: /local/home/<username>/.arduinoIDE/arduino-cli.yaml","time":"2022-09-15T11:06:48+02:00"}
{"level":"info","msg":"arduino-cli version 0.27.1","time":"2022-09-15T11:06:48+02:00"}
{"level":"info","msg":"Executing `arduino-cli daemon`","time":"2022-09-15T11:06:48+02:00"}
{"IP":"127.0.0.1","Port":"36433"}
daemon INFO Daemon is running.
root INFO ---- DURATION: loadCliConfig took 69.967 ms. Args: [] ----
daemon INFO {"level":"info","msg":"Loading hardware from: /local/home/<username>/.arduino15/packages","time":"2022-09-15T11:06:48+02:00"}
daemon INFO {"index":"/local/home/<username>/.arduino15/library_index.json","level":"info","msg":"Loading libraries index file","time":"2022-09-15T11:06:48+02:00"}
{"dir":"/local/home/<username>/.arduino15/libraries","level":"info","location":"ide","msg":"Adding libraries dir","time":"2022-09-15T11:06:48+02:00"}
{"dir":"/local/home/<username>/Arduino/libraries","level":"info","location":"user","msg":"Adding libraries dir","time":"2022-09-15T11:06:48+02:00"}
root ERROR Detected an error response during the gRPC core client initialization: code: 9, message: Loading index file: loading json index file /local/home/<username>/.arduino15/package_index.json: open /local/home/<username>/.arduino15/package_index.json: no such file or directory
root ERROR Detected an error response during the gRPC core client initialization: code: 9, message: Error loading hardware platform: discovery builtin:serial-discovery not found
root ERROR Detected an error response during the gRPC core client initialization: code: 9, message: Error loading hardware platform: discovery builtin:mdns-discovery not found
root ERROR Detected an error response during the gRPC core client initialization: code: 9, message: Loading index file: reading library_index.json: open /local/home/<username>/.arduino15/library_index.json: no such file or directory
root ERROR The primary packages indexes are missing. Running indexes update before initializing the core gRPC client
daemon INFO {"level":"info","msg":"Updating libraries index","time":"2022-09-15T11:06:48+02:00"}
{"level":"info","msg":"URL: https://downloads.arduino.cc/packages/package_index.tar.bz2","time":"2022-09-15T11:06:48+02:00"}
{"level":"info","msg":"Updating index","time":"2022-09-15T11:06:48+02:00","url":{"Scheme":"https","Opaque":"","User":null,"Host":"downloads.arduino.cc","Path":"/packages/package_index.tar.bz2","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":""}}

Third step:

So I've added manually the proxy setting in the newly created config ~/.arduinoIDE/arduino-cli.yaml (linux)

network:
  proxy: http://<username>:<password>@<proxy>:<port>

Finally I was able to get the IDE properly started.

To reproduce

Works behind a proxy.

Expected behavior

  • Warn user properly instead of having empty windows with 'splashscreen' or proposed to configure network proxy.
  • Document proxy settings requirements for Arduino IDE 2.0.0

Maybe partially linked to #29

Arduino IDE version

2.0.0

Operating system

  • Windows
  • Linux

Operating system version

  • Windows 10
  • Ubuntu 20.04 LTS

Additional context

Workaround

  1. Select File > Quit from the Arduino IDE menus if it is running.
  2. Use any text editor to open the file at the following path:
    • Windows:
      C:\Users\<username>\.arduinoIDE\arduino-cli.yaml
      
      (where <username> is your Windows username)
    • Linux:
      ~/.arduinoIDE/arduino-cli.yaml
      
      ❗ The ~/.arduinoIDE/ folder may be hidden by default in your file manager and terminal.
    • macOS:
      ~/.arduinoIDE/arduino-cli.yaml
      
      ❗ The ~/.arduinoIDE/ folder is hidden by default. You can make it visible by pressing the Command+Shift+. keyboard shortcut.
  3. Add the following lines anywhere in the file:
    network:
      proxy: <proxy scheme>://<username>:<password>@<proxy address>:<port>
    Where the placeholders are:
    • <proxy scheme>: the URL scheme for your proxy server.
      One of the following;
      • http
      • socks5
    • <username>: the username of your proxy server credentials.
    • <password>: the password of your proxy server credentials.
    • <proxy address>: the address of your proxy server.
    • <port>: the port of your proxy server.
  4. Save the file.
  5. Start Arduino IDE.

Additional reports

Related

Issue checklist

  • I searched for previous reports in the issue tracker
  • I verified the problem still occurs when using the latest nightly build
  • My report contains all necessary details
@fpistm fpistm added the type: imperfection Perceived defect in any part of project label Sep 15, 2022
@kittaakos kittaakos added the topic: code Related to content of the project itself label Sep 15, 2022
@kittaakos kittaakos self-assigned this Sep 19, 2022
@per1234 per1234 changed the title Network issue and configuration IDE doesn't start when proxy configuration is required to access network Sep 22, 2022
@kittaakos
Copy link
Contributor

TODOs on the IDE2 side:

  • Search for a JS lib to detect the system proxy configuration. The candidate is os-proxy-config from HTTP Toolkit.
  • The core gRPC client initialization must be resilient. Even on a fatal error, the IDE2 should open.
  • IDE2 must start even if no platforms/libs were downloaded the very first time IDE2 starts. It's OK if the boards/lib manager is not functional, but the users must be notified when there is no Internet connection or the CLI cannot download anything due to being behind a proxy.
    • Preferably, the proxy configuration should be adjusted from the Settings dialog by users.
    • If the Settings dialog is not functional, IDE2 must open the ~/arduinoIDE/arduino-cli.yaml configuration file inside IDE2 for editing.

TODOs on the CLI side:

  • In the long run, network#proxy#'auto' should be supported.
  • Search for a Golang lib that can detect the system proxy configuration.

@kittaakos
Copy link
Contributor

Once #1662 is available from the main, we should look into the new request service from Theia: eclipse-theia/theia#11043

Requests going through the new Theia service can pick up proxy configurations from the settings. It's suboptimal for IDE2, as half of the proxy settings are stored in the arduino-cli.yaml and the other half in the settings.json, so in theory, users can mess up their proxy settings by configuring proxyA in the settings.json and proxyB in the CLI config.

@tennessine

This comment was marked as duplicate.

@arduino arduino deleted a comment from tennessine Jan 18, 2023
@Lucius0806

This comment was marked as off-topic.

@DL7BJ

This comment was marked as duplicate.

@Dmitry-Chernikov
Copy link

Dmitry-Chernikov commented Aug 23, 2023

Hello, according to the information from here Proxy Auto-Configuration file is a js script with FindProxyForURL, Node.js function executes this script from the command line. You can get the result of the execution and substitute it automatically into the function that uses the settings:

network:
   proxy: http://<username>:<password>@<proxy>:<port>

@s-celles

This comment was marked as duplicate.

@fpistm
Copy link
Author

fpistm commented Sep 18, 2023

I can't use Arduino 2.x at work (university) with my students until this is fixed. I really hope to see soon a fix about it!

With the workaround, it should works even if it is not user friendly.

One thing we noticed is we update the IDE thanks the update notification, the network configuration set in the arduino-cli.yaml is not preserved.

@arduino arduino locked as too heated and limited conversation to collaborators Sep 18, 2023
@kittaakos kittaakos removed their assignment Feb 23, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
topic: code Related to content of the project itself type: imperfection Perceived defect in any part of project
Projects
None yet
Development

No branches or pull requests

7 participants