r/WC3 • • 20d ago

Technical / Bug / Support Severe FPS issues after Forsaken Kingdom update

18 Upvotes

I recently bought Warcraft III: Reforged after the Forsaken Kingdom update, but I'm getting surprisingly poor performance with the new graphics.

I'm seeing anywhere from around 20-60 FPS, sometimes with significant drops, even though my PC should be more than capable of running the game.

I've tried changing basically every graphics setting, including lowering the settings substantially and disabling VSync, but the settings seem to make little to no difference to the FPS.

Other games run as expected, and the RTX 5070 Ti is the only GPU listed in Device Manager, so the game isn't accidentally running on integrated graphics.

Has anyone else experienced this since the Forsaken Kingdom / 3.0.0 update? Any idea what could be causing it, or found a workaround?

At this point I'm mostly trying to figure out whether this is a known performance issue with the new update or something specific to my system.

r/WC3 • • 20d ago

Technical / Bug / Support Warcraft III Reforged on Lutris: fixing the Battle.net/VPN/certificate issue with GE-Proton

18 Upvotes

I recently ran into the Warcraft III Reforged issue on Linux where Battle.net either complains about the connection/VPN or Warcraft III refuses to connect properly.

There’s a fix here:

https://github.com/FerMPY/wc3-reforged-proton-fix

The original fix is aimed at GE-Proton 11-6 and Steam, but it can also be used with Lutris.

The problem appears to be related to crypt32.dll. Warcraft III now calls CertCreateCertificateChainEngine() in a way that older Wine/Proton builds don’t handle correctly. Wine 11.6+ reportedly contains the upstream fix already, but in my case plain System Wine 11.17 caused Battle.net to loop during startup, so I stuck with Proton.

My available runners were:

  • GE-Proton11-6-x86_64
  • proton-cachyos-slr
  • proton-cachyos-x86_64
  • System 11.17
  • GE-Proton (Latest)
  • UMU-Proton-10.0-4

The cleanest solution for me was to use GE-Proton11-6 as the base and create a patched copy specifically for Warcraft III.

First, find where GE-Proton11-6 is installed:

find ~/.local/share ~/.steam -maxdepth 5 \
  -type d -name 'GE-Proton11-6*' 2>/dev/null

Mine was somewhere under a compatibilitytools.d directory.

Then clone the patch:

cd ~/Downloads

git clone https://github.com/FerMPY/wc3-reforged-proton-fix.git

cd wc3-reforged-proton-fix

Next, go to your Proton compatibility tools directory.

For example:

cd ~/.local/share/Steam/compatibilitytools.d

Make a copy of GE-Proton11-6:

cp -a GE-Proton11-6 GE-Proton11-6-wc3fix

Make the existing crypt32.dll files writable:

chmod u+w \
GE-Proton11-6-wc3fix/files/lib/wine/x86_64-windows/crypt32.dll \
GE-Proton11-6-wc3fix/files/lib/wine/i386-windows/crypt32.dll

Then replace them with the patched versions:

cp ~/Downloads/wc3-reforged-proton-fix/dlls/x86_64-windows/crypt32.dll \
GE-Proton11-6-wc3fix/files/lib/wine/x86_64-windows/crypt32.dll


cp ~/Downloads/wc3-reforged-proton-fix/dlls/i386-windows/crypt32.dll \
GE-Proton11-6-wc3fix/files/lib/wine/i386-windows/crypt32.dll

Fully close Lutris and reopen it.

Then go to:

Battle.net → Configure → Runner Options → Wine version

and select:

GE-Proton11-6-wc3fix

Lutris should run Proton through UMU automatically, so you shouldn’t need to manually set up Steam compatibility variables or move battle.net into Steam.

Before doing any of this, I’d also recommend trying:

GE-Proton (Latest)

because newer GE-Proton versions may already contain the upstream Wine fix.

If Battle.net works with the latest GE-Proton, great. Stop there.

If Battle.net launches but Warcraft III gives the network/VPN/certificate error, the patched GE-Proton11-6 build is worth trying.

One other useful tip: if Battle.net gets stuck on the startup spinner or behaves strangely, disable hardware acceleration inside Battle.net and clear the Battle.net cache.

I would avoid using plain System Wine just because it technically contains the fix. In my case System 11.17 caused Battle.net to loop during startup, while Proton behaved much better.

Hopefully this saves someone else a few hours of head scratching :)

And yes I ended up abusing the hell out of GPT for this, I'm very very new to Linux, but thought it MAY help someone in my boat :)

r/WC3 • • 5d ago

Technical / Bug / Support I patched Proton/Wine to make W3Champions usable on Linux

40 Upvotes

