aa1982 / wot-xvm

Automatically exported from code.google.com/p/wot-xvm
0 stars 0 forks source link

Crash After Battle #551

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Game client crash after battle ends

Can check there is a lot of players having the same issue and also it was 
reported on FTR.

URLS:

FTR -> Last paragraph 
http://ftr.wot-news.com/2013/10/29/29-10-2013/

WOT Forum
http://forum.worldoftanks.eu/index.php?/topic/315381-wot-closed-after-a-team-bat
tle/
http://forum.worldoftanks.eu/index.php?/topic/315346-game-freezing-at-battle-end
-after-patch-89/

Original issue reported on code.google.com by pedrofsp...@gmail.com on 30 Oct 2013 at 3:07

GoogleCodeExporter commented 9 years ago
"Mr_A have rebuilt Application.swf without any patches and it still crashes."
Where?

I'm not used to Flash/AS programming but in the global case, more logging can't 
hurt and we have to try everything in order to fix this ASAP.
I'll play with the Application.swf patching script tonight but I won't be able 
to debug it properly since my game isn't crashing anymore (I still have 
5.0.1-test2 Application.swf).

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 4:20

GoogleCodeExporter commented 9 years ago
There are plenty of people monitoring this thread who are keen to see a fix and 
can test it for you.
Just post a link here and we will help test it for you.

Original comment by m...@thewridsdale.co.uk on 4 Nov 2013 at 5:23

GoogleCodeExporter commented 9 years ago
Anyway, FlashInit isn't even called before my additional logging: 
Application.swf is NOT loaded when the CTD occurs. What is causing the crash is 
the thing initiating the SWF file (why randomly ?).
I'm not an experienced programmer on that platform but I -think- the issue is 
located in xvmstat/__init__.py, I'll decompile some files and see if there is 
something wrong.

Sorry for discussing about this in there. Also, Maca or Mr_A, feel free to 
correct me or tell me if what I'm doing is useless.

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 5:48

GoogleCodeExporter commented 9 years ago
I set enableUserInfoStatistics to false as recommended but still crashed, then 
did the same with enableCompanyStatistics, loadEnemyStatsInFogOfWar still 
crashed then set showPlayersStatistics to false and no crashes so far (but 
yeah, i dont have stats ingame). Hope it helps.

Original comment by szali...@gmail.com on 4 Nov 2013 at 7:24

GoogleCodeExporter commented 9 years ago
edgar.fournival:
Game crash even with empty res_mods/xvm/mods folder so it won't be inside 
BattleResults.
That was in tes1 version, where until r2904, that's ok for now.

There is also logging like:
[XVM:AUTOLOGIN] processView: introVideo
It's logged before main code inside res_mods/xvm/mods/***-xvm.swf files. When 
game crash it would be last line in log. We he nothing from hangar.

Application.swf is wierd after reassembling by rabcdasm.
I had missing AS3 classes when trying make diff over tes2 version and original.
When i recompiled it with only basic XVM loading line (Application.xvm.patch), 
it's almost ok.
Some parts are changed, but i don't know what that code means...
diff: https://gist.github.com/PavelMaca/f9213c8be54413a2ea23
It doesn't look like problem, since game would crash every time if there was 
problem with that #1 / #0 symbols from diff.

Maybe try debug all python files on start to make log.

Don't have time to play, so i can't test anything.

Original comment by maca.pa...@gmail.com on 4 Nov 2013 at 7:25

GoogleCodeExporter commented 9 years ago
>Application.swf is wierd after reassembling by rabcdasm.

Issue in RABCDasm bugtracker https://github.com/CyberShadow/RABCDAsm/issues/22

Original comment by pavlushko.m@gmail.com on 4 Nov 2013 at 9:41

GoogleCodeExporter commented 9 years ago
More info: client crashes in python part, on Avatar.onLeaveWorld().

Need some python knowledge to compiling in P2.6
this http://pastebin.com/Mw8F3vBx
Avatar.py with more logging. If anybody do this, I will be glad.

Original comment by mr.a.on...@gmail.com on 4 Nov 2013 at 10:01

GoogleCodeExporter commented 9 years ago
Decompiled under Debian using pycdc, recompiled using Python 2.6.

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 10:32

GoogleCodeExporter commented 9 years ago
Mr_A, there is an error in your script:

Python 2.6.8 (unknown, Jan 26 2013, 14:35:25) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import py_compile
>>> py_compile.compile('avatar.py')
SyntaxError: ('illegal expression for augmented assignment', ('avatar.py', 
1287, None, 'isOn and flags |= 16\n'))

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 10:54

GoogleCodeExporter commented 9 years ago
This part of code need rewrite, that's why I asked for help. 

