Battle.net launcher update on Wine/Linux

Technical Support
Just updated Diablo 3 with the 2.0.1 mega patch and it plays flawlessly under 32 bit Wine1.5.5 on Linux (Fedora 20 64bit).

After restarting the game for the first time after the update I was prompted to update the Battle.net launcher which I accepted and the update completed. Now the launcher crashes on startup, preventing me from accessing the game.

Just thought I'd put this up as a warning to players using Wine, the game runs fine but updating the Battle.net launcher breaks it.
The crash report references CertGetCertificateChain+0xac() in crypt32 which leads me to think this may me due to some update to the launcher's DRM or the encryption type used...

Unhandled exception: page fault on read access to 0x00000009 in 32-bit code (0x7e8cbc2c).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:7e8cbc2c ESP:069be748 EBP:069be830 EFLAGS:00210206( R- -- I - -P- )
EAX:08cde038 EBX:7e91da5c ECX:001fb108 EDX:7e911aac
ESI:00000001 EDI:08cde038
Stack dump:
0x069be748: 0000000b 00000000 00000000 00000000
0x069be758: 00000000 08cde0b8 00000001 069be830
0x069be768: 1024434f 001fb100 00000000 08cde0b8
0x069be778: 001fb100 001fb348 00000000 069be7b4
0x069be788: 7e8c311e 001fb348 00000014 7e8bd8d0
0x069be798: 7e8bd8d0 08cde0b8 1028ff49 0021dcb0
Backtrace:
=>0 0x7e8cbc2c CertGetCertificateChain+0xac() in crypt32 (0x069be830)
1 0x1028d9c6 in libcef (+0x28d9c5) (0x069be910)
2 0x1020a41a in libcef (+0x20a419) (0x069be948)
3 0x10209973 in libcef (+0x209972) (0x069be9a8)
4 0x7bc7d3f7 in ntdll (+0x6d3f6) (0x069bea18)
5 0x7bc71540 call_thread_func_wrapper+0xb() in ntdll (0x069bea28)
6 0x7bc7179d call_thread_func+0x7c() in ntdll (0x069beaf8)
7 0x7bc7151e RtlRaiseException+0x21() in ntdll (0x069beb18)
8 0x7bc7b389 in ntdll (+0x6b388) (0x069bf368)
9 0xf763ed8a start_thread+0xc9() in libpthread.so.0 (0x069bf428)
10 0xf75719be __clone+0x5d() in libc.so.6 (0x00000000)

~ lots of these

