syncthing 2.x keeps reporting "can not create new thread" then exits and restarts on windows 10 32bit

I run syncthing on a 32bit windows pad with 2G ram as a server, and there is a virtual machine on it which use about 500MB ram.

4 syncthing folders, Local State (Total) file: 27,093 folder: 10,958 size: ~37.5 GiB, and sync to 2 or 3 other nodes simutaneously.

1.x till 1.30 works without any problem, after upgrade to 2.0.16. It seems working well at first and completed the first scan successfully. But after several days, I found that syncthing on other devices can not connect to the win pad. In the console log of syncthing on win pad, it continues complain about “can not create new thread” and then exit and restart it self, which keeps it unusable. Manually kill the process and restart it doesn’t help. Restart the system may help, but syncthing will stop working again soon or later.

I tried the 2.1.0, it has the same problem. And I have to restore the older 1.3.0 config file and returned to 1.30. It works without problem in the same environment.

I don’t know whether it is a bug or the low-end winpad should take responsibility. I find some post with same problem, but they are very old. I followed the advice and tried to modify the concurrent scan folder setting in config file, which doesn’t help.

Is there some setting tweaks that will make the 2.x work again?

What’s the full error / backtrace?

In console log, it goes through the following process again and again

2026-06-13 10:00:58 INF syncthing v2.1.0 "Hafnium Hornet" (go1.25.9 windows-386) builder@github.syncthing.net 2026-05-12 05:59:47 UTC (log.pkg=main)
2026-06-13 10:00:58 INF Calculated our device ID (device= log.pkg=syncthing)
2026-06-13 10:00:58 INF Overall rate limit in use (send="is unlimited" recv="is unlimited" log.pkg=connections)
2026-06-13 10:00:58 INF Using discovery mechanism (identity="global discovery server https://discovery-lookup.syncthing.net/v2/?noannounce" log.pkg=discover)
2026-06-13 10:00:58 INF Using discovery mechanism (identity="global discovery server https://discovery-announce-v4.syncthing.net/v2/?nolookup" log.pkg=discover)
2026-06-13 10:00:58 INF Using discovery mechanism (identity="global discovery server https://discovery-announce-v6.syncthing.net/v2/?nolookup" log.pkg=discover)
2026-06-13 10:00:58 INF Using discovery mechanism (identity="IPv4 local broadcast discovery on port 21027" log.pkg=discover)
2026-06-13 10:00:58 INF Using discovery mechanism (identity="IPv6 local multicast discovery on address [ff12::8384]:21027" log.pkg=discover)
2026-06-13 10:00:58 INF Ready to synchronize (folder.label="Default Folder" folder.id=default folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:58 INF Relay listener starting (id=dynamic+https://relays.syncthing.net/endpoint log.pkg=connections)
2026-06-13 10:00:58 INF Ready to synchronize (folder.label= folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:59 INF GUI and API listening (address="[::]:8384" log.pkg=api)
2026-06-13 10:00:59 INF Access the GUI via the following URL: http://127.0.0.1:8384/ (log.pkg=api)
2026-06-13 10:00:59 INF Loaded configuration (name= log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Loaded peer device configuration (device= address="[dynamic]" log.pkg=syncthing)
2026-06-13 10:00:59 INF Ready to synchronize (folder.label= folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:59 INF Completed initial scan (folder.label="Default Folder" folder.id=default folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:59 INF TCP listener starting (address="[::]:22000" log.pkg=connections)
2026-06-13 10:00:59 INF QUIC listener starting (address="[::]:22000" log.pkg=connections)
2026-06-13 10:00:59 INF Ready to synchronize (folder.label= folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:59 INF Ready to synchronize (folder.label= folder.type=sendreceive log.pkg=model)
2026-06-13 10:00:59 INF Measured hashing performance (perf="33.44 MB/s" log.pkg=syncthing)
2026-06-13 10:01:00 INF Established secure connection (device= connection.type=tcp-server connection.lan=true connection.crypto=TLS1.3-TLS_AES_128_GCM_SHA256 connection.prio=10 connection.id= log.pkg=connections)
2026-06-13 10:01:00 INF New device connection (device= remote.client=syncthing remote.version=v2.0.16 log.pkg=model)
2026-06-13 10:01:00 INF Established secure connection (device= connection.type=tcp-server connection.lan=false connection.crypto=TLS1.3-TLS_AES_128_GCM_SHA256 connection.prio=30 connection.id= log.pkg=connections)
2026-06-13 10:01:00 INF New device connection (device= remote.client=syncthing remote.version=v2.0.16 log.pkg=model)
2026-06-13 10:01:00 INF Established secure connection (device= connection.type=tcp-server connection.lan=true connection.crypto=TLS1.3-TLS_AES_128_GCM_SHA256 connection.prio=10 connection.id= log.pkg=connections)
2026-06-13 10:01:00 INF New device connection (device= remote.client=syncthing remote.version=v2.0.16 log.pkg=model)
runtime: failed to create new OS thread (8)

last time v1.30.0 start

[start] 2026/05/05 09:10:16 INFO: syncthing v1.30.0 “Gold Grasshopper” (go1.24.4 windows-386) ``builder@github.syncthing.net`` 2025-06-20 09:17:23 UTC [KIAIU] 2026/05/16 11:03:36 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) shutting down [KIAIU] 2026/05/16 11:03:45 INFO: Exiting

first time v2.0.16 start

2026-05-16 11:06:55 INF syncthing v2.0.16 “Hafnium Hornet” (go1.25.8 windows-386) ``builder@github.syncthing.net`` 2026-03-13 12:03:22 UTC (log.pkg=main)

something went wrong

2026-05-22 08:55:55 INF New device connection (device= remote.client=syncthing remote.version=v2.0.16 log.pkg=model) runtime: failed to create new OS thread (8)

repeat exit and restart until

2026-05-22 08:57:22 INF Detected NAT services (count=0 log.pkg=nat) runtime: failed to create new OS thread (8)

stable for a while by itself

2026-05-22 08:57:25 INF syncthing v2.0.16 “Hafnium Hornet” (go1.25.8 windows-386) builder@github.syncthing.net 2026-03-13 12:03:22 UTC (log.pkg=main)

2026-05-30 08:27:19 INF Updated file metadata (folder.label= file.modified=“2026-05-30 08:26:31.0114962 +0800 CST” file.permissions=0644 file.size=32768 file.blocksize=131072 log.pkg=model)
runtime: failed to create new OS thread (8)

something wrong again, this time it didn’t automatically recover, and seems exited by itself

2026-05-30 08:28:06 INF syncthing v2.0.16 “Hafnium Hornet” (go1.25.8 windows-386) ``builder@github.syncthing.net`` 2026-03-13 12:03:22 UTC (log.pkg=main)

manually restarted syncthing, but it can not boot into a stable state

2026-05-31 15:49:02 INF syncthing v2.0.16 “Hafnium Hornet” (go1.25.8 windows-386) ``builder@github.syncthing.net`` 2026-03-13 12:03:22 UTC (log.pkg=main)

It’s trying to create a new thread for database access, but can’t. That “(8)” is ERROR_NOT_ENOUGH_MEMORY, so there apparently isn’t space for more threads, whatever that means here (might not be physical RAM, might be things like address space or something; 32-bit world is special on Windows).

I don’t have any suggested solutions for you, other than setting everything for minimum resource usage.

Thank you for the reference.

I notice that the working 1.30.0 config file also has all the setting for low resource, but without limitation. Does it mean that if I tweaked the 2.x config to make it work stable, it will perform worse than 1.x?

Maybe 1.30.0 is a better choice for low end 32bit windows PC, I will stick to it until it can not sync with 2.x or later syncthing.