Need a python programmer, construction "a|=b" = "a=a|b" and so on.

Original comment by mr.a.on...@gmail.com on 4 Nov 2013 at 11:01

GoogleCodeExporter commented 9 years ago
> Issue in RABCDasm bugtracker https://github.com/CyberShadow/RABCDAsm/issues/22
...was closed almost instantly.

Original comment by gene...@gmail.com on 4 Nov 2013 at 11:08

GoogleCodeExporter commented 9 years ago
Oh ok, I thought you wanted help with the recompiling part.

By the way, what did you used to decompile the .pyc file? I was always able to 
recompile the pycdc output while some other decompilers like uncompyle2 made 
errors in the code.

Last thing, how is this related with Application.swf? I may be wrong but it 
smells like a WG fail in its own code...

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 11:10

GoogleCodeExporter commented 9 years ago
Where can i find the code?
Have quite some years py experience...

Original comment by manuel.t...@gmail.com on 4 Nov 2013 at 11:13

GoogleCodeExporter commented 9 years ago
You can find Avatar.pyc in res\scripts\client, but you need pycdc to decompile 
it under good Python code.

Original comment by edgar.fo...@gmail.com on 4 Nov 2013 at 11:38

GoogleCodeExporter commented 9 years ago
>what did you used to decompile the .pyc file?
uncompyle2. All correctly excl this part (makeVehicleMovementCommandByKeys)

>how is this related with Application.swf?
Dont know:)

>Where can i find the code?
http://pastebin.com/Mw8F3vBx

Original comment by mr.a.on...@gmail.com on 4 Nov 2013 at 11:39

GoogleCodeExporter commented 9 years ago
Here are my humble thoughts on this:
1. We know that patch injection method worked fine on 0.8.8 version of 
application.swf. Maybe WG made some wild changes to it in 0.8.9, but maybe not.
2. Why the f... it doesn't crash with original untouched version, but crashes 
with unmodified recompiled one?.. How this can involve python code by any 
chance? What deepest depths of hell does recompilcation open?

Sorry if I was too emotional :)

Original comment by gene...@gmail.com on 4 Nov 2013 at 11:44

GoogleCodeExporter commented 9 years ago
Hereby lies Application.swf recompiled by Mr.A without patches:
http://www.koreanrandom.com/forum/index.php?app=core&module=attach§ion=attach&a
ttach_id=30570

It causes the same CTD. Why is that? I can't beleive that RABCDAsm is innocent 
after that.

Original comment by gene...@gmail.com on 4 Nov 2013 at 11:55

GoogleCodeExporter commented 9 years ago
edgar.fournival:
>I was always able to recompile the pycdc output while some other decompilers 
like uncompyle2 made errors in the code.

How about wierd numbers in decompiled code from pycdc like "4.59187e+18" 
instead of "0.1" form ucompyle2.
However, code form pycdc looks better.

Original comment by maca.pa...@gmail.com on 5 Nov 2013 at 7:17

GoogleCodeExporter commented 9 years ago
True, and I just noticed pycdc messed up with for loops, but I got the file 
compiling by mixing both decompilers output:
http://pastebin.com/0PtVkxyP

(
Run the Python 2.6 (version is important!) shell (terminal > python2.6) then:
import py_compile
py_compile.compile('path/to/your/file.py')
)

Good luck!

Original comment by edgar.fo...@gmail.com on 5 Nov 2013 at 8:50

GoogleCodeExporter commented 9 years ago
@#113 & #115

the code around line 1287 just doesn't make sense... maybe the compiler tried 
to optimize the code and the decompiler didn't get it...
taking an educated guess, the if/elif-block wants to set flags=1 if going 
forward and flags=2 if going backward (first and second bit as flags is a 
bitfield) plus setting bit 32(int) for first gear forward and bit 16(int) for 
first gear backwards. The bool isOn just doesn't make sense in 'isOn and flags 
|= 16' as u can't assign a bool to an int and if u could, that wouldn't been 
done by an 'and'. I think it was ment something like 'if (isOn == true) then 
(flags |= 16)'. 
If thats what the code should do, replace:

"""
isOn = self.__cruiseControlMode == _CRUISE_CONTROL_MODE.BCKW50
isOn and flags |= 16
"""
with:
"""
if self.__cruiseControlMode == _CRUISE_CONTROL_MODE.BCKW50:
  flags |= 16
"""

The code compiles that way, but i cant test it right now in WoT...
Hopes, that helps.

Cheers!

Original comment by manuel.t...@gmail.com on 5 Nov 2013 at 9:50