199 0xf75719be __clone+0x5d() in libc.so.6 (0x00000000)
200 0xf75719be __clone+0x5d() in libc.so.6 (0x00000000)
0x7e8cbc2c CertGetCertificateChain+0xac in crypt32: movl 0x8(%esi),%eax
Modules:
Module Address Debug info Name (151 modules)
PE 340000- 3a8000 Deferred qtxml4
PE 400000- ccb000 Deferred battle.net
PE cd0000- e9e000 Deferred qtscript4
PE 1780000- 178a000 Deferred qgif4
PE 1790000- 179c000 Deferred qico4
PE 17a0000- 17d7000 Deferred qjpeg4
PE 17e0000- 1824000 Deferred qmng4
PE 2900000- 2b07000 Deferred d3dcompiler_43
PE 2b10000- 2bca000 Deferred libglesv2
PE 2ce0000- 2d05000 Deferred libegl
PE 4030000- 407d000 Deferred qtiff4
PE 10000000-1192f000 Export libcef
PE 3c910000-3d165000 Deferred battle.net
ELF 42b08000-42b25000 Deferred libgcc_s.so.1
PE 4ad00000-4b681000 Deferred icudt
PE 61000000-61375000 Deferred qtxmlpatterns4
PE 62000000-6203a000 Deferred qtsql4
PE 64000000-64259000 Deferred qtnetwork4
PE 65000000-6595f000 Deferred qtgui4
PE 66000000-66357000 Deferred qtdeclarative4
PE 67000000-672d3000 Deferred qtcore4
PE 78050000-780b9000 Deferred msvcp100
PE 78aa0000-78b5f000 Deferred msvcr100
ELF 7b800000-7b8fc000 Deferred kernel32<elf>
\-PE 7b810000-7b8fc000 \ kernel32
ELF 7bc00000-7bcc1000 Dwarf ntdll<elf>
\-PE 7bc10000-7bcc1000 \ ntdll
ELF 7bf00000-7bf03000 Deferred <wine-loader>
ELF 7d272000-7d300000 Deferred msvcrt<elf>
\-PE 7d290000-7d300000 \ msvcrt
ELF 7d43a000-7d44f000 Deferred dwmapi<elf>
\-PE 7d440000-7d44f000 \ dwmapi
ELF 7d44f000-7d48c000 Deferred rsaenh<elf>
\-PE 7d460000-7d48c000 \ rsaenh
ELF 7d48c000-7d493000 Deferred libnss_dns.so.2
ELF 7d49c000-7d4b5000 Deferred imagehlp<elf>
\-PE 7d4a0000-7d4b5000 \ imagehlp
ELF 7d4b5000-7d529000 Deferred libgcrypt.so.11
ELF 7d529000-7d539000 Deferred libtasn1.so.3
ELF 7d539000-7d5d1000 Deferred libgnutls.so.26
ELF 7d5e7000-7d61a000 Deferred uxtheme<elf>
\-PE 7d5f0000-7d61a000 \ uxtheme
ELF 7d61a000-7d620000 Deferred libxfixes.so.3
ELF 7d620000-7d62c000 Deferred libxcursor.so.1
ELF 7d630000-7d634000 Deferred libgpg-error.so.0
ELF 7d695000-7d6be000 Deferred libexpat.so.1
ELF 7d6be000-7d6fb000 Deferred libfontconfig.so.1
ELF 7d6fb000-7d70c000 Deferred libxi.so.6
ELF 7d70c000-7d710000 Deferred libxcomposite.so.1
ELF 7d710000-7d71b000 Deferred libxrandr.so.2
ELF 7d71b000-7d726000 Deferred libxrender.so.1
ELF 7d726000-7d72c000 Deferred libxxf86vm.so.1
ELF 7d72c000-7d751000 Deferred libxcb.so.1
ELF 7d751000-7d757000 Deferred libuuid.so.1
ELF 7d757000-7d893000 Deferred libx11.so.6
ELF 7d893000-7d8a6000 Deferred libxext.so.6
ELF 7d8a6000-7d8c0000 Deferred libice.so.6
ELF 7d8c0000-7d8c9000 Deferred libsm.so.6
ELF 7d8c9000-7d951000 Deferred winex11<elf>
\-PE 7d8d0000-7d951000 \ winex11
ELF 7d951000-7d988000 Deferred libpng16.so.16
ELF 7d988000-7da2a000 Deferred libfreetype.so.6
ELF 7da4c000-7dab1000 Deferred ddraw<elf>
\-PE 7da50000-7dab1000 \ ddraw
ELF 7dab1000-7dbe5000 Deferred wined3d<elf>
\-PE 7dac0000-7dbe5000 \ wined3d
ELF 7dbe5000-7dc1c000 Deferred d3d9<elf>
\-PE 7dbf0000-7dc1c000 \ d3d9
ELF 7dc1c000-7dc32000 Deferred wtsapi32<elf>
\-PE 7dc20000-7dc32000 \ wtsapi32
ELF 7dc32000-7dc53000 Deferred imm32<elf>
\-PE 7dc40000-7dc53000 \ imm32
ELF 7dc53000-7dd32000 Deferred comdlg32<elf>
\-PE 7dc60000-7dd32000 \ comdlg32
ELF 7dd32000-7dd6c000 Deferred winspool<elf>
\-PE 7dd40000-7dd6c000 \ winspool
ELF 7dd6c000-7dd93000 Deferred msacm32<elf>
\-PE 7dd70000-7dd93000 \ msacm32
ELF 7dd93000-7de3f000 Deferred winmm<elf>
\-PE 7dda0000-7de3f000 \ winmm
ELF 7de3f000-7de52000 Deferred psapi<elf>
\-PE 7de40000-7de52000 \ psapi
ELF 7de52000-7de8a000 Deferred usp10<elf>
\-PE 7de60000-7de8a000 \ usp10
ELF 7de8a000-7deb4000 Deferred netapi32<elf>
\-PE 7de90000-7deb4000 \ netapi32
ELF 7deb4000-7dee1000 Deferred secur32<elf>
\-PE 7dec0000-7dee1000 \ secur32
ELF 7dee1000-7df06000 Deferred mpr<elf>
\-PE 7def0000-7df06000 \ mpr
ELF 7df06000-7df74000 Deferred wininet<elf>
\-PE 7df10000-7df74000 \ wininet
ELF 7df74000-7e067000 Deferred comctl32<elf>
\-PE 7df80000-7e067000 \ comctl32
ELF 7e067000-7e0d2000 Deferred shlwapi<elf>
\-PE 7e080000-7e0d2000 \ shlwapi
ELF 7e0d2000-7e2e4000 Deferred shell32<elf>
\-PE 7e0e0000-7e2e4000 \ shell32
ELF 7e2e4000-7e3f2000 Deferred oleaut32<elf>
\-PE 7e300000-7e3f2000 \ oleaut32
ELF 7e3f2000-7e474000 Deferred urlmon<elf>
\-PE 7e400000-7e474000 \ urlmon
ELF 7e474000-7e4ab000 Deferred winhttp<elf>
\-PE 7e480000-7e4ab000 \ winhttp
ELF 7e4ab000-7e515000 Deferred libfreebl3.so
ELF 7e515000-7e51e000 Deferred librt.so.1
ELF 7e51e000-7e532000 Deferred libz.so.1
ELF 7e532000-7e562000 Deferred libcrypt.so.1
ELF 7e562000-7e5a0000 Deferred libnspr4.so
ELF 7e5a0000-7e5a6000 Deferred libplc4.so
ELF 7e5a6000-7e5cc000 Deferred libnssutil3.so
ELF 7e5cc000-7e71b000 Deferred libnss3.so
ELF 7e71b000-7e747000 Deferred libsmime3.so
ELF 7e747000-7e784000 Deferred libssl3.so
ELF 7e784000-7e7a1000 Deferred libsasl2.so.3
ELF 7e7a1000-7e7ba000 Deferred libresolv.so.2
ELF 7e7ba000-7e7ca000 Deferred liblber-2.4.so.2
ELF 7e7ca000-7e825000 Deferred libldap_r-2.4.so.2
ELF 7e826000-7e847000 Deferred iphlpapi<elf>
\-PE 7e830000-7e847000 \ iphlpapi
ELF 7e847000-7e8a3000 Deferred wldap32<elf>
\-PE 7e850000-7e8a3000 \ wldap32
ELF 7e8a3000-7e95c000 Dwarf crypt32<elf>
\-PE 7e8b0000-7e95c000 \ crypt32
ELF 7e95c000-7e98e000 Deferred wintrust<elf>
\-PE 7e960000-7e98e000 \ wintrust
ELF 7e98e000-7e9bd000 Deferred ws2_32<elf>
\-PE 7e9a0000-7e9bd000 \ ws2_32
ELF 7e9bd000-7ea33000 Deferred rpcrt4<elf>
\-PE 7e9d0000-7ea33000 \ rpcrt4
ELF 7ea33000-7eb38000 Deferred ole32<elf>
\-PE 7ea50000-7eb38000 \ ole32
ELF 7eb38000-7eb99000 Deferred advapi32<elf>
\-PE 7eb40000-7eb99000 \ advapi32
ELF 7eb99000-7ec59000 Deferred gdi32<elf>
\-PE 7ebb0000-7ec59000 \ gdi32
ELF 7ec59000-7ed97000 Deferred user32<elf>
\-PE 7ec70000-7ed97000 \ user32
ELF 7ef97000-7efde000 Deferred libm.so.6
ELF 7efdf000-7efe3000 Deferred libxinerama.so.1
ELF 7efe3000-7efe8000 Deferred libplds4.so
ELF 7efe8000-7f000000 Deferred version<elf>
\-PE 7eff0000-7f000000 \ version
ELF f7474000-f7479000 Deferred libdl.so.2
ELF f747a000-f7638000 Dwarf libc.so.6
ELF f7638000-f7653000 Dwarf libpthread.so.0
ELF f7653000-f7660000 Deferred libnss_files.so.2
ELF f7670000-f7674000 Deferred libxau.so.6
ELF f7675000-f77b6000 Dwarf libwine.so.1
ELF f77b7000-f77d9000 Deferred ld-linux.so.2
ELF f77d9000-f77da000 Deferred [vdso].so
Threads:
process tid prio (all id:s are in hex)
0000000e services.exe
00000035 0
0000001e 0
00000015 0
00000010 0
0000000f 0
00000012 winedevice.exe
0000001a 0
00000019 0
00000014 0
00000013 0
0000001b plugplay.exe
00000020 0
0000001d 0
0000001c 0
00000027 explorer.exe
00000028 0
00000036 Agent.exe
00000067 0
0000005f 0
00000021 0
0000000d 0
00000033 0
0000003c 0
0000002e 0
0000002b 0
0000002a 0
00000024 0
00000029 0
0000000c -15
0000002f 0
00000022 0
00000043 0
00000042 0
00000041 0
00000040 0
0000003e 0
0000003a 0
00000037 0
00000026 (D) C:\Program Files\Battle.net\Battle.net.4217\Battle.net.exe
00000077 0
00000076 0
00000074 -15
00000072 0 <==
0000007c 0
0000007b 0
0000005d 0
0000005e 0
00000064 15
0000005c 0
0000005b 0
0000005a 0
00000059 0
00000058 0
00000057 0
00000056 0
00000055 0
00000054 0
00000053 0
00000052 0
0000004f 0
0000004e 0
0000004d 0
0000004c 0
0000004b 0
0000004a 0
00000049 0
00000048 0
0000003b 0
0000001f 0
00000047 0
00000018 0
00000045 0
00000038 0
00000025 0
0000000b 0
00000046 0
System information:
Wine build: wine-1.5.5
Platform: i386
Host system: Linux
Host version: 3.12.8-300.fc20.x86_64


