Skip to content

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

Open
@fpistm

Description

@fpistm

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

Activity

self-assigned this
on Sep 19, 2022
changed the title [-]Network issue and configuration[/-] [+]IDE doesn't start when proxy configuration is required to access network[/+] on Sep 22, 2022
kittaakos

kittaakos commented on Sep 27, 2022

@kittaakos
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

kittaakos commented on Nov 18, 2022

@kittaakos
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

tennessine commented on Jan 18, 2023

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

Lucius0806 commented on Mar 9, 2023

@Lucius0806
DL7BJ

DL7BJ commented on Jun 6, 2023

@DL7BJ
Dmitry-Chernikov

Dmitry-Chernikov commented on Aug 23, 2023

@Dmitry-Chernikov

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>

5 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: codeRelated to content of the project itselftype: imperfectionPerceived defect in any part of project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @s-celles@kittaakos@tennessine@fpistm@Dmitry-Chernikov

        Issue actions

          IDE doesn't start when proxy configuration is required to access network · Issue #1438 · arduino/arduino-ide