bugGlobulation 2 - Bugs: bug #24610, usl related (?) crash in hg-default

 
 

bug #24610: usl related (?) crash in hg-default

Submitted by:  Leo Wandersleb <giszmo>
Submitted on:  Sun 19 Oct 2008 11:33:17 PM UTC  
 
Severity: 5 - BlockerStatus: Works For Me
Assigned to: NoneOpen/Closed: Closed
Release: mercurialOperating System: None

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Mon 05 Jan 2009 07:13:10 PM UTC, comment #2:

closing it as i as the reporter can't reproduce it.

Leo Wandersleb <giszmo>
Project Member
Mon 20 Oct 2008 01:02:20 PM UTC, comment #1:

It doesn't seem usl-related:
- The script is not executing (1 instruction at the first tick, 0 instructions at each next tick)
- The stack trace doesn't show usl anywhere

Usl is admittedly too verbose, showing everything it does.

Martin Voelkle <marv>
Project Administrator
Sun 19 Oct 2008 11:33:17 PM UTC, original submission:

in the savegame attached i placed an inn when it crashed. this was reoroducable.

[New Thread 0x426ae950 (LWP 17230)]
[New Thread 0x41607950 (LWP 17231)]

  • Loading data/usl/Language/Runtime/If.usl

val true := [
def select (ifTrue, _) := ifTrue
def not := false
def and(that) := that
def or (_) := true
def xor (that) := that select (false, true)
]

val false := [
def select (_, ifFalse) := ifFalse
def not := true
def and (that) := false
def or (that) := that
def xor (that) := that select (true, false)
]

0:0: ExecutionBlock
7:2: DecNode(true,2)
1:13: RecordBlock
2:34: DecNode(select,1)
2:34: FunNode
2:13: TuplePatternNode
2:14: ValPatternNode(ifTrue)
2:22: IgnorePatternNode
2:28: DefLookupNode(ifTrue)
3:18: DecNode(not,1)
3:13: DefLookupNode(false)
4:23: DecNode(and,1)
4:23: FunNode
4:10: ValPatternNode(that)
4:19: DefLookupNode(that)
5:20: DecNode(or,1)
5:20: FunNode
5:10: IgnorePatternNode
5:16: DefLookupNode(true)
6:45: DecNode(xor,1)
6:45: FunNode
6:11: ValPatternNode(that)
6:25: ApplyNode
6:25: SelectNode(select)
6:20: DefLookupNode(that)
6:32: RecordBlock
6:33: DefLookupNode(false)
6:40: DefLookupNode(true)
15:2: DecNode(false,2)
9:14: RecordBlock
10:36: DecNode(select,1)
10:36: FunNode
10:13: TuplePatternNode
10:14: IgnorePatternNode
10:17: ValPatternNode(ifFalse)
10:29: DefLookupNode(ifFalse)
11:17: DecNode(not,1)
11:13: DefLookupNode(true)
12:25: DecNode(and,1)
12:25: FunNode
12:11: ValPatternNode(that)
12:20: DefLookupNode(false)
13:23: DecNode(or,1)
13:23: FunNode
13:10: ValPatternNode(that)
13:19: DefLookupNode(that)
14:45: DecNode(xor,1)
14:45: FunNode
14:11: ValPatternNode(that)
14:25: ApplyNode
14:25: SelectNode(select)
14:20: DefLookupNode(that)
14:32: RecordBlock
14:33: DefLookupNode(true)
14:39: DefLookupNode(false)

Scope(0x2372f20)

  • Loading data/usl/Language/Runtime/Classes.usl

def abstract := () \# TODO: throw an exception

def interface(singleton) := singleton.prototype

0:0: ExecutionBlock
2:1: DecNode(abstract,1)
1:17: ConstNode Value(0xaec400)
3:48: DecNode(interface,1)
3:48: FunNode
3:15: ValPatternNode(singleton)
3:48: SelectNode(prototype)
3:29: DefLookupNode(singleton)