TL;DR: I got tired of waiting for the native Linux W3C client, so I patched Proton/Wine to make the current client work properly. The periodic simulation stutters are gone, join issues are fixed, custom lobbies no longer have long delays, and the disappearing cursor after games is fixed too.

The biggest problem was W3Champions doing a lot of memory scanning through VirtualQueryEx. Under Wine, that created a ton of cross-process overhead and repeated APC interruptions in Warcraft III, which was behind the periodic simulation stutter.

Since W3C is closed-source, I fixed it on the Wine side by adding a shared-memory query path so most of those requests can be answered without interrupting the game process.

While debugging all of this, I also fixed a Schannel/TLS issue related to join bugs, the Wine input-state issue behind the disappearing cursor, and a few smaller W3C/FLO compatibility problems.

At this point matchmaking is working reliably for me, custom games work, the stutter is gone, and the cursor issue is fixed.

Proton Build:

https://github.com/davex32/proton-ge-w3c

Two extra things you need to do on top of the normal setup:

  • enable Launch Warcraft III from Battle.net in W3C
  • add W3C_SHARED_QUERY=1 to the environment variables to enable the shared-query stutter fix

I’m not affiliated with W3Champions, and I’m not a regular Proton/Wine contributor. I just wanted to play Warcraft on Linux and somehow ended up spending about a week of my free time wrestling with this hellscape =)

If anyone else on Linux tests it, let me know whether it fixes the same issues for you. I can’t really promise much installation/support time, but feedback on whether the build works is useful.

r/WC3 • • 19d ago

Technical / Bug / Support Definitive Edition - Bug Report/Suggestions (Map Editor)

Thumbnail
image
12 Upvotes

This will be a post to help collect found issues with the new Warcraft 3: Reforged (Forsaken Kingdoms) update.

Please let me know of any other issues that are found, and I will add them here, or leave a comment down below.

Missing Doodads from Standard Definition (SD):

  • Some doodads have additional variations in DE, and are not visible in SD. The following previously were visible in SD and are no longer.
  • [NSra] Archway (Northrend) [Guldan Unit Model]
  • [VSvb] Building (Cityscape) [Green Box Placeholder, does not appear in game]
  • [LOca] Cauldron with Heads [Green Box Placeholder, does not appear in game]
  • [LOic] Corpse Impaled [Green Box Placeholder, does not appear in game]
  • [NWfp] Floating Plank [Green Box Placeholder, does not appear in game]
  • [YOnf] Fountain [Invisible, does not appear in game]
  • [YOlp] Post Lanterns (Cityscape) [Green Box Placeholder, does not appear in game]
  • [ZOba] Ruins Bloody Alter [Green Box Placeholder, does not appear in game]
  • [YSll] Wall End Lanterns [Green Box Placeholder, does not appear in game]
  • [LPwh] Wheat [Green Box Placeholder, does not appear in game]

New Effects on Doodads in Standard Definition (SD):

  • Light Source added to [GRfc] Crater Fiery (Underground)
  • Light Source added to Blue [GPsh] Mushroom (Underground)

Missing Water Effects on Dungeon and Felwood Tile-set (DE):

  • Unable to effect the water appearance on either Tile-set and they lack their original Lava Red and Fel Green color.

Missing Doodads from Definitive Edition (DE):

  • [NSra] Archway (Northrend) [Guldan Unit Model]

Suggestion: Unit Models from Definitive Edition (DE):

  • Adjustment of Creep unit sizes, scale with creep level.
  • Hit Box size for buildings under construction may need adjustment

Suggestion: Quality of Life Improvements:

  • Easier way to swap between SD, HD, and DE without full restart of editor.
  • Tile-set swapping, previously you could swap between tile-sets and they would match between the tile-set types (aka dirt for dirt, grass for grass, etc..), currently it does not actively do so.
  • Rocks appear over represented on DE Mini-Map when compared to SD Mini-Map.
  • Volumetric Fog range reaches beyond the scalable limit.

Additional Issues/Bug Report (Game Effects):

  • Garg stone form. When you land there is a 30 second cool down before you can lift off. It used to be that once you lift off you get the cool down beginning. This prevents stone form being used in battles now.
  • Thaedalius pointed out "Spirit walkers since the 3.0.0 patch have a 30 sec cooldown to go back in to ethereal form when switching from ethereal form to corporeal form. This was not the case before the 3.0 patch and is a significant nerf to them."
  • Righteous Fury Cooldown resets upon skill up on ability.

World Editor Crash (SD/DE, both Live and PTR as of 09/30/2026):

  • World Editor crashes when attempting to interact with Random Neutral Building.

Please let me know of any other issues that are found, and I will add them here, or leave a comment down below.

Last update: 09/30/2026

