Spring 0.82.4 bug fix release

Spring 0.82.4 bug fix release

Discuss Spring news, such as fresh releases and press coverage, here.
Post Reply
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Spring 0.82.4 bug fix release

Post by hoijui »

Some more issues have been fixed since the last release, so hereby we present the next build, which we plan to be the last of the 0.82 series.

Credits to BrainDamage, kloot, zerver and jk for the bug fixing and everyone else who helped testing, reported bugs, submitted patches or contributed in some other form!


Download links:
Detailed changes since 0.82.3:

Engine / General:
  • fix demo desyncs if commands were issued during pause
  • fix abnormal demo speed (during reconnect and temporary lags)
  • fix demo runs away from local user
  • fix mid-game join
  • fix FullScreen mode under Linux
  • fix KDE/GNOME detection for error message box
  • fix another FPU reset in LuaLobby
  • don't reload defaults each time /ctrlpanel command is used (behaves now the same way as /cmdcolors)
  • speed up reflection pass a little
  • disable heatmapping by default
  • fix COB's KILL_UNIT for self-kills
  • fix bugged default-argument passing in path-follower
  • fix broken return-value handling for UnitPreDamaged
  • OBJParser: deal with carriage returns
  • fix holdSteady (and sweeping beamlaser) rotations
  • fix SEGV when /give'ing features
  • fix crash when linking grass shaders on non GLSL system
  • fix specs do not see all features
  • fix Projectiles do not show up for missile weapons or torpedoes
  • fix crash on bad playername message
  • disable team highlighting for spectators by default
  • fix incorrect ClipPlanes in DrawInMinimap if gl.SlaveMiniMap is used
  • fix metal-maker widget
Engine / AI:
  • fix crash on capture from/by AI
  • fix Python AI Interface
  • AAI support version independent mod config files, for example BA.cfg
Engine / Dedicated server:
  • fix/re-add sync-check
  • possibly fix crash when sending data to improperly-connected autohost socket
Unitsync:
  • add support for more then 16 start positions
Installer:
  • fix checks for installed .Net version
  • add SpringDownloader desktop shortcut
CMake:
  • fix _make install-spring_ to work after initial configure
  • fix windows linking (related to -lws2_32)
Documentation:
  • updated man pages: spring & spring-dedicated
  • new man pages: spring-headless & spring-multithreaded
Last edited by hoijui on 29 Sep 2010, 22:42, edited 2 times in total.
User avatar
Nemo
Spring 1944 Developer
Posts: 1376
Joined: 30 Jan 2005, 19:44

Re: Spring 0.82.4 bug fix release

Post by Nemo »

Awesome stuff, thank you all for your work work. I don't want to sound unappreciative, but is there any chance that mantis 2065 might get fixed before this goes live? It is really painful for a game where the majority of units are viewed via icons the majority of the time (and waiting for 0.85.0 for our next release is also a fairly icky prospect).
User avatar
Beherith
Posts: 5145
Joined: 26 Oct 2007, 16:21

Re: Spring 0.82.4 bug fix release

Post by Beherith »

Thanks for the hard work everyone!
gonpost
Posts: 77
Joined: 22 Oct 2008, 00:43

Re: Spring 0.82.4 bug fix release

Post by gonpost »

"disable heatmapping by default"

WOOT

You make me games, and I will make you dimmers.
User avatar
Nemo
Spring 1944 Developer
Posts: 1376
Joined: 30 Jan 2005, 19:44

Re: Spring 0.82.4 bug fix release

Post by Nemo »

Please don't go live with this yet:

There is a problem with the UnitPreDamaged callin - namely, any gadget which uses it causes this error when units take damage:

Code: Select all

[    955] LuaRules::RunCallIn: error = 2, UnitPreDamaged, [string "luagadgets/gadgets.lua"]:1300: bad argument #1 to 'min' (number expected, got nil)
stack traceback:
	[C]: in function 'min'
	[string "luagadgets/gadgets.lua"]:1300: in function <[string "luagadgets/gadgets.lua"]:1290>
	(tail call): ?
[    955] UnitPreDamaged(): 1st value returned should be a number
[    955] WARNING: LuaRules stack check: top = -2
This occurs when a gadget as simple as this is active (this is the entire body of the gadget, minus the author and such). I tried with this one disabled but another gadget which uses UnitPreDamaged active and got the same error - with all of them disabled there was no error:

Code: Select all

if (not gadgetHandler:IsSyncedCode()) then
  return false
end

function gadget:UnitPreDamaged(unitID, unitDefID, unitTeam, damage, paralyzer, weaponDefID, attackerID, attackerDefID, attackerTeam)
  if unitID == attackerID then return 0 else return damage end
end
It is probably related to http://github.com/spring/spring/commit/ ... 26573b7de6 and looking at gadgets.lua "imp" doesn't seem to be defined anywhere but line 1297, but I don't really understand what kloot's work was doing enough to say how it broke the callin.
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Spring 0.82.4 bug fix release

Post by hoijui »