Value(0xaec400)

  • Loading data/usl/Language/Runtime/Control.usl

def if (cond) := {
def ifTrue (trueVal) := [
def else(_) := trueVal
]
def ifFalse (_) := [
def else(falseVal) := falseVal
]
cond select (ifTrue, ifFalse)
}

def while (cond) (def body) := {
if (cond) {
body
while (cond) (body)
}
}

0:0: ExecutionBlock
9:2: DecNode(if,1)
9:2: FunNode
1:9: ValPatternNode(cond)
1:18: ExecutionBlock
4:3: DecNode(ifTrue,1)
4:3: FunNode
2:14: ValPatternNode(trueVal)
2:26: RecordBlock
3:25: DecNode(else,1)
3:25: FunNode
3:12: IgnorePatternNode
3:18: DefLookupNode(trueVal)
7:3: DecNode(ifFalse,1)
7:3: FunNode
5:15: IgnorePatternNode
5:21: RecordBlock
6:33: DecNode(else,1)
6:33: FunNode
6:12: ValPatternNode(falseVal)
6:25: DefLookupNode(falseVal)
8:7: ApplyNode
8:7: SelectNode(select)
8:2: DefLookupNode(cond)
8:14: RecordBlock
8:15: DefLookupNode(ifTrue)
8:23: DefLookupNode(ifFalse)
16:2: DecNode(while,1)
16:2: FunNode
11:12: ValPatternNode(cond)
16:2: FunNode
11:19: DefPatternNode(body)
11:32: ExecutionBlock
15:3: ApplyNode
12:12: ApplyNode
12:2: DefLookupNode(if)
12:6: DefLookupNode(cond)
12:12: ExecutionBlock
13:3: DefLookupNode(body)
14:22: ApplyNode
14:16: ApplyNode
14:3: DefLookupNode(while)
14:10: DefLookupNode(cond)
14:17: DefLookupNode(body)

Value(0xaec400)

  • Loading data/usl/Glob2/Runtime/Game.usl

\# wrappers around native interface to get shorter calls

\# units getter

def Worker := 0
def Explorer := 1
def Warrior := 2

def unitsCount := game.unitsCount

def AbilityWalk := 3
def AbilitySwim := 4
def AbilityFly := 5
def AbilityBuild := 6
def AbilityHarvest := 7
def AbilityAttackSpeed := 8
def AbilityAttackStrength := 9
def AbilityMagicAttackAir := 10
def AbilityMagicAttackGround := 11

def unitsUpgradeCount := game.unitsUpgradesCount

\# buildings getter

def Swarm := 0
def Inn := 1
def Hospital := 2
def Racetrack := 3
def Pool := 4
def Camp := 5
def School := 6
def Tower := 7
def Wall := 11

def Level0Construction := 0
def Level0Completed := 1
def Level1Construction := 2
def Level1Completed := 3
def Level2Construction := 4
def Level2Completed := 5

def buildingsCount := game.buildingsCount

\# general team getter

def teamsCount := game.teamsCount
def isAlive := game.isTeamAlive

\# general game getter

\# game gui

def show := gameGUI.showScriptText
def showTr := gameGUI.showScriptTextTr
def hide := gameGUI.hideScriptText

\# wait on game variables