GoogleCodeExporter commented 9 years ago
I'm not gonna pretend I understand what the hell you guys are doing, but I'm 
glad somebody is looking into this :)

Original comment by devilize...@gmail.com on 5 Nov 2013 at 1:05

GoogleCodeExporter commented 9 years ago
why the fuck are you working with decompilers? Where are the sources?

Original comment by Erik.It...@gmail.com on 5 Nov 2013 at 4:28

GoogleCodeExporter commented 9 years ago
>why the fuck are you working with decompilers? Where are the sources?

Wargaming.net does not provide python sources.

Original comment by pavlushko.m@gmail.com on 5 Nov 2013 at 4:45

GoogleCodeExporter commented 9 years ago
My modded variant: http://pastebin.com/YQNDhLVN

1. Compile w P2.6
2. Copy to \res_mods\0.8.9\scripts\client
3. Run replay, press Esc
4. If cursor moved wrongly - modify script - goto 1.

I look forward to the correct version of the script

Original comment by mr.a.on...@gmail.com on 5 Nov 2013 at 5:09

GoogleCodeExporter commented 9 years ago
tried #89's solution and it has worked so far :)

Original comment by jackrh...@gmail.com on 6 Nov 2013 at 8:55

GoogleCodeExporter commented 9 years ago
nightly build 2924 crash too

Original comment by rene.wu...@gmail.com on 6 Nov 2013 at 2:39

GoogleCodeExporter commented 9 years ago
Tried #89 ("enableUserInfoStatistics": false) - second battle and crashed, 
sadly.

Original comment by HASH.DuO...@gmail.com on 6 Nov 2013 at 5:34

GoogleCodeExporter commented 9 years ago
tried the 2924 nightly build. still crashing to desktop after the battle. i 
deleted the application.swf again. 

Original comment by gnome....@googlemail.com on 6 Nov 2013 at 8:40

GoogleCodeExporter commented 9 years ago
I havent had a crash during game play since i changes permissions for the game 
from regular to start as admin. I havent updated to 2924 yet, but it was workin 
at 2920 for me

Original comment by MaxPoth...@gmail.com on 6 Nov 2013 at 9:06

GoogleCodeExporter commented 9 years ago
Last news:
0.8.8 original & patched Application.swf both work under SWFDump
0.8.9 original Application.swf works under SWFDump
0.8.9 desasm/reasm (so no change) DOESN'T WORK under SWFDump (reference error 
while dumping)

The disassembler is the cause of the issue; and if we consider the diff 
maca.pavel posted, the fail occurs during the dissassembling process.

Original comment by edgar.fo...@gmail.com on 6 Nov 2013 at 10:04

GoogleCodeExporter commented 9 years ago
um... maybe WG updated to newer Scaleform version?.. dunno if it makes any 
sense but still...

Original comment by gene...@gmail.com on 6 Nov 2013 at 10:51

GoogleCodeExporter commented 9 years ago
...and newer Scaleform parts may have some countermeasures against 
decompilation for example...

Original comment by gene...@gmail.com on 6 Nov 2013 at 10:54

GoogleCodeExporter commented 9 years ago
SWFDump managed to disassemble the original file flawlessly so it's definitely 
not an additionnal protection.

Original comment by edgar.fo...@gmail.com on 6 Nov 2013 at 11:48

GoogleCodeExporter commented 9 years ago
What features I lose if I delete application.swf ?

thx !

Original comment by lionel.f...@gmail.com on 6 Nov 2013 at 11:50

GoogleCodeExporter commented 9 years ago
All hangar-related features: profile, crew, ping, company stats, ...

Original comment by edgar.fo...@gmail.com on 7 Nov 2013 at 12:03