r/WC3 • • 15d ago

Technical / Bug / Support Bug in first Forsaken Act

3 Upvotes

I ran into a weird bug on the first mission when you get to the part where you are supposed to collect murloc fins and hound bloods. When I am in the tirasfal glades zone, the quest reads completed because I have the fins/bloods in my inventory, but the moment I go down into the undercity the quest now reads “not completed” (0 out of 6 for fins and 0/5 bloods) despite still having the quest items in my inventory. I tried going to the spider queen to get the venom but that was bugged too. Killing the spider did not drop any venom and the quest still reads “not completed.” Putress will not interact when I stand near him.

Anyone else experience this? Anybody manage to fix it without having to completely restart?

r/WC3 • • 11d ago

Technical / Bug / Support Pause abuse: can we get a hotkey to unpause (like in Dota 2)?

17 Upvotes

There's a pretty annoying issue with the current pause system in WC3 that can have a real impact on gameplay.

Imagine you're in the middle of a fight and your opponent pauses the game. They don't unpause, so if you want to continue playing, you have to open the menu, manually click Unpause, and then close the menu.

That might sound like a small inconvenience, but during an actual fight, those extra actions can make a huge difference.

For example, the enemy hero is Hexed, and you're about to chain a TC stun to extend the control. Your opponent pauses the game at that exact moment. You have to open the menu, click Unpause, close the menu, and then get back to controlling your army.

Meanwhile, your opponent doesn't gain any extra reaction time — he's just disrupting your timing. He doesn't open the menu himself, he just waits for the pause to end and spams his Invulnerability Potion or TP bind.

The problem isn't that pausing exists. The problem is that unpausing requires you to leave the game interface and manually navigate through the menu, which can cost you critical focus and reaction time.

Dota 2 already has a simple solution for this. You can use F9 to pause/unpause instead of opening a menu, and after unpausing there is a 3-second countdown before the game actually resumes.

Something similar in WC3 would make a lot of sense:

  • F9 (or another key) to pause/unpause
  • 3-second countdown after unpausing
  • Both players get a moment to prepare
  • No need to open the menu and lose control of the battlefield

This wouldn't remove the pause feature or change how pausing works. It would simply make the system much more practical during actual gameplay.

r/WC3 • • 11d ago

Technical / Bug / Support Bug Act 1

0 Upvotes

So I cant finish the quest, I cannot interact with putress because the game does not recognize the quest as finished. But as you can see I have both the blood and the scales.Also the spider did not drop anything.... and NO the poison is not on Anya it never dropped. I reloaded an older save did everything again just to experience the exact same bug TWICE. So far I have not found a workaround.

r/WC3 • • 20d ago

Technical / Bug / Support [Bug] DE Graphics make the cursor wildly inaccurate, the barracks hitbox is gigantic and it's almost impossible to click this farm.

Thumbnail
video
9 Upvotes

How do they not test this? The first thing I did was load up a game, do a standard build order and instantly ran into this issue.

r/WC3 • • 17d ago

Technical / Bug / Support can't reload new campaign missions, this is the error message. Anyone else?

Thumbnail
image
10 Upvotes

r/WC3 • • 15d ago

Technical / Bug / Support Patch 3.0 bug report: Unable to kill Phoenix (Bloodmage)

11 Upvotes

Can I report bugs here?

Just had a 1v1 laddergame on W3Champions where my opponent's Bloodmage's Phoenix became unkillable at 1 HP.

Here's the replay: https://w3champions.com/match/6aac280fe066667e29f4d308

Phoenix becomes unkillable from around 29:30 onward.

r/WC3 • • 16d ago

Technical / Bug / Support Mac Setup: Inventory Hotkeys & Display Gamma Adjustments for WC3

5 Upvotes

Mac:

  1. Download Karabiner-Elements: https://karabiner-elements.pqrs.org/
  2. Create a file warcraft-iii-inventory.json in ~/.config/karabiner/assets/complex_modifications/
  3. Paste the following file: https://github.com/AccCreate/WC3/blob/main/mac-warcraft-iii-inventory.json
  4. Then open Karabiner-Elements → Complex Modifications → Add rule, and enable “Warcraft III: Command+Z/X/A/S/Q/W…”.

Windows (Option 1):

  1. Download Warcraft 3 Inventory: https://github.com/AucT/WarCraft-Inventory-Hotkeys/releases

Windows (Option 2):

  1. Download Autohotkey: https://www.autohotkey.com/
  2. Create a .ahk file with this pasted value: https://github.com/AccCreate/WC3/blob/main/windows-warcraft-iii-inventory.ahk
  3. Double click the .ahk file to run it.