I know Blizzard cannot support this configuration but maybe the community can add to this thread if a workaround is found.

I have also posted a blog post on the subject over at http://chapeaulinux.org/diablo-iii-2-0-1-update-on-wine which I will update if something is found.
Hi :)

I'm running Diablo II with PLayOnlinux, wine 1.7.8 then 1.7.13.

Exactly the same behaviour as yours : running fine with 2.0.1 patch (I could play 2 hours.) Then I accepted launcher installation.
--> GRR !!!

But, there's a workaround to have a launcher : disable dbghelp library (wine configuration, libraries, type dbghelp, add, -> disable).

I can launch battle.net launcher. But after, when I'm launching D3, it says to me "game is running". And it is false...

Hey guys :) a little workaround to launch D3 a little more directly when using wine ? (One of my friend have pre-reserve RoS ;) )
Thanks for the report, folks!

As you know, linux is not an officially supported platform by Blizzard... but one of the lead programmers on the Battle.net app team exclusively runs linux at home and tends to look into and fix these sorts of issues in his spare time. I'll alert him to this thread and we'll see where it goes from there!
If you use PlayOnLinux and the diablo 3 patched version of wine 1.5.5 you don't get the launcher problem, but I am getting booted out of the game after a long period of network lag every time. Which never happened before on the old patch...
I've installed this version as you said.... -> doesn't work.
(but some other things works better in launcher (options for instance)
I'm having the same crash (CertGetCertificateChain+0xac() in crypt32) using wine 1.7.13. Tried overriding crypt32 as "native,builtin" and "buildin,native", nothing helped.
why crypt32 instead of dbghelp ?
\o/ !!!!!!

with a native wine version on my distribution (no patch)
wine-1.6.1

I launch directly executable :
/mnt/lvm/Playonlinux/DiabloIII/drive_c/Program\ Files/Diablo\ III/Diablo\ III.exe -launch -uid diablo3_frfr

and it works.
OP here,

Thanks all for your feedback, especially Lornahk from Blizzard and Erebe.

I was able to get past the crypt32 crash by changing from Wine 1.5.5 (the Diablo 3 build) to native 1.7.13. I'm using PlayOnLinux to manage my Wine instances so switching Wine versions for a particular program is easy.

I have updated my blog post with what I did at http://chapeaulinux.org/diablo-iii-2-0-1-update-on-wine

The Battle.net launcher still crashes, the crash report is now native to the application and allows me to send a crash report to Blizzard. However the crash is now delayed enough so I am able to launch the game which is the main concern out of the way.

Extra thanks goes to Erebe for showing how to launch Diablo without the launcher, whilst this doesn't fix the launcher problem it is the best workaround for this situation.
Instead of having my D3 icon running ".../drive_c/Program Files/Diablo III/Diablo III Launcher.exe" I'm able to create a new on that launches ".../drive_c/Program Files/Diablo III/Diablo III.exe -launch -uid myusername" and that pops me straight into the game's login screen. Awesome!

Played the game for a good few hours yesterday and wow, levelling up nicely.
I am still getting weird lag spikes. The graphics look fine, when I am in town it seems ok, but I am all of the sudden getting disconnected. I've tried multiple versions of wine and keep getting the same behavior...
Just so that you know: http://www.speedtest.net/my-result/3345707130

93MBit up, 94MBit down, ping 5ms

http://www.pingtest.net/result/94155255.png

0% packet loss, 10ms ping, 1ms jitter.
Have no issue in game... wine 1.6.1 from mageia 4

In europe with almost the same line as yours.
http://www.speedtest.net/my-result/3346929160
http://www.pingtest.net/result/94183199.png
Same problem as OP. Tried using the PlayOnLinux 1.5.5-DiabloIII as well as the current Fedora version (1.7.8). I ended up using a Win7 VM to download the D3 files, copy them over to my Wine folder, and was able to run the game without the launcher.
Hopped on to play for a bit on lunch break, but unfortunately a patch was apparently released for the game, necessitating the Battle.net launcher again, which crashes before the update can happen (not that it matters; maintenance was extended to 3p PDT). I guess I have to spin my VM back up and let it re-download the game every time D3 patches. :)
I'm running FC (Fedora Core 20) here. Have been running Diablo III here under Fedora Core for over a year now. However since the new patch I've been unable to get this new Battle Net app to install. Same error as listed above.

