Jump to content

Issues with GemRB 0.8.4


Caillean

Recommended Posts

Resting should be fine now. I forgot we track the time of the last rest for fatigue purposes, so in the end there was nothing too ugly included. :)

 

Breagar: I think that creature is actually missing from the new area. You could test that with a fresh build of gemrb, where the crash is gone, but it wouldn't say anything about the cause. I can retry with hopefully clearer gdb instructions, if you're up to it.

https://sourceforge.net/projects/gemrb/files/Buildbot%20Binaries/Linux/gemrb-2017-03-1456cac71.tar.bz2/download

Link to comment

Heh, great that it wasn't all too ugly - you're really quick with fixing that stuff! Sure, I'd love to try that new build, and also the debugging, if you don't think it's a waste of your time. I guess it's tedious for you 'cause you need to give me those step-by-step instructions.

 

Edit: Living in the eternal yesterday, I'm on a 32-bit Linux. Do you have the sources for download somewhere, so I can build it myself?

Edited by Caillean
Link to comment

The only annoying thing is that I can't install the mod and investigate myself. I tried installing bgt about a year ago, but it failed and haven't tried since.

 

For debugging, you can use your current setup.

run gemrb in gdb

press r

load the game and do everything short of starting the cutscene

change back to the console and ctrl-c, so the gdb prompt reappears

b GemRB::GameScript::LeaveAreaLUA

c

start the cutscene

once it halts again, you'll see gdb hit the breakpoint at LeaveAreaLUA

n 3

p actor->GetScriptName()

if script name is equal to ACBRESMI

then just p actor->Persistent(); n 20

else c

 

I'll need the log from when ACBRESMI starts to the end.

Link to comment

I couldn't get BGT to install without errors, too. Neither with wine, nor with Weidu for Linux. So I did the installation to this point on Windows :p Don't you have an old XP or even 2k around to set up in a VM for such purposes?

 

Oh hell, I hope I got this right:

(gdb) p actor->GetScriptName()
$2 = 0xaf4dcd8 "acbresmi"
(gdb) p actor->Persistent()
$3 = false
(gdb) n 20
569			if (!CurrentAction) {
(gdb) quit

Link to comment

too much hassle.

 

You got it right, but I didn't. I thought n 20 would be equivalent to twenty n, but it only printed once, so please retry the same thing, except instead of "p actor->Persistent(); n 20", press n and then just enter a bunch of times (will repeat the last command - n for next line).

Link to comment

Here you go:

$2 = 0xaf38d80 "acbresmi"
(gdb) p actor->Persistent()
$3 = false
(gdb) n
3110	}
(gdb) 
GemRB::GameScript::ExecuteAction (Sender=0xaf38d50, aC=0x89e18f8)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/GameScript.cpp:2440
2440		if (actionflags[actionID] & AF_IMMEDIATE) {
(gdb) 
2453		if (!( actionflags[actionID] & AF_BLOCKING )) {
(gdb) 
2454			Sender->ReleaseCurrentAction();
(gdb) 
2456			return;
(gdb) 
2458	}
(gdb) 
GemRB::Scriptable::AddAction (this=0xaf38d50, aC=0x89e18f8)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Scriptable/Scriptable.cpp:468
468				return;
(gdb) 
473	}
(gdb) 
GemRB::GameScript::ExecuteAction (Sender=0x850da68, aC=0xa4cc440)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/GameScript.cpp:2391
2391				if (!(actionflags[actionID] & AF_INSTANT)) {
(gdb) 
2405			aC->Release();
(gdb) 
2458	}
(gdb) 
[OpenAL]: WARNING: Buffer Underrun. AutoRestarting Stream Playback
GemRB::Scriptable::ProcessActions (this=0x850da68)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Scriptable/Scriptable.cpp:577
577			if (WaitCounter) {
(gdb) 
581			if (CurrentAction) {
(gdb) 
586			if (InMove()) {
(gdb) 
560			if (!CurrentAction) {
(gdb) 
559			CurrentActionInterruptable = true;
(gdb) 
560			if (!CurrentAction) {
(gdb) 
561				if (! (CurrentActionTicks == 0 && CurrentActionState == 0)) {
(gdb) 
565				CurrentAction = PopNextAction();
(gdb) 
569			if (!CurrentAction) {
(gdb) 
565				CurrentAction = PopNextAction();
(gdb) 
569			if (!CurrentAction) {
(gdb) 
575			GameScript::ExecuteAction( this, CurrentAction );
(gdb) 
574			lastAction = CurrentAction->actionID;
(gdb) 
575			GameScript::ExecuteAction( this, CurrentAction );
(gdb) 
577			if (WaitCounter) {
(gdb) 
581			if (CurrentAction) {
(gdb) 
586			if (InMove()) {
(gdb) 
560			if (!CurrentAction) {
(gdb) 
559			CurrentActionInterruptable = true;
(gdb) 
560			if (!CurrentAction) {
(gdb) 
561				if (! (CurrentActionTicks == 0 && CurrentActionState == 0)) {
(gdb) 
565				CurrentAction = PopNextAction();
(gdb) 
569			if (!CurrentAction) {
(gdb) 
565				CurrentAction = PopNextAction();
(gdb) 
569			if (!CurrentAction) {
(gdb) 
575			GameScript::ExecuteAction( this, CurrentAction );
(gdb) 
574			lastAction = CurrentAction->actionID;
(gdb) 
575			GameScript::ExecuteAction( this, CurrentAction );
(gdb) 

Breakpoint 1, GemRB::GameScript::LeaveAreaLUA (Sender=0x850da68, 
    parameters=0xa899df8)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/Actions.cpp:3098
3098	{
(gdb) 
3099		if (Sender->Type != ST_ACTOR) {
(gdb) 
3104		if (parameters->string1Parameter[0]) {
(gdb) 
3107		if (actor->Persistent() || !CreateMovementEffect(actor, parameters->string0Parameter, parameters->pointParameter, parameters->int0Parameter) ) {
(gdb) 
3108			MoveBetweenAreasCore( actor, parameters->string0Parameter, parameters->pointParameter, parameters->int0Parameter, true);

Link to comment

Thanks. It's too complicated to continue though, so I'll have to drop the inquiry. The mod won't crash anymore and you said removing the effects made it continue just fine, so the missing cosmetics aren't that important. It could be hiding a deeper bug, but it could also be the mod's fault, so I'm not too worried about it.

Link to comment

Well, should there be a bug, it surely will show itself sooner or later elsewhere. So, uhm... do you think I can get my hands on your sources that include all the fixes and the changes you mentioned or do you give out just pre-compiled builds between releases?

Link to comment

Great, just grabbing the latest sources. Plus, I noticed something else about the Bhaal powers not being added correctly in BGT, if you're interested. Started a new game to double-check... The problem is, if charname is supposed to get the same innate spell a second time, it won't work. If you're playing a good char, and you have one cure light wounds spell already, after defeating Mulahey in the Nashkel mines you're supposed to get a second cure light wounds spell after the dream. It says 'Gained special ability...' in the console, but you still have just one cure light wounds.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...