from engine source code:
/**
* called after every damage modification (even HitByWeaponId)
* but before the damage is applied
*
* expects two numbers returned by lua code:
* 1st is stored under *newDamage if newDamage != NULL
* 2nd is stored under *impulseMult if impulseMult != NULL
*/
bool CLuaRules::UnitPreDamaged(...)
so i guess you should return these two (which you do not, in your gadget). default values should be 0.0 (dmg) and 1.0 (mult).

if you do not, there is no problem either, except the warning spam.
User avatar
Nemo
Spring 1944 Developer
Posts: 1376
Joined: 30 Jan 2005, 19:44

Re: Spring 0.82.4 bug fix release

Post by Nemo »

Okay, thank you hoijui. Would have been nice to get some heads up there that all gadgets which used that callin would break, but its a simple change.

I updated that simple gadget to this:

Code: Select all

function gadget:UnitPreDamaged(unitID, unitDefID, unitTeam, damage, paralyzer, weaponDefID, attackerID, attackerDefID, attackerTeam)
  if unitID == attackerID then return 0 else return damage, 1 end
end
Which should work? I'm not sure how damage would ever be nil if UnitPreDamaged is calling, but all the same got "bad argument #1" followed by an engine crash after a warning that the Lua stack check was -2 (much like the infolog below). It is of course simple to add a check to make sure that damage isn't nil, but that seems like the kind of thing best handled engine/innards side, as it seems like a no-brainer that the callin shouldn't provide a nil value (considering its name).


LuaRules::RunCallIn: error = 2, UnitPreDamaged, [string "luagadgets/gadgets.lua"]:1300: bad argument #1 to 'min' (number expected, got nil)
stack traceback:
[C]: in function 'min'
[string "luagadgets/gadgets.lua"]:1300: in function <[string "luagadgets/gadgets.lua"]:1290>
(tail call): ?
[ 618] UnitPreDamaged(): 1st value returned should be a number
[ 618] UnitPreDamaged(): 1st value returned should be a number
[ 618] WARNING: LuaRules stack check: top = -2
[ 637] Spring 0.82.4.0 (0.82.4) has crashed.
[ 637] Exception: Access violation (0xc0000005)
[ 637] Exception Address: 0x0095160e
[ 637] DLL information:
[ 637] 0x00400000 spring
[ 637] 0x7c900000 ntdll
[ 637] 0x7c800000 kernel32
[ 637] 0x10000000 DevIL
[ 637] 0x77c10000 MSVCRT
[ 637] 0x77dd0000 ADVAPI32
[ 637] 0x77e70000 RPCRT4
[ 637] 0x77fe0000 Secur32
[ 637] 0x68b20000 GLU32
[ 637] 0x5ed00000 OPENGL32
[ 637] 0x77f10000 GDI32
[ 637] 0x7e410000 USER32
[ 637] 0x73760000 DDRAW
[ 637] 0x73bc0000 DCIMAN32
[ 637] 0x76c90000 IMAGEHLP
[ 637] 0x6fbc0000 mingwm10
[ 637] 0x7c9c0000 SHELL32
[ 637] 0x77f60000 SHLWAPI
[ 637] 0x71ab0000 WS2_32
[ 637] 0x71aa0000 WS2HELP
[ 637] 0x61b80000 zlib1
[ 637] 0x70780000 vorbisfile
[ 637] 0x68140000 ogg
[ 637] 0x64cc0000 vorbis
[ 637] 0x6b600000 OpenAL32
[ 637] 0x76b40000 WINMM
[ 637] 0x66fc0000 freetype6
[ 637] 0x62aa0000 glew32
[ 637] 0x011a0000 SDL
[ 637] 0x7c340000 MSVCR71
[ 637] 0x773d0000 comctl32
[ 637] 0x5d090000 comctl32
[ 637] 0x73f10000 dsound
[ 637] 0x774e0000 ole32
[ 637] 0x77c00000 VERSION
[ 637] 0x76c30000 WINTRUST
[ 637] 0x77a80000 CRYPT32
[ 637] 0x77b20000 MSASN1
[ 637] 0x72d20000 wdmaud
[ 637] 0x72d10000 msacm32
[ 637] 0x77be0000 MSACM32
[ 637] 0x77bd0000 midimap
[ 637] 0x74720000 MSCTF
[ 637] 0x69500000 nvoglnt
[ 637] 0x72280000 DINPUT
[ 637] 0x688f0000 HID
[ 637] 0x77920000 SETUPAPI
[ 637] 0x73ee0000 KsUser
[ 637] 0x71a50000 mswsock
[ 637] 0x662b0000 hnetcfg
[ 637] 0x71a90000 wshtcpip
[ 637] 0x05870000 dadkeyb
[ 637] 0x59a60000 DBGHELP
[ 637] Stacktrace:
[ 637] (0) C:\Program Files\spring-0.82.4.0\spring.exe [0x0095160E]
[ 637] (1) C:\Program Files\spring-0.82.4.0\spring.exe [0x00879CB8]
[ 637] (2) C:\Program Files\spring-0.82.4.0\spring.exe [0x0083D037]
[ 637] (3) C:\Program Files\spring-0.82.4.0\spring.exe [0x0083D134]
[ 637] (4) C:\Program Files\spring-0.82.4.0\spring.exe [0x0040430B]
[ 637] (5) C:\Program Files\spring-0.82.4.0\spring.exe [0x00423880]
[ 637] (6) C:\Program Files\spring-0.82.4.0\spring.exe [0x0042B640]
[ 637] (7) C:\Program Files\spring-0.82.4.0\spring.exe [0x009869A1]
[ 637] (8) C:\Program Files\spring-0.82.4.0\spring.exe [0x00991CE9]
[ 637] (9) C:\Program Files\spring-0.82.4.0\spring.exe [0x00992014]
[ 637] (10) C:\Program Files\spring-0.82.4.0\spring.exe [0x009927F0]
[ 637] (11) C:\Program Files\spring-0.82.4.0\spring.exe [0x004010A7]
[ 637] (12) C:\Program Files\spring-0.82.4.0\spring.exe [0x00401123]
[ 637] (13) C:\WINDOWS\system32\kernel32.dll(RegisterWaitForInputIdle+0x49) [0x7C817077]
Last edited by Nemo on 01 Sep 2010, 09:26, edited 1 time in total.
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Spring 0.82.4 bug fix release