For now I'm playing on Windows 7 with some degradation in overall performance.

Thanks for any consideration.
I have PlayOnLinux and use Wine 1.7.13 and the only issues I have revolve around dbghelp.

Diablo 3 needs dbghelp, and Battle.Net doesn't want it (under my current setup).

To update, I need to put in a "disabled" override into my prefix for Battle.net launcher, but to play Diablo 3, I have to remove the override, or set it to native/builtin. Toggling this "works", but I'd rather the solution be to fix whatever is broken in the first place that requires this tweak (work-around) to get it to work at all.

I've even considered using 2 different prefixes, and symlinking my Diablo 3 folder into both so that I can launch Battle.Net from one prefix that can update and install software, but launch the software from a different prefix. I haven't tried it yet as my current setup "works".

So to clarify: Debian 64-bit with PlayOnLinux running wine 1.7.13. "disable" dgbhelp (override) for Battle.Net launcher to not crash, and remove the override to play Diablo 3.
Diablo III.exe needs dbghelp, but the Battle.net Client crashes unless it is disabled. The steps below are to automatically disable dbghelp for the Battle.net Client, but enable it for Diablo III.exe.

edit: This is for WIne 1.7.13 on Mint 16 Mate, but afaik it works on Wine 1.6+, based on Hearthstone feedback.

