IDE 2.3.7 hangs on startup

Hi all,
I'm on Windows 10. I had an old (2022) version of the IDE running. I just downloaded and installed the latest (2.3.7), but it hangs on startup.
I uninstalled the old version after the new install, but that made no difference.
Find the log below.
Appreciate any help.

PS C:\Program Files\Arduino IDE>
Arduino IDE 2.3.7
Checking for frontend application configuration customizations. Module path: C:\Program Files\Arduino IDE\resources\app\lib\backend\electron-main.js, destination 'package.json': C:\Program Files\Arduino IDE\resources\app\package.json
Setting 'theia.frontend.config.appVersion' application configuration value to: "2.3.7" (type of string)
Setting 'theia.frontend.config.cliVersion' application configuration value to: "1.3.1" (type of string)
Setting 'theia.frontend.config.buildDate' application configuration value to: "2025-12-17T16:05:25.389Z" (type of string)
Frontend application configuration after modifications: {"applicationName":"Arduino IDE","defaultTheme":{"light":"arduino-theme","dark":"arduino-theme-dark"},"defaultIconTheme":"none","electron":{"windowOptions":{},"showWindowEarly":true,"splashScreenOptions":{},"uriScheme":"arduino-ide"},"defaultLocale":"","validatePreferencesSchema":false,"reloadOnReconnect":true,"uriScheme":"theia","preferences":{"window.title":"${rootName}${activeEditorShort}${appName}","files.autoSave":"afterDelay","editor.minimap.enabled":false,"editor.tabSize":2,"editor.scrollBeyondLastLine":false,"editor.quickSuggestions":{"other":false,"comments":false,"strings":false},"editor.maxTokenizationLineLength":500,"editor.bracketPairColorization.enabled":false,"breadcrumbs.enabled":false,"workbench.tree.renderIndentGuides":"none","explorer.compactFolders":false},"appVersion":"2.3.7","cliVersion":"1.3.1","buildDate":"2025-12-17T16:05:25.389Z"}
Starting backend process. PID: 13580
Showing main window early
Using browser-only version of superagent in non-browser environment
Configuration directory URI: 'file:///c%3A/Users/cees.van.egmond/.arduinoIDE'
Configuring to accept webviews on '^.+\.webview\..+$' hostname.
2026-01-21T20:45:57.639Z root WARN Backend u.initialize took longer than the expected maximum 50 milliseconds: 58.8 ms [Finished 1.325 s after backend start]
2026-01-21T20:45:57.640Z root WARN Backend Object.initialize took longer than the expected maximum 50 milliseconds: 53.9 ms [Finished 1.325 s after backend start]
2026-01-21T20:45:57.640Z root INFO Backend a.initialize: 2.3 ms [Finished 1.326 s after backend start]
2026-01-21T20:45:57.640Z root INFO Backend a.initialize: 1.9 ms [Finished 1.326 s after backend start]
2026-01-21T20:45:57.640Z root INFO Backend u.initialize: 2.5 ms [Finished 1.326 s after backend start]
2026-01-21T20:45:57.644Z root WARN Backend l.initialize took longer than the expected maximum 50 milliseconds: 56.0 ms [Finished 1.328 s after backend start]
2026-01-21T20:45:57.657Z root INFO configured all backend app contributions
2026-01-21T20:45:57.657Z root INFO Backend l.onStart: 2.7 ms [Finished 1.346 s after backend start]
2026-01-21T20:45:57.658Z root INFO Backend d.onStart: 0.2 ms [Finished 1.346 s after backend start]
2026-01-21T20:45:57.660Z root INFO Backend a.onStart: 0.7 ms [Finished 1.347 s after backend start]
2026-01-21T20:45:57.660Z config INFO >>> Initializing CLI configuration...
2026-01-21T20:45:57.660Z root INFO Backend x.onStart: 0.8 ms [Finished 1.348 s after backend start]
2026-01-21T20:45:57.660Z config INFO Loading CLI configuration from c:\Users\cees.van.egmond\.arduinoIDE\arduino-cli.yaml...
2026-01-21T20:45:57.660Z daemon INFO Starting daemon from C:\Program Files\Arduino IDE\resources\app\lib\backend\resources\arduino-cli.exe...
2026-01-21T20:45:57.660Z root INFO Backend w.onStart: 0.6 ms [Finished 1.349 s after backend start]
2026-01-21T20:45:57.660Z discovery-log INFO start
2026-01-21T20:45:57.660Z discovery-log INFO start new deferred
2026-01-21T20:45:57.660Z root INFO Backend v.onStart: 0.3 ms [Finished 1.349 s after backend start]
2026-01-21T20:45:57.660Z root INFO Backend a.onStart: 0.2 ms [Finished 1.349 s after backend start]
2026-01-21T20:45:57.669Z root INFO Theia app listening on http://127.0.0.1:50099.
2026-01-21T20:45:57.669Z root INFO Finished starting backend application: 8.9 ms [Finished 1.358 s after backend start]
2026-01-21T20:45:57.672Z root WARN The local plugin referenced by local-dir:/c%3A/Users/cees.van.egmond/.arduinoIDE/deployedPlugins does not exist.
2026-01-21T20:45:57.672Z root WARN The local plugin referenced by local-dir:/c%3A/Users/cees.van.egmond/.arduinoIDE/plugins does not exist.
2026-01-21T20:45:57.672Z root WARN The local plugin referenced by local-dir:C:\Users\cees.van.egmond\.arduinoIDE\plugins does not exist.
2026-01-21T20:45:57.682Z config INFO Loaded CLI configuration: {"board_manager":{"additional_urls":["file:\\\\C:\\Temp\\package_rp2040_index.json"]},"daemon":{"port":"50051"},"directories":{"builtin":{"libraries":"C:\\Users\\cees.van.egmond\\AppData\\Local\\Arduino15\\libraries"},"data":"c:\\Users\\cees.van.egmond\\AppData\\Local\\Arduino15","downloads":"C:\\Users\\cees.van.egmond\\AppData\\Local\\Arduino15\\staging","user":"c:\\Users\\cees.van.egmond\\Documents\\Arduino"},"library":{"enable_unsafe_install":false},"locale":"en","logging":{"file":"","format":"text","level":"info"},"metrics":{"addr":":9090","enabled":true},"output":{"no_color":false},"sketch":{"always_export_binaries":false},"updater":{"enable_notification":true}}
2026-01-21T20:45:57.682Z config INFO 'directories.data' and 'directories.user' are set in the CLI configuration model.
2026-01-21T20:45:57.682Z config INFO Loaded the CLI configuration.
2026-01-21T20:45:57.706Z config INFO Mapped the CLI configuration: {"dataDirUri":"file:///c%3A/Users/cees.van.egmond/AppData/Local/Arduino15","sketchDirUri":"file:///c%3A/Users/cees.van.egmond/Documents/Arduino","additionalUrls":["file:\\\\C:\\Temp\\package_rp2040_index.json"],"network":"none","locale":"en"}
2026-01-21T20:45:57.706Z config INFO Validating the CLI configuration...
2026-01-21T20:45:57.706Z config INFO The CLI config is valid.
2026-01-21T20:45:57.706Z config INFO <<< Initialized the CLI configuration.
2026-01-21T20:45:57.851Z root INFO Resolve plugins list: 186.3 ms [Finished 1.539 s after backend start]
2026-01-21T20:45:58.026Z daemon INFO time="2026-01-21T21:45:58+01:00" level=info msg="arduino-cli version 1.3.1"
time="2026-01-21T21:45:58+01:00" level=info msg="Using config file: c:\\Users\\cees.van.egmond\\.arduinoIDE\\arduino-cli.yaml"
time="2026-01-21T21:45:58+01:00" level=info msg="Executing `arduino-cli daemon`"
Daemon is now listening on 127.0.0.1:50100
{"IP":"127.0.0.1","Port":"50100"}
2026-01-21T20:45:58.026Z daemon INFO Daemon is running.
2026-01-21T20:45:58.178Z root ERROR Error occurred while initializing the core gRPC client provider Error: 14 UNAVAILABLE: read ECONNRESET
    at t.callErrorFromStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:3088066)
    at Object.onReceiveStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6672872)
    at Object.onReceiveStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:2571272)
    at C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:4304750
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11)
for call at
    at s.makeServerStreamRequest (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6672639)
    at s.init (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:3087159)
    at C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6276533
    at new Promise (<anonymous>)
    at y.initInstance (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6276499)
    at y.initInstanceWithFallback (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6275355)
    at y.create (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6275260)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2026-01-21T20:45:58.182Z root ERROR Uncaught Exception:  Error: 14 UNAVAILABLE: read ECONNRESET