Note: To whoever is maintaining W3Champions App (Macs don't run exe files natively) or Liquidpedia page, could you update and add the one for Mac as well? Thank you.

-------------

Adjusting WC3 Brightness/Gamma on Mac

For Mac users who want to modify the brightness/gamma of Warcraft III directly:

  1. Download an AI code assistant like Codex.
  2. Ask the LLM agent to set up the macOS display agent using the instructions in the README from AccCreate/WC3 on GitHub. Let the agent handle the build steps for you.
  3. The values are adjusted inside the WarcraftDisplayAgent file.

By default, the values I use are (feel free to tweak these to match your monitor):

  • let gameGamma: Float = 0.60
  • let gameContrast: Float = 1.04

Note: Follow the steps in the README if you want the agent to activate automatically whenever you launch WC3.

Why do this? Night Elf players need to see tree layouts in unexplored areas of the map. Fine tuning the gamma makes unvisited trees significantly easier to spot through the fog.

For Windows Users: If you're on Windows and use an NVIDIA GPU, you can get a similar effect using NVIDIA App Game Filters. Otherwise, you can ask an LLM agent to translate or re-implement the Mac codebase logic for Windows.

You can see the map is clearer even on fog if you change the saturation which can be very helpful for some individuals.

r/WC3 • • 18d ago

Technical / Bug / Support Warcraft III 3.0 (build 24268) crashes during HD map loading when a map overrides `UI\MiniMap` textures: close-during-async-read in the archive layer (full analysis, repro, workaround)

11 Upvotes

TL;DR

  • Affected: Windows, 3.0.0.24268, Graphics Quality Definitive Edition or Reforged, on   a map whose archive overrides a stock UI\MiniMap\*.dds. Seen in W3Champions ladder games
  • Symptom: ACCESS_VIOLATION reading 0x2B8 at Warcraft III.exe+0x1640A8 during the loading   bar, on both Async File Load threads at once. About 2 in 3 attempts kill the client.
  • Mechanism: the game closes the map archive while still asynchronously reading files out of it;   the reader's handle revalidation returns NULL with ERROR_INVALID_HANDLE, and the read path   dereferences that NULL instead of returning.
  • Players: set Graphics Quality to Classic — 0 faults in 4 Classic loads, 11 in 11 DE /   Reforged loads.
  • Map makers: do not override the game's minimap icon textures (the confirmed case; the defect   applies to any file read from the map archive while the loader is still working on it) until this   is fixed; the game ships all of them itself.
  • W3Champions has removed the four overrides from its maps; re-packed maps without   them load normally in Definitive Edition on both maps tested.

Symptom

The client dies during the loading bar, with the same signature every time:

ACCESS_VIOLATION (Failed to read address 0x00000000000002B8
                  at instruction 0x00007FF6EEB340A8)
DBG-MODULE<00007FF6EE9D0000 0e155000 "Warcraft III.exe" ...>   build 24268

Both Async File Load workers fault in the same instant, so each crash writes two folders under Documents\Warcraft III\Errors, 0.48-0.60 s apart, with byte-identical stacks.

Over 15 player loads of one map in a day: Classic (PREF_GENERAL_HD = 0) 0/4 faulted, HD (1 or 2) 11/11 faulted; of those 11, 7 killed the process and 4 survived and played — about 1 in 3 survived. The next day, 7 further LAN loads in Definitive Edition, all fatal.

Reproduction

  1. Windows, Warcraft III 3.0.0.24268.
  2. Graphics Quality Definitive Edition or Reforged.
  3. A custom map whose archive contains UI\MiniMap\MiniMapIconCreepLoc2.dds and    UI\MiniMap\MiniMapIconCreepLoc.dds, overriding the stock files — any current W3Champions ladder    map. Two different maps faulted at the same offset 0xB0F4 and size 0x5F0, so it does not vary    with the map.
  4. Load the map.
  5. The fault lands 0.119-0.210 s after the third Opening map of the load, 7/7 measured. Look in    Documents\Warcraft III\Errors.

Controls that did not reproduce: Classic graphics (0/4 against 11/11); the same map in a Battle.net custom game in Definitive Edition (no Errors folder at all — one observation, and this machine writes one even when the fault is survived); the same map re-packed without the four UI\MiniMap\ overrides.

Analysis

Fault site — the buffered sector read's lazy-init path (Storm SFileReadFileEx2), byte-identical in every dump:

+0x16407B  mov  rcx, qword ptr [rcx+0x130]  ; rcx = the ARCHIVEREC the FILEREC points at
+0x164082  call Warcraft III.exe+0x1628A0   ; GetArchivePtr -> NULL
+0x164087  mov  rbx, rax                    ; RBX = 0
+0x16408F  test rax, rax
+0x164092  je   +0x1640A2                   ; TAKEN - but only skips the lock at +0x1E9CA80
+0x1640A2  mov  r15d, 0x10
+0x1640A8  mov  r13, qword ptr [rbx+0x2b8]  ; <<< FAULT, RBX still NULL

Crash context in every dump: RAX=0 RBX=0 RCX=6 RDX=0 RBP=0x1000 RSI=0 R8=0x10 R11=0 R14=0 R15=0x10.

+0x1628A0 is Storm's GetArchivePtr: validate the handle is still registered, then refcount. It walks the global TSList<ARCHIVEREC> under a lock, with two NULL returns — arg-was-NULL at +0x1628B2, and list-not-found at +0x162927:

+0x162927  lea  rcx, [rip+...]     ; &registry lock
+0x16292E  call +0x1E9CAC0         ; lock LEAVE
+0x162934  mov  ecx, 6             ; Storm error 6
+0x162939  call +0x15A460          ; SErrSetLastError(6) = ERROR_INVALID_HANDLE
+0x16293E  xor  ebx, ebx
+0x162940  mov  eax, ebx           ; NULL return: list-not-found

List-not-found is the path taken: RCX = 6 is that mov ecx, 6, untouched between the call and the fault. So the pointer was non-NULL but no longer registered.

In all three dumps that captured [FILEREC+0x130], both TSLink pointers (+0x00, +0x08) are zero — UnlinkNode's signature — while the refcount at +0x20 is still 2, the sector buffer at +0x2B8 is intact and +0x24 still holds the map's .w3x path: unregistered, not freed. The reader is [FILEREC+0x1C] = "UI\MiniMap\MinimapIconCreepLoc2.dds", [+0x138] = 0xB0F4, [+0x144] = 0x5F0 (1520 bytes), [+0x228] = 0 (buffer NULL, hence the lazy init), RBP/R14 = 0x1000 / 0 — the file's first read. Its sibling is MinimapIconCreepLoc.dds; both workers point at the same ARCHIVEREC, so they fault together and always produce a folder pair.

Three-part defect:

  1. [FILEREC+0x130] is a raw, uncounted back-pointer — SFileOpenFileEx stores the archive    there with no AddArchiveRef.
  2. SFileCloseArchive unlinks unconditionally — UnlinkNode is decoupled from the refcount and    never walks the FILEREC list or the async read queue: no drain, no cancel.
  3. The null check at +0x16408F is a missing early return — the je at +0x164092 skips only    the lock, so a NULL becomes [NULL+0x2B8] instead of a read error.

Any one of the three fixes it: a counted archive reference in FILEREC; drain or cancel pending async reads in SFileCloseArchive; or an early return at +0x16408F.

Symbolisation. No ASLR on the image: base 0x00007FF6EE9D0000, size 0x0E155000, so every address above is an RVA. fileversion 3.0.0.24268, guid=9B3EECC77B674CD09B65CD55F2992D4F, age=1.

Inference. The same .w3x is opened several times per load, each a distinct ARCHIVEREC, no reopen-dedup; a lobby adds five more preview opens within ~150 ms. [inference] those extra overlapping opens and closes shift an SFileCloseArchive into the window where the loading open's minimap reads are still draining. The archive layer has no LAN branch, so this is timing, not a separate code path.

For map makers

The four files are MiniMapIconCreepLoc2.dds, MiniMapIconCreepLoc.dds, MiniMap-Gold.dds and MiniMap-NeutralBuilding.dds, under UI\MiniMap\. If your map ships its own copies, the minimap icon read comes from your map's archive — the short-lived record the loader opens and closes several times per load — instead of the game's long-lived data, and that is what puts it in the race.

Build 24268 ships all four itself, in one layer: war3.w3mod/ui/minimap/minimapiconcreeploc2.dds, 1520 bytes — the same size as the override, which is why size alone never identified the source. No ui/minimap/ exists in _hd.w3mod, _de.w3mod, the _teen layers or the 13 locale layers: SD, Reforged and DE all draw from that one set. So dropping the override costs only the custom art; the markers still render, in Blizzard's version. W3Champions had shipped these unchanged since 2022-10-18 — harmless until 3.0.

The defect is not specific to those four files. Any file the engine reads asynchronously out of the map archive at the moment it closes that archive faults the same way. The minimap icon set is simply the read that is in flight during the loading bar's minimap phase, when the engine has reopened the map archive for the third time. Files the engine reads at other times did not trigger it — the W3Champions maps still carry their command-button icons and script-driven custom icons, and load fine without the four overrides — and we did not test overrides of other assets the engine loads during the loading screen. So until Blizzard fixes the archive layer, the safe rule is: do not override any stock asset the engine loads during map loading, the minimap icons being the confirmed case.

Second bug, minor

In the LAN lobby the game opens a mangled map path exactly four times, 6-10 s before the load, unescaping \NN as a hex byte: Maps/W3Champions\44_... opens as Maps/W3ChampionsD_w3c_... (\44 -> 'D' = 0x44), and Maps/W3Champions\29_... as Maps/W3Champions)_w3c_... (\29 -> ')' = 0x29). Those paths cannot exist, so each is a failed archive open.