GoogleCodeExporter commented 9 years ago
i haven`t had a crash with 2924.
Done about 40 battles with it and no crash

Original comment by ulisses....@gmail.com on 7 Nov 2013 at 1:55

GoogleCodeExporter commented 9 years ago
Deleting application.swf makes the game loading tankers forever - that is not 
completing the game startup at all.

Original comment by Erik.It...@gmail.com on 7 Nov 2013 at 2:00

GoogleCodeExporter commented 9 years ago
thank you for the answer !

I don't want delete application.swf, I hope someone will find a solution...

I did 25 battles yesterday with the 2924 build and the game crashed three 
times, including once during the battle!

Original comment by lionel.f...@gmail.com on 7 Nov 2013 at 6:22

GoogleCodeExporter commented 9 years ago
From 
http://www.koreanrandom.com/forum/topic/6108-%D0%BD%D0%BE%D1%87%D0%BD%D1%8B%D0%B
5-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8-xvm-nightly-builds/page-42 it seems that 
avatar.py fails when calling __destroyGUI(self) . The first call in that 
function is   g_battleContext.fini(). Decompiling client/gui/battlecontext.pyc 
I get:
 def fini(self):
     self.isInBattle = False
     self.__playersVIDs.clear()
     self.__squadManVIDs.clear()
     self.__teamKillerVIDs.clear()
     self.__squadID = None
     arena = getattr(BigWorld.player(), 'arena', None)
     if arena is None:
         arena.onNewVehicleListReceived -= self.__arena_onNewVehicleListReceived
         arena.onVehicleAdded -= self.__arena_onVehicleAdded
         arena.onTeamKiller -= self.__arena_onTeamKiller
     return

This looks for me like likely culprit. I mean the line if arena is None is 
missing negation probably. Can somebody smarter than me check that?

Original comment by pko...@gmail.com on 7 Nov 2013 at 8:01

GoogleCodeExporter commented 9 years ago
And WG do not share even bits of code? not even hint what ma be wrong? They 
have mods support in client, they could have mods support in staff too.

#134 #135 Deleting application.swf also disables all features of battle loading 
screen. However, everything in battle itself works.

Original comment by cz.Rui...@gmail.com on 7 Nov 2013 at 8:09

GoogleCodeExporter commented 9 years ago
r2924 no crash during yesterday evening session.
I have only XVM, j1mb0 crosshair and session statistics

some clan mates have crashes without any mod, 
so I think that now could not be XVM related

Original comment by nuci...@gmail.com on 7 Nov 2013 at 11:18

GoogleCodeExporter commented 9 years ago
^^ You have to be careful not to pollute the issue, its the old 'the internet 
isn't working' mentality.
There is a crash to desktop (CTD) issue under the new 8.9 patch.
The dev's are also unhappy with how the XVM code is decompiling/compiling.

The two may be related and the consensus is that they are related. When the 
dev's suss out the code problem lets hope this intern fixes the CTD issue. 

This thread should really be kept clear for Dev speak it isn't an open forum..

ChEeSy

Original comment by cheesybo...@cheesyboofs.co.uk on 7 Nov 2013 at 12:08

GoogleCodeExporter commented 9 years ago
>0.8.9 desasm/reasm (so no change) DOESN'T WORK under SWFDump (reference error 
while dumping)

Can not confirm, RABCDasm 1.14 from sources, Ubuntu 13.10 amd64
Reasm file works under SWFDump v0.9.2+ds1-3

Original comment by pavlushko.m@gmail.com on 7 Nov 2013 at 1:09

GoogleCodeExporter commented 9 years ago
try solution in post nr 570 -> it WORKS

Original comment by e...@wp.pl on 7 Nov 2013 at 1:50

GoogleCodeExporter commented 9 years ago
Issue 570 has been merged into this issue.

Original comment by pavlushko.m@gmail.com on 7 Nov 2013 at 2:03

GoogleCodeExporter commented 9 years ago
Black Screen after every single game with Version 2925

(No CTD or Black Screen) without application.swf

Original comment by maininqu...@yahoo.de on 7 Nov 2013 at 7:02

GoogleCodeExporter commented 9 years ago
pavlushko.m, RABCDasm 1.14 pre-compiled binaries under Windows 7 x64, using 
1.make-patched-swfs.bat with no patch:
http://i.imgur.com/44GqYRZ.png

(latest SWFTools dev snapshot for Windows: swftools-2013-04-09-1007.exe)

Original comment by edgar.fo...@gmail.com on 7 Nov 2013 at 7:09

GoogleCodeExporter commented 9 years ago
Still crashing at the end of battles (return to desktop)... Only "basic" XVM, 
no other mods... 
Everythings works fine without xvm, of course...
Microsoft Vista / Geforce 9500

Original comment by fred.0...@gmail.com on 7 Nov 2013 at 8:37

GoogleCodeExporter commented 9 years ago
Hmm...
Swfdump crashes under ubuntu 13.04 (nightly builds) patched file.
But I can't reproduce swfdump crash with recompiling or even patched file under 
my local Ubuntu 13.10.

My patched file http://www.koreanrandom.com/forum/topic/6108-/?p=124357

Original comment by pavlushko.m@gmail.com on 7 Nov 2013 at 8:54

GoogleCodeExporter commented 9 years ago
Interesting, I think we need more testing on this: is it a OS-related SWFDump 
or RABCDAsm issue?
I'll make MD5 checksums and diffs of SWF and Dumps to see which one is the 
culprit.

To the people following the issue, please try pavlushko.m's Application.swf. 

Original comment by edgar.fo...@gmail.com on 7 Nov 2013 at 9:14