Post by hoijui »

hmm i see. i guess we should do nil checks in gadget.lua then, for the two returns. still, the best solution is to return these two numbers from your gadget. can gadgets.lua be overwritten mod side? (sorry, this lua stuff is not something i know.)
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Spring 0.82.4 bug fix release

Post by hoijui »

lucky you i saw that edit... better double post then doing that, as usually i would have missed that (and probably most others too). sorry, did not see that you did return damage in previous widget version already, that should have been enough. Just scanned for lines starting with return. ;-)

the engine can not supply a nil damage, but an other widget, called before this one could have done that.

will add a nil check for damage, but the error still has to be in a gadget returning nil or nothing for damage, i think.
User avatar
FLOZi
MC: Legacy & Spring 1944 Developer
Posts: 6241
Joined: 29 Apr 2005, 01:14

Re: Spring 0.82.4 bug fix release

Post by FLOZi »

All our gadgets return a number for damaged.

If you reread Nemo's post, he disabled the other gadget that uses the callin altogether when testing with the one he posted (which clearly always returns a number for damaged) and still got the error.

So is the problem that there's no value returned for impulseMult? The error states '1st value returned' but I guess it could be that :(

edit: i see http://github.com/spring/spring/commit/ ... 0e088e8957 order was reversed but both still need to be numbers. :-)
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Spring 0.82.4 bug fix release

Post by hoijui »

... but the second one is optional, so IF you give it, it has to be a number, but you can also omit it.
please try if this fixes the issue. this spring version contains the fix:
http://springrts.com/dl/buildbot/defaul ... -gdb8d7d1/
(installer is the last file)
User avatar
lurker
Posts: 3842
Joined: 08 Jan 2007, 06:13

Re: Spring 0.82.4 bug fix release

Post by lurker »

Distinguishing between nil and no argument is usually incorrect behavior. This is lua, nil is a default.
User avatar
koshi
Lobby Developer
Posts: 1059
Joined: 14 Aug 2007, 16:15

Re: Spring 0.82.4 bug fix release

Post by koshi »

could you please use only one revision string in upload paths/filenames?
ie not spring-0.82.4/spring_0.82.4.0_portable.7z, but spring-0.82.4/spring_0.82.4_portable.7z ?
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Spring 0.82.4 bug fix release

Post by hoijui »

hmm... would be wrong though.. there can be:
spring-0.82.4/spring_0.82.4.0_portable.7z
spring-0.82.4/spring_0.82.4.1_portable.7z
User avatar
koshi
Lobby Developer
Posts: 1059
Joined: 14 Aug 2007, 16:15

Re: Spring 0.82.4 bug fix release

Post by koshi »

still, only the portable got the .0 and I did not see this being added ever before
Google_Frog
Moderator
Posts: 2464
Joined: 12 Oct 2007, 09:24

Re: Spring 0.82.4 bug fix release

Post by Google_Frog »

but is there any chance that mantis 2065 might get fixed before this goes live?
+1, it's unplayable without icons for cloaked units.

The ballistic model bug still seems to be present. Cannons still seem to use the default shot model, see Glaive in CA(armpw).
Kloot wrote:units going in opposite directions collide with eachother and make no effort to go around ==> result of disabling the heatmap, to be fixed after 82.4
Could the pathfinder be reverted to the working state until there is a system that works better than the old one?
User avatar
Nemo
Spring 1944 Developer
Posts: 1376
Joined: 30 Jan 2005, 19:44

Re: Spring 0.82.4 bug fix release

Post by Nemo »

GF: you can still reenable heatmapping mod-side and tweak it appropriately per movedef, I'm fairly sure.
User avatar
JohannesH
Posts: 1793
Joined: 07 Apr 2009, 12:43

Re: Spring 0.82.4 bug fix release

Post by JohannesH »

Google_Frog wrote:Could the pathfinder be reverted to the working state until there is a system that works better than the old one?
+1
Post Reply

Return to “News”