It is generic 3.0 behaviour, not a naming issue: the stock map maps\(2)bootybay.w3m was opened a fourth time as maps(2)bootybay.w3m, backslash swallowed. Nor is it reachable from the joining client — forward slashes changed nothing, the game re-normalises to its backslash form (16 opens of Maps/W3Champions\44_..., 0 forward-slash) and still emitted all four mangled opens.

Attachments

On request: Crash.txt, War3.dmp and War3Log.txt from Documents\Warcraft III\Errors\2026-09-14 23.10.03 07f6048c and ...\2026-09-14 19.11.55 48d4616c, plus the full written analysis.

Scope: since 3.0, macOS players finish HD matches on these same maps at their usual rate. The above is the Windows client.

r/WC3 • • 13d ago

Technical / Bug / Support [Bug report for the Battle.net desktop team] macOS: single-instance detection never works if the account's Full Name has accented/composed characters (ö, é, 한글, が, й …) — root cause + 30-line repro inside

5 Upvotes

TL;DR for the devs: bna::ipc::InstanceLock::acquire registers an NSConnection name built from CSCopyUserName() and later looks the same string up. Foundation registers the name byte-for-byte but looks it up in decomposed form. For any macOS user whose Full Name contains precomposed characters, the lookup can never hit, so every Battle.net process believes it is the first instance. Battle.net --exec=launch <game> then starts a full second client instead of handing the command over. The fix on your side is probably one line: normalise the name before registerName:.