def wait(x) := if (x > 0) {
yield()
wait(x - 1)
}
0:0: ExecutionBlock
6:16: DecNode(Worker,1)
6:15: ConstNode NativeValue<i>(0xac67e0) = 0
7:18: DecNode(Explorer,1)
7:17: ConstNode NativeValue<i>(0xac67e0) = 1
8:17: DecNode(Warrior,1)
8:16: ConstNode NativeValue<i>(0xac67e0) = 2
10:34: DecNode(unitsCount,1)
10:34: SelectNode(unitsCount)
10:19: DefLookupNode(game)
12:21: DecNode(AbilityWalk,1)
12:20: ConstNode NativeValue<i>(0xac67e0) = 3
13:21: DecNode(AbilitySwim,1)
13:20: ConstNode NativeValue<i>(0xac67e0) = 4
14:20: DecNode(AbilityFly,1)
14:19: ConstNode NativeValue<i>(0xac67e0) = 5
15:22: DecNode(AbilityBuild,1)
15:21: ConstNode NativeValue<i>(0xac67e0) = 6
16:24: DecNode(AbilityHarvest,1)
16:23: ConstNode NativeValue<i>(0xac67e0) = 7
17:28: DecNode(AbilityAttackSpeed,1)
17:27: ConstNode NativeValue<i>(0xac67e0) = 8
18:31: DecNode(AbilityAttackStrength,1)
18:30: ConstNode NativeValue<i>(0xac67e0) = 9
19:32: DecNode(AbilityMagicAttackAir,1)
19:30: ConstNode NativeValue<i>(0xac67e0) = 10
20:35: DecNode(AbilityMagicAttackGround,1)
20:33: ConstNode NativeValue<i>(0xac67e0) = 11
22:49: DecNode(unitsUpgradeCount,1)
22:49: SelectNode(unitsUpgradesCount)
22:26: DefLookupNode(game)
26:15: DecNode(Swarm,1)
26:14: ConstNode NativeValue<i>(0xac67e0) = 0
27:13: DecNode(Inn,1)
27:12: ConstNode NativeValue<i>(0xac67e0) = 1
28:18: DecNode(Hospital,1)
28:17: ConstNode NativeValue<i>(0xac67e0) = 2
29:19: DecNode(Racetrack,1)
29:18: ConstNode NativeValue<i>(0xac67e0) = 3
30:14: DecNode(Pool,1)
30:13: ConstNode NativeValue<i>(0xac67e0) = 4
31:14: DecNode(Camp,1)
31:13: ConstNode NativeValue<i>(0xac67e0) = 5
32:16: DecNode(School,1)
32:15: ConstNode NativeValue<i>(0xac67e0) = 6
33:15: DecNode(Tower,1)
33:14: ConstNode NativeValue<i>(0xac67e0) = 7
34:15: DecNode(Wall,1)
34:13: ConstNode NativeValue<i>(0xac67e0) = 11
36:28: DecNode(Level0Construction,1)
36:27: ConstNode NativeValue<i>(0xac67e0) = 0
37:25: DecNode(Level0Completed,1)
37:24: ConstNode NativeValue<i>(0xac67e0) = 1
38:28: DecNode(Level1Construction,1)
38:27: ConstNode NativeValue<i>(0xac67e0) = 2
39:25: DecNode(Level1Completed,1)
39:24: ConstNode NativeValue<i>(0xac67e0) = 3
40:28: DecNode(Level2Construction,1)
40:27: ConstNode NativeValue<i>(0xac67e0) = 4
41:25: DecNode(Level2Completed,1)
41:24: ConstNode NativeValue<i>(0xac67e0) = 5
43:42: DecNode(buildingsCount,1)
43:42: SelectNode(buildingsCount)
43:23: DefLookupNode(game)
47:34: DecNode(teamsCount,1)
47:34: SelectNode(teamsCount)
47:19: DefLookupNode(game)
48:32: DecNode(isAlive,1)
48:32: SelectNode(isTeamAlive)
48:16: DefLookupNode(game)
56:35: DecNode(show,1)
56:35: SelectNode(showScriptText)
56:13: DefLookupNode(gameGUI)
57:39: DecNode(showTr,1)
57:39: SelectNode(showScriptTextTr)
57:15: DefLookupNode(gameGUI)
58:35: DecNode(hide,1)
58:35: SelectNode(hideScriptText)
58:13: DefLookupNode(gameGUI)
66:2: DecNode(wait,1)
66:2: FunNode
63:10: ValPatternNode(x)
66:2: ApplyNode
63:27: ApplyNode
63:16: DefLookupNode(if)
63:22: ApplyNode
63:22: SelectNode(>)
63:20: DefLookupNode(x)
63:24: ConstNode NativeValue<i>(0xac67e0) = 0
63:27: ExecutionBlock
64:9: ApplyNode
64:2: DefLookupNode(yield)
64:7: ConstNode Value(0xaec400)
65:13: ApplyNode
65:2: DefLookupNode(wait)
65:9: ApplyNode
65:9: SelectNode(-)
65:7: DefLookupNode(x)
65:11: ConstNode NativeValue<i>(0xac67e0) = 1

