Home » MODDING HQ 1.13 » v1.13 Bug Reports » Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)
Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)[message #348571]
|
Mon, 30 January 2017 07:46
|
|
marginoferror |
|
Messages:8
Registered:February 2007 |
|
|
Found a 100% reproducible deadlock (mouse cursor frozen and all, but no crash) in the latest unstable build.
1) Load the following save: https: //dl.dropboxusercontent.com/u/9157798/SaveGame11.sav (remove space after the scheme)
2) With this INI: https: //dl.dropboxusercontent.com/u/9157798/Ja2_Options.INI (remove space after the scheme)
3) Select Hitman and open his inventory
4) Open the sector inventory for the sector Hitman is in
5) Left-click on the carabiner on his Specter rig (equipped on his right thigh)
6) Select 9x18mm Mag 30 (1) from the dropdown
The deadlock happens as soon as the magazine is selected.
Report message to a moderator
|
Private
|
|
|
Re: Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)[message #348584 is a reply to message #348571]
|
Mon, 30 January 2017 22:14
|
|
Flugente |
|
Messages:3509
Registered:April 2009 Location: Germany |
|
|
Strangely enough, when I try to download that save, I only get a webpage displaying it in binary, which... yeah. No idea why that worked on the other save, but I can't use this.
I know now that it could never work between us, as much as we wanted to, it could never be! Not because you're a rabbit, but because you're black.
If you want, you can donate to me. This will not affect how and what I code, and I will not code specific features in return. I will be thankful though.Report message to a moderator
|
|
|
|
|
Re: Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)[message #348591 is a reply to message #348586]
|
Tue, 31 January 2017 02:10
|
|
Flugente |
|
Messages:3509
Registered:April 2009 Location: Germany |
|
|
Hmpf. Why didn't I think of that?
Anyway, can reproduce the issue. It seems to be down deep in pocket code. Apparently when you click, the game creates the mag, and tries to place it. But that fails, so we are stuck in a loop without an exit condition. Once again, I'm bewildered, cause I assume this has to have worked at some time. It also seems highly suspicious to me that we try to place an SMG mag on a carabiner, but I'm not well versed in Molle stuff.
Not sure if I can find a solution quick, cause it's sleepy time down here. If not, likely tomorrow
I know now that it could never work between us, as much as we wanted to, it could never be! Not because you're a rabbit, but because you're black.
If you want, you can donate to me. This will not affect how and what I code, and I will not code specific features in return. I will be thankful though.Report message to a moderator
|
|
|
|
Re: Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)[message #348597 is a reply to message #348591]
|
Tue, 31 January 2017 03:12
|
|
marginoferror |
|
Messages:8
Registered:February 2007 |
|
|
I can't find any good documentation for what is and is not acceptable on a carabiner but I don't think magazines usually qualify (?) so I assume that's related to the problem. Not sure why it's showing up on the dropdown menu if it's just going to fail.
Thanks for taking a look at it. =)
Report message to a moderator
|
Private
|
|
|
Re: Reproducible deadlock in SCI unstable 8366 (2017-01-15 build)[message #348614 is a reply to message #348597]
|
Tue, 31 January 2017 23:15
|
|
Flugente |
|
Messages:3509
Registered:April 2009 Location: Germany |
|
|
Urgs. I guess its fixed now, but not the underlying issue.
Basically, when clicking on that pocket, the game is told to give us the option to create ammo for the guns we have in our inventory.
However, once we actually click on ammo, the game discovers that there is no space for that in that slot. Even though we've checked for that earlier. As usual, any sort of error handling doesn't exist, which is rather sad, as we are in a while-loop while putting the created item into our inventory (why? No idea ). Thus we have a deadlock.
In my (uninformed) opinion, either the stock MOLLE data is bad, or the pocket code is bad, or both. As I have no interest in diving deeper into that, I've simply added an exit clause to the while-loop, resulting in the created SMG mag to be dumped into the sector inventory. This has been done in r8385.
Just in case someone else actually tries to fix this: When clicking on the Carabiner (item 1695, ubClassIndex 95), we get the option to create a 9x18mm Mag 30 (item 510, size 16). LBE 95's only pcoket is 38, which has ItemCapacityPerSize16 of 1. Apparently this means one item of size 16 would fit here... which is why we have that option (void addAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup ) in InterfaceItems.cpp). Only that stuff doesn't really fit - in void popupCallbackAmmo(UINT16 item, UINT16 pocket, SOLDIERTYPE* pSoldier ), this bit loops because AddObjectsToStack(...) fails:
while ( tempStack.ubNumberOfObjects > 0 )
{
if(pocket != -1)
{
pSoldier->inv[pocket].AddObjectsToStack(tempStack, bLoop, pSoldier, pocket);
}
else
{
bLoop--;
}
if(bLoop < 1)
break;
}
And as ItemSlotLimit(...) takes an object instead of just the item number, I'm not sure we have a fitting function to check whether the item fits (the current method obviously fails).
Edit: lvlup!
[Updated on: Tue, 31 January 2017 23:16]
I know now that it could never work between us, as much as we wanted to, it could never be! Not because you're a rabbit, but because you're black.
If you want, you can donate to me. This will not affect how and what I code, and I will not code specific features in return. I will be thankful though.Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Thu Apr 18 03:28:32 GMT+3 2024
Total time taken to generate the page: 0.00813 seconds
|