Symptoms

  • Battle.net --exec="launch W3" opens a second, full Battle.net client instead of exiting.
  • The second client fights the first one: [WebServer] Failed to create acceptor, failed to bind endpoint: port=22885 ec=Address already in use, and ~10–15 s later the original session is kicked with [BNLogin] Disconnected from Battle.net: err=ERROR_SESSION_DUPLICATE (60).
  • In battle.net-*.log, every process logs mode=server, including the ones started with --exec=: [Main] Command line arguments: {[0]=--exec=launch W3} [Main] Opening IPC shared memory. queueName=User:<Full Name>:Battle.net IPC ShMem mode=server A healthy machine logs mode=client followed by Leaving because another instance of battle.net is running.
  • Client.SingleInstance = "true", deleting /tmp/boost_interprocess/*, reinstalling, rebooting: no effect. We have a log of a single, freshly booted, 21-second-old client and the very next --exec= process still came up as mode=server.
  • We would expect the same for anything else that relies on the election (opening Battle.net twice, battlenet:// links) — we have not tested those on an affected account.

Seen on Battle.net 2.52.11.17778, Apple Silicon, macOS 26.5, 26.6.2 and 27.0.

Root cause

From battle.net-core (build 17778, x86_64). Offsets are for that build.

Name source (0x008acbc0):

CSCopyUserName(false)                         // the account's Full Name
CFStringGetCString(..., kCFStringEncodingUTF8) // into a 256-byte stack buffer
fmt("User:{}:{}", fullName, "Battle.net IPC Queue")

(Side note: the bool result of that function is discarded and the buffer isn't zeroed.)

Election (InstanceLock::acquire, 0x01129ae0), paraphrased:

NSString *n = [NSString stringWithUTF8String:name.c_str()];
NSConnection *c = [NSConnection connectionWithRegisteredName:n host:nil];
if (c != nil) {
    [c setRequestTimeout:1.0];
    [c setReplyTimeout:1.0];
    [c rootProxy];
    return false;            // another instance exists -> we are a client
}
...
[conn registerName:n];       // return value ignored
return true;                 // we are the server

There is no fallback: no lock file, no process enumeration, no kill(server_pid, 0). With SingleInstance=true a lost election means "client, forward the command and leave"; a won election means "server". The Boost shared memory / message queue under /tmp/boost_interprocess is only the transport that is opened afterwards.

The Foundation behaviour that breaks it: -[NSConnection registerName:] publishes the name exactly as given, while +[NSConnection connectionWithRegisteredName:host:] looks up a decomposed form of the string. CSCopyUserName returns the Full Name precomposed (that is how macOS stores what the user typed), so the registered key and the looked-up key differ for every name containing a precomposed character, and the lookup returns nil forever.

Measured with two processes (holder registers, second process looks up the same string):

Full Name sample lookup of the registered name
Plain ASCII hit
Zoë Müller, Adèle miss
한글 (Hangul) miss
が (kana with dakuten) miss
й (Cyrillic) miss
same names, registered already decomposed hit — queried in either form
Ω U+2126, Å U+212B hit

The last row tells you which decomposition it is: the file-system one (-[NSString fileSystemRepresentation] / getFileSystemRepresentation:maxLength:), which leaves U+2000–U+2FFF etc. alone — not canonical NFD, which would turn U+2126 into U+03A9. : and / pass through unchanged.

That is a lot of players: German, French, Spanish, Portuguese, Polish, Turkish, Vietnamese, Korean, Japanese, Russian names, anyone with an emoji-free but accented Full Name.

Minimal repro (no Battle.net needed)

// probe.m  —  clang -framework Foundation -Wno-deprecated-declarations probe.m -o probe
#import <Foundation/Foundation.h>
int main(int argc, char **argv) {
  u/autoreleasepool {
    NSString *n = [NSString stringWithUTF8String:argv[1]];
    if ([NSConnection connectionWithRegisteredName:n host:nil]) {
      printf("LOOKUP HIT  -> would be mode=client\n");
      return 0;
    }
    printf("LOOKUP MISS -> would be mode=server\n");
    NSConnection *s = [NSConnection new];
    [s setRootObject:[NSObject new]];
    printf("registerName -> %s\n", [s registerName:n] ? "YES" : "NO");
    if (argc > 2)   // hold the name
      [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:30]];
  }
  return 0;
}

Terminal 1: ./probe "User:Zoë Müller:test" hold Terminal 2: ./probe "User:Zoë Müller:test"

Terminal 2 prints LOOKUP MISS and then registerName -> NO — the name is taken (the bootstrap server refuses the second registration), it just can't be found. Replace the name with "User:Zoe Muller:test" and terminal 2 prints LOOKUP HIT.

To reproduce with the real client: give a macOS test account a Full Name such as Zoë Müller (System Settings → Users & Groups → Control-click the user → Advanced Options → Full name), sign in to Battle.net, then run

/Applications/Battle.net.app/Contents/MacOS/Battle.net --exec="launch W3"

and watch a second client appear. To check whether a given machine is affected: id -F | xxd -p — a precomposed ö shows up as c3b6; a decomposed one would be 6fcc88.

Suggested fixes (any one of these)

  1. Normalise before both calls — build the name from [fullName decomposedStringWithCanonicalMapping], or better from the file-system representation so it matches what Foundation looks up. Registering the decomposed form makes the lookup hit regardless of which form the second process asks for.
  2. Don't put the display name in the key at all. getuid() (or the short user name, which macOS restricts to ASCII) is unique per user and immune to this.
  3. Independently of the above: check the result of registerName:. Today a process that fails to register still carries on as "server", which is how two "authoritative" clients end up sharing one account session.

Workaround for affected players (until a fix ships)

Change the macOS account's Full name to plain A–Z letters (leave User name and Home directory alone), restart the Mac, start Battle.net. This removes the trigger entirely.

Happy to share logs, the full analysis, or test a build if someone from the Battle.net desktop team wants to reach out.

Thanks for reading.

r/WC3 • • 14d ago

Technical / Bug / Support Infinite Ghoul Glitch on the Forsaken campaign (spoilers for act ll) Spoiler

10 Upvotes

This is painfully easy to do so I assume someone else has reported it already but...

If you use the infectious ghoul trinket + Leonid's helping had (with the "units cant go below 1hp when active" talent), then let the ghoul's timer hits 0, it goes to 1hp and the timer disappears.

r/WC3 • • 11d ago

Technical / Bug / Support Sharing resource desync bug

3 Upvotes

I haven't gotten around to posting on the bnet support forums, but apparently, if you share resources to someone with a Korean version of the game, the game desyncs for them and they are crashed. Apparently, if you switch to the English/US version, this stops.

I had this happen to me in some of my games, and after asking a couple of Korean users, they said that the bug stopped once they switched over the language versions. It seems like there's some weird new coding that is making it unstable for some language patches.

r/WC3 • • 2d ago

Technical / Bug / Support Illidan inventory loadout for Gates of the Abyss

1 Upvotes

Anyone have a fix for the bug where Illidan's inventory is reset to just the eye of Kiljaeden in the Blood Elf Campaign? I was expecting to see his inventory pass through from the last night elf mission, but it appears it doesn't properly do that anymore. I recall that if you continue consistently from the end of the Night Elf Campaign into the Blood Elf one it would carry over, but with the bug where the game reverts from reforged to classic graphics, this method no longer seems to work either.

r/WC3 • • 18d ago

Technical / Bug / Support Bug report

1 Upvotes

Is there any like thread where we can report bugs that came with Definitive Edition?

Love the new release, but there are some bugs that seem to have came with it and i just wanna report what i've experienced so far:

-No music in game. I started a custom match after playing the campaign, and could not hear any in game music.
- Ability custom hotkeys not working. I use custom "QWER" hotkey setting and during the campaign it would randomly occur that one of the heroes hotkeys would get reset to their default bindings. often times with an ability on "F" which also opens up the level up ability selection menu, so you can't even cast the spell. After swapping units a few times or adjusting the settings mid-game it would seem to fix itself.
- Game crash after alt-tabbing (Windows 10 if that matters). Was in the middle of a single player Custom game and i got disconnected and the game crashed (Or rather got cancelled).

Note: When i am talking about an offline custom game i mean playing a melee map offline vs bot, a map like Fading Autumn or Norther Isles.

r/WC3 • • Jun 15 '26

Technical / Bug / Support How to install w3champion on Linux Mint for noobs

13 Upvotes

This is for mint so the steam path is ~/.steam

If yours is different just change it to whatever it is.

1. Set up Bnet first

Add Bnet to Steam as a non-steam game. Go to Properties -> Compatibility and set it to Proton Experimental. Run it, install Bnet, download wc3 completely, and launch it once to make sure it works.

2. Install WebView2 runtime

Run this command to download WebView2 Runtime

WEBVIEW_DOWNLOAD_URL="https://go.microsoft.com/fwlink/p/?LinkId=2124701"
WEBVIEW_DOWNLOAD_PATH="$HOME/Downloads/MicrosoftEdgeWebView2RuntimeInstallerX64.exe"
curl -L "$WEBVIEW_DOWNLOAD_URL" --output "$WEBVIEW_DOWNLOAD_PATH"

Go back to your Bnet shortcut in Steam, open Properties, and change the Target path to MicrosoftEdgeWebView2RuntimeInstallerX64.exe in your Downloads folder. Hit Play, let it install, and close it when it finishes.

3. Apply the Windows 7 fix

Find your shortcut's 10-digit Steam folder ID by running:

ls ~/.steam/steam/steamapps/compatdata/ | sort -n

Look for the 10 digit number. Then run this command to plop that number into the folder (replace [YOUR_ID] with your actual 10 digit folder number)

cat << 'EOF' >> ~/.steam/steam/steamapps/compatdata/[YOUR_ID]/pfx/user.reg

[Software\\Wine\\AppDefaults\\msedgewebview2.exe] 1300000000
"Version"="win7"
EOF

4. Install W3Champions

Download the w3champions-Setup-1.5.6.exe legacy client from their GitHub releases. Go back to your Steam shortcut Properties, change the Target to this w3champions setup file, and hit Play. Complete the setup and log into Bnet when it asks.

5. Set your final launcher path

Change your Steam shortcut Target one last time to point directly to the newly installed launcher deep inside your prefix:

~/.steam/steam/steamapps/compatdata/[YOUR_ID]/pfx/drive_c/users/steamuser/AppData/Local/Programs/w3champions/W3Champions.exe

Hit Play!

If you have any issues you can refer to clemenscodes Github page or try the Linux support channel on the w3champions discord but I thought this might be a clear and concise way to get w3champions installed for even those new to Linux (like myself lol). I've got it up and running on two separate machines this way!

r/WC3 • • May 10 '26

Technical / Bug / Support Legacy Warcraft3 (1.29) got a Patch - fixing access, cinematics and language

Thumbnail
image
24 Upvotes

r/WC3 • • May 10 '26

Technical / Bug / Support W3Champions: Planned Downtime tomorrow (9am CEST)

Thumbnail
image
19 Upvotes

r/WC3 • • Jun 28 '26

Technical / Bug / Support Please help - can´t bind spell

Thumbnail
image
2 Upvotes

Hi, I can´t find any post exactly about this on internet. Can you help me how to fix it? I can´t key bind (ONLY) shaman´s purge.
Thank you.

r/WC3 • • May 03 '26

Technical / Bug / Support Best QWER Hotkeys in 2026 - Download & Guide

Thumbnail
youtu.be
19 Upvotes

r/WC3 • • Dec 28 '25

Technical / Bug / Support Final ELO Ranking of the Year! Happy back on Top

Thumbnail
image
37 Upvotes

r/WC3 • • May 02 '26

Technical / Bug / Support Not everybody got the new Legacy Client - Team is on it

Thumbnail
image
14 Upvotes

r/WC3 • • May 07 '26

Technical / Bug / Support Classic game owners can now download Legacy TFT

Thumbnail
6 Upvotes