Value(0xaec400)

0:0: ExecutionBlock

Value(0xaec400)

  • USL executed 1 steps
  • USL executed 0 steps
  • USL executed 0 steps

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f6915b6f730 (LWP 17226)]
0x0000000000721532 in GAGCore::DrawableSurface::_drawHorzLine (this=0x220cd80, x=608, y=320, l=32, color=@0x7fff23e57810) at libgag/src/GraphicContext.cpp:743
743 *mem++ = colorValue;
(gdb) bt
#0 0x0000000000721532 in GAGCore::DrawableSurface::_drawHorzLine (this=0x220cd80, x=608, y=320, l=32, color=@0x7fff23e57810) at libgag/src/GraphicContext.cpp:743
#1 0x00000000007252b4 in GAGCore::GraphicContext::drawHorzLine (this=0x220cd80, x=608, y=320, l=32, color=@0x7fff23e57810) at libgag/include/SDLGraphicContext.h:386
#2 0x00000000004cb9d9 in Game::drawMapArea (this=0x7fff23e5ca88, left=0, top=0, right=50, bot=32, sw=1600, sh=1024, viewportX=22, viewportY=79, localTeam=0, drawOptions=13, map=0x7fff23e5db20,
mapIs=0x4cecba <Map::isForbiddenLocal(int, int)>, areaAnimationTick=90, baseFrame=16, c=
{r = 255 '�', g = 0 '\0', b = 0 '\0', a = 255 '�', static black = {r = 0 '\0', g = 0 '\0', b = 0 '\0', a = 255 '�', static black = <same as static member of an already seen type>, static white = {r = 255 '�', g = 255 '�', b = 255 '�', a = 255 '�', static black = <same as static member of an already seen type>, static white = <same as static member of an already seen type>}}, static white = <same as static member of an already seen type>}) at src/Game.cpp:2329
#3 0x00000000004cbcd6 in Game::drawMapAreas (this=0x7fff23e5ca88, left=0, top=0, right=50, bot=32, sw=1600, sh=1024, viewportX=22, viewportY=79, localTeam=0, drawOptions=13) at src/Game.cpp:2280
#4 0x00000000004c0a78 in Game::drawMap (this=0x7fff23e5ca88, sx=0, sy=0, sw=1600, sh=1024, viewportX=22, viewportY=79, localTeam=0, drawOptions=13, visibleBuildings=0x7fff23e57a80) at src/Game.cpp:2758
#5 0x00000000004e5f80 in GameGUI::drawAll (this=0x7fff23e5ca10, team=0) at src/GameGUI.cpp:3999
#6 0x00000000004b42e4 in Engine::run (this=0x7fff23e5ca10) at src/Engine.cpp:391
#7 0x000000000051649d in Glob2::run (this=0x7fff23e622af, argc=1, argv=0x7fff23e62388) at src/Glob2.cpp:317
#8 0x00000000005168a1 in main (argc=1, argv=0x7fff23e62388) at src/Glob2.cpp:421

Leo Wandersleb <giszmo>
Project Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #16706:  Auto_save.game.gz added by giszmo (54KiB - application/x-gzip)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by marv (Posted a comment)
  • -unavailable- added by giszmo (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 3 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 05 Jan 2009 07:13:10 PM UTCgiszmoStatusNone=>Works For Me
      Open/ClosedOpen=>Closed
    Sun 19 Oct 2008 11:33:17 PM UTCgiszmoAttached File-=>Added Auto_save.game.gz, #16706

    Back to the top


    Powered by Savane 3.1-cleanup1