2026-01-21T20:45:58.182Z root ERROR Error: 14 UNAVAILABLE: read ECONNRESET
    at t.callErrorFromStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:3088066)
    at Object.onReceiveStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6672872)
    at Object.onReceiveStatus (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:2571272)
    at C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:4304750
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11)
for call at
    at s.makeServerStreamRequest (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6672639)
    at s.init (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:3087159)
    at C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6276533
    at new Promise (<anonymous>)
    at y.initInstance (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6276499)
    at y.initInstanceWithFallback (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6275355)
    at y.create (C:\Program Files\Arduino IDE\resources\app\lib\backend\main.js:2:6275260)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2026-01-21T20:45:58.184Z daemon INFO panic: runtime error: slice bounds out of range [1:0]

goroutine 34 [running]:
github.com/arduino/arduino-cli/internal/arduino/utils.URLParse({0xc00002f650?, 0x0?})
        /home/runner/work/arduino-cli/arduino-cli/internal/arduino/utils/url.go:34 +0x99
github.com/arduino/arduino-cli/commands.(*arduinoCoreServerImpl).Init(0xc0000085a0, 0xc0000a4190, {0x13a8ee0, 0xc000094320})
        /home/runner/work/arduino-cli/arduino-cli/commands/instances.go:180 +0x35f5