*** FRESH PREFIX *** (No overrides needed other than dbghelp steps below. No need for setarch, etc.)

To use winecfg to automatically enable/disable dbhelp.dll:
1) Run winecfg. (If you have multiple prefixes, make sure it is the correct prefix.)
2) In the 'Libraries' tab type dbghelp into the 'New override for library' box.
3) Click 'Add', then 'Yes'.
4) Click on 'dbghelp' in the 'Existing_overrides' list.
5) Click 'Edit'.
6) Set to 'disabled'.
7) Click 'OK'
(You have now disabled dbg help to get the Battle.net Client to work. Now we need to re-enable it for 'Diablo III.exe'.)
8) Go to the 'Applications' tab.
9) Click 'Add Application'.
10) Select your 'Diablo III.exe' and click 'Open'.
11) Make sure 'Diablo III.exe' is selected in the list.
12) Switch to the 'Libraries' tab.
13) Type dbghelp into the 'New override for library' box.
14) Click 'Add', then 'Yes'.
15) Click on 'dbghelp' in the 'Existing_overrides' list.
16) Click 'Edit'.
17) Set to 'builtin'.
18) Click 'OK', then 'OK'.
(You have now re-enabled dbghelp.dll for 'Diablo III.exe' only)

Note: The above steps will disable dbghelp for _all_ programs other than Diablo III. It is suggested that you use a separate prefix for Diablo III if you are going to do this.
It is hard to tell what application(s) need dbghelp disabled, so it is easier to just enable it for 'Diablo III.exe'.

Edit: If you are not, you should really be checking/updating WineHQ ... I've had this solution there for days.
mashdar: could the same be done to enable dbghelp for everything except the bnet launcher, and only disable for the launcher? (not that it really matters overall).

I had completely forgot about the applications tab as I rarely have overrides on an application level since I have separate prefixes for separate "groups" of applications generally.
03/04/2014 01:39 PMPosted by Drakier
mashdar: could the same be done to enable dbghelp for everything except the bnet launcher, and only disable for the launcher? (not that it really matters overall).

I had completely forgot about the applications tab as I rarely have overrides on an application level since I have separate prefixes for separate "groups" of applications generally.
I tried for ~30 minutes trying to find which programs to disable dbghelp for, but never succeeded. If you figure it out, I'd love to know! (Clearly disabling it for everything but 'Diablo III.exe' is not optimal.)

Edit: I was focused on 'Diablo III' and 'Battle.net' directories in 'Program Files(x86)'. Maybe there is something somewhere else?
Again thanks,

My issue with the Battle.net launcher is now fixed thanks to mashdar's advice relating to the dbghelp library.

To summarise then, I've changed my Wine instance running D3 from v1.5.5 to a more recent version (v1.7.13) and using wineconf disabled the dbghelp library for all applications except for the "Diablo III.exe" binary.

Both the launcher and the game now runs. The launcher was able to finish off some optimization and downloads and the game also works fine.
Again I've updated my blog post with how this was done using PoL.

Join the Conversation

Return to Forum