github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1._ArduinoCoreService_Init_Handler({0xfbb380, 0xc0000085a0}, {0x13a6e08, 0xc000000000})
        /home/runner/work/arduino-cli/arduino-cli/rpc/cc/arduino/cli/commands/v1/commands_grpc.pb.go:1209 +0x113
google.golang.org/grpc.(*Server).processStreamingRPC(0xc0000a8600, {0x13a37a8, 0xc0003402d0}, 0xc0002e0000, 0xc0003407b0, 0x1bce060, 0x0)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.74.2/server.go:1721 +0x1252
google.golang.org/grpc.(*Server).handleStream(0xc0000a8600, {0x13a4140, 0xc00010f6c0}, 0xc0002e0000)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.74.2/server.go:1845 +0xb47
google.golang.org/grpc.(*Server).serveStreams.func2.1()
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.74.2/server.go:1061 +0x7f
created by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 22
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.74.2/server.go:1072 +0x11d
2026-01-21T20:45:58.186Z daemon INFO Daemon exited with exit code: 2.
2026-01-21T20:45:58.820Z root INFO Deploy plugins list: 1155.7 ms [Finished 2.509 s after backend start]
2026-01-21T20:45:59.742Z root INFO creating connection for 1
2026-01-21T20:46:01.454Z root WARN Frontend a.configure took longer than the expected maximum 100 milliseconds: 110.9 ms [Finished 3.768 s after frontend start]
2026-01-21T20:46:01.526Z root WARN A command editor.action.toggleStickyScroll is already registered.
Opening channel for service path '/services/electron-window'.
Opening channel for service path '/services/ide-updater'.
2026-01-21T20:46:01.681Z root WARN Frontend keybindings.onStart took longer than the expected maximum 100 milliseconds: 148.9 ms [Finished 3.974 s after frontend start]
2026-01-21T20:46:01.822Z root INFO Start frontend contributions: 574.3 ms [Finished 4.101 s after frontend start]
2026-01-21T20:46:01.823Z root INFO Changed application state from 'init' to 'started_contributions'.
2026-01-21T20:46:01.858Z root INFO Changed application state from 'started_contributions' to 'attached_shell'.
2026-01-21T20:46:01.859Z root INFO >>> Restoring the layout state...
2026-01-21T20:46:02.000Z root INFO [8342fc86-bc7e-4684-be2e-e66501d8fa11] Waiting for backend deployment: 216.1 ms [Finished 4.307 s after frontend start]
2026-01-21T20:46:03.699Z root INFO [hosted-plugin: 4336] PLUGIN_HOST(4336) starting instance
[Object: null prototype] {}
2026-01-21T20:46:05.162Z root INFO [8342fc86-bc7e-4684-be2e-e66501d8fa11] Sync of 23 plugins: 3170.2 ms [Finished 7.477 s after frontend start]

Hi @cees67.

Analysis

I see the problem here:

This tells me you set Arduino IDE's "Additional Boards Manager URLs" preference to the value

file:\\C:\Temp\package_rp2040_index.json

The cause of the hang is that you used backslashes as the path separator character. Although this is a valid path separator on Windows, in the context in which this preference is used, the backslash character has a special usage as an escape character. This breaks the Arduino CLI helper tool that handles the URL/URI for Arduino IDE, and thus causes the Arduino IDE startup to hang.

Solution

In order to fix the problem, you will need to remove the bad preferences data. Normally we could do this via the user friendly "Preferences" dialog in Arduino IDE, but we don't have access to that dialog when Arduino IDE won't start. So it is necessary to fix the bad data manually. The easiest way to accomplish that will be to just delete the configuration file where the preferences data is stored. This will cause Arduino IDE to automatically generate a fresh configuration file with valid data on the next startup. This will cause the preferences stored in that file to revert to the default values. However, the only custom setting you have in the file is the bad URL, which needs to be fixed anyway. So nothing of value is lost.

I'll provide instructions you can follow to do that:

  1. Close all Arduino IDE windows if the IDE is already running.
  2. Start Windows "File Explorer".
  3. Navigate to the folder at the following path on your hard drive:
    c:\Users\cees.van.egmond\.arduinoIDE
    
  4. Delete the file named arduino-cli.yaml you will see in that folder.
    :warning: Please be careful when deleting things from your computer. When in doubt, back up!

Now start Arduino IDE. This time it should start up fully.

As I mentioned above, this will result in the loss of your custom configuration of the "Additional Boards Manager URLs" preference. So if you need to specify additional URLs in that preference, you will need to configure it once more. This time, be careful to use the correct format for the URLs you enter into this preference.

file scheme URLs are supported, but you need to follow some special rules:

  • Use slash (/), not backslash (\)
  • Use a leading slash on the path.

So if you want Arduino IDE to use a local package index at the following path on your hard drive:

C:\Temp\package_rp2040_index.json

You should add the following entry to the "Additional Boards Manager URLs" preference:

file:///C:/Temp/package_rp2040_index.json

In case you forgot how to configure the "Additional Boards Manager URLs" preference, I'll provide instructions:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Enter the URL into the "Additional Boards Manager URLs" field in the "Preferences" dialog.
  3. Click the "OK" button.
    The "Preferences" dialog will close.

You said you did an uninstall of the old version after installing the new?
That would cause problems. Just install the latest, no need to uninstall anything.

Thank you ptillisch for the solution: it worked!
Thanks sonofcy for your advice.
I do hope this finds its way into a fix of the installer.
Cheers,
Cees.