GPC.EXE has stopped working

Previous topic - Next topic

MrTAToad

This has started to occur regularly for some reason...

Log Name:      Application
Source:        Application Error
Date:          05/09/2010 21:39:30
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      RightComputer
Description:
Faulting application name: gpc.exe, version: 0.0.0.0, time stamp: 0x4c6e4b4b
Faulting module name: gpc.exe, version: 0.0.0.0, time stamp: 0x4c6e4b4b
Exception code: 0xc0000005
Fault offset: 0x00024582
Faulting process id: 0x434
Faulting application start time: 0x01cb4d3a6f29679d
Faulting application path: C:\Program Files (x86)\GLBasic\Compiler\platform\gpc.exe
Faulting module path: C:\Program Files (x86)\GLBasic\Compiler\platform\gpc.exe

At the moment, I dont know what exactly causes it at the moment, but it looks like its caused by trying to call a function in a type that isn't present :

Code (glbasic) Select
arcade.UpdateProfile(setup,currentRound%)

And the actual function is commented out :

Code (glbasic) Select
// FUNCTION UpdateProfile%:setup AS TSetup,currentRound%
// self.profiles[self.selectedLine%].level%=currentRound%
// self.saveProfiles(setup)
// ENDFUNCTION


However, even with the function un-commented, GPC still crashes.

I had thought that clearing %TEMP% would help, but unfortunately it doesn't - nor does toggling debug mode.

It also re-occurs when GLBasic is closed and reloaded...  Later on I'll try it after re-setting the computer...

No, a reset doesn't fix it...



kamakazieturtle

I know this is a really old topic but I thought posting it here would be better than starting a new thread. So this error is now happening to me, was there ever a fix(es)? My code really isn't similar either. Any help would be appreciated.

kamakazieturtle

Yes I am using 10.106, I tested the program on my vista laptop, and it seems to run fine. I can't reproduce it at all. And I also tried to google error code: 0xc0000005, it said I may have a faulty memory stick. So I swapped em' both twice each, and no success. I am pretty sure my code is fine if it is working on my laptop, any other ideas? Also I'm running XP Pro SP3 on my PC.

MrTAToad

Delete everything in %TEMP% to start with

kamakazieturtle

Still no luck, I've been spending all morning going through a copy of the project file and trying to modify it to work, but I think I am going to rewrite it based off the old source to see if I don't see it then. Also a google search said it might be a problem with an array, so thats what inspired my work this morning. Further testing in debug just says access violation?

MrTAToad

Can you post some sample code here ?  I found after the 2010 update, it all worked okay...


kamakazieturtle

Its hard for me to do a sample, but its not that big of a program. This loads a map file created by another program i wrote and is a very basic (Drawing,Collision, and Movement) 2d rpg engine. I know its alot to look over but if you see anything please let me know, I'm going to continue trying to find the bug and may reinstall windows tonight.

Code (glbasic) Select

//Gui Startup
TYPE GuiType
Width
Height
Mode
FpsLimit
ENDTYPE

GLOBAL Gui AS GuiType
Gui.Width=320
Gui.Height=240
Gui.Mode=0
Gui.FpsLimit=60

SETSCREEN Gui.Width,Gui.Height,Gui.Mode
LIMITFPS Gui.FpsLimit
SYSTEMPOINTER TRUE


//Tilemap Startup
TYPE TilemapType
Image
ImageData[]
Name$
X
Y
XOffset
YOffset

Length
TileWidth
TileHeight
TileWidthMax
TileHeightMax
TilesetTileWidth
TilesetTileHeight
CurrentTile
FrameDelay
ExitFlag
DotFlag
ENDTYPE

GLOBAL Tilemap AS TilemapType

Tilemap.Image=1
Tilemap.Name$=""
Tilemap.X=0
Tilemap.Y=0
Tilemap.TileWidthMax=21
Tilemap.TileHeightMax=16


//Tile Startup
TYPE TileType
Frame
SelectionFlag
DotFlag
CollisionFlag
ExitFlagA
ExitFlagB
AnimatedFlag
AnimatedFrames
FrameOffset
FrameJump
FrameCounter
FrameCounterB
FrameXIncrement
FrameYIncrement
ENDTYPE

GLOBAL TilemapTile[] AS TileType


//Player Startup
TYPE PlayerType
Image
Frame
FrameMin
FrameMax
FrameDelay
FrameFlag
Guide
X
Y
Speed
UpFlagA
RightFlagA
DownFlagA
LeftFlagA
UpFlagB
RightFlagB
DownFlagB
LeftFlagB
ENDTYPE

GLOBAL Player AS PlayerType

Player.Image=20
LOADANIM "PlayerImage.bmp",Player.Image,32,32
Player.Guide=21
LOADANIM "PlayerGuide.bmp",Player.Guide,16,8
Player.X=152
Player.Y=116
Player.Speed=2


LoadMap("test",0,0)


Main:
CLEARSCREEN

Update()

SHOWSCREEN
GOTO Main


//Load Map
FUNCTION LoadMap:File$,X,Y
LOCAL A,B,C,D,E
Tilemap.Name$=File$
Tilemap.X=X
Tilemap.Y=Y
Tilemap.XOffset=0
Tilemap.YOffset=0
File$=File$+".tmd"
File$=REPLACE$(File$,".tmd.tmd",".tmd")

SETCURRENTDIR("Tilemap")
OPENFILE(1,File$,TRUE)
READSHORTIEEE 1,Tilemap.TileWidth
READSHORTIEEE 1,Tilemap.TileHeight
DIM TilemapTile[5][Tilemap.TileWidth][Tilemap.TileHeight]

FOR C=0 TO 4
FOR A=0 TO Tilemap.TileWidth-1
FOR B=0 TO Tilemap.TileHeight-1
READSHORTIEEE 1,TilemapTile[C][A][B].Frame
READSHORTIEEE 1,TilemapTile[C][A][B].DotFlag
READSHORTIEEE 1,TilemapTile[C][A][B].CollisionFlag
READSHORTIEEE 1,TilemapTile[C][A][B].ExitFlagA
READSHORTIEEE 1,TilemapTile[C][A][B].ExitFlagB
READSHORTIEEE 1,TilemapTile[C][A][B].AnimatedFlag
READSHORTIEEE 1,TilemapTile[C][A][B].AnimatedFrames
READSHORTIEEE 1,TilemapTile[C][A][B].FrameJump
READSHORTIEEE 1,TilemapTile[C][A][B].FrameXIncrement
READSHORTIEEE 1,TilemapTile[C][A][B].FrameYIncrement

NEXT
NEXT
NEXT

READSHORTIEEE 1,D
READSHORTIEEE 1,E
READSHORTIEEE 1,Tilemap.Length

REDIM Tilemap.ImageData[Tilemap.Length]
Tilemap.TilesetTileWidth=(D/16)
Tilemap.TilesetTileHeight=(E/16)

C=-1
FOR A=0 TO (D-1)
FOR B=0 TO (E-1)
C=C+1
READSHORTIEEE 1,Tilemap.ImageData[C]
NEXT
NEXT
CLOSEFILE 1

CLEARSCREEN
SETTRANSPARENCY RGB(0,255,0)
C=-1
FOR A=0 TO (D-1)
FOR B=0 TO (E-1)
C=C+1
SETPIXEL A,B,Tilemap.ImageData[C]
NEXT
NEXT

GRABSPRITE Tilemap.Image,0,0,D,E
SAVESPRITE "Temp.bmp",Tilemap.Image
SETTRANSPARENCY RGB(255,0,128)
CLEARSCREEN
LOADANIM "Temp.bmp",Tilemap.Image,16,16
KILLFILE "Temp.bmp"
File$=REPLACE$(File$,".tmd","")
SETCURRENTDIR("..")
ENDFUNCTION

//Exits
FUNCTION Exit:MapA$,MapB$,ExitFlag,PlayerFrame,X,Y
IF Tilemap.Name$=MapA$
IF Tilemap.ExitFlag=ExitFlag
LoadMap(MapB$,X,Y)
Player.Frame=PlayerFrame
Tilemap.ExitFlag=999
ENDIF
ENDIF
ENDFUNCTION

//Update
FUNCTION Update:
LOCAL A,B,C,D,E,F,G,H,TilemapYA,TilemapYB,TilemapXA,TilemapXB
Tilemap.FrameDelay=Tilemap.FrameDelay+1
Player.FrameDelay=Player.FrameDelay+1


//Player Frame Update
IF Player.FrameDelay>=10
Player.Frame=Player.Frame+1
ENDIF


//Player Movement
IF KEY(200)
IF Player.UpFlagA=1
Tilemap.Y=Tilemap.Y+Player.Speed
Player.UpFlagB=1
IF Player.FrameFlag=1
Player.FrameMin=0
Player.FrameMax=3
Player.FrameFlag=0
ENDIF
ENDIF
ELSE
Player.UpFlagB=0
ENDIF
IF KEY(208)
IF Player.DownFlagA=1
Tilemap.Y=Tilemap.Y-Player.Speed
Player.DownFlagB=1
IF Player.FrameFlag=1
Player.FrameMin=4
Player.FrameMax=7
Player.FrameFlag=0
ENDIF
ENDIF
ELSE
Player.DownFlagB=0
ENDIF
IF KEY(203)
IF Player.LeftFlagA=1
Tilemap.X=Tilemap.X+Player.Speed
Player.LeftFlagB=1
IF Player.FrameFlag=1
Player.FrameMin=8
Player.FrameMax=11
Player.FrameFlag=0
ENDIF
ENDIF
ELSE
Player.LeftFlagB=0
ENDIF
IF KEY(205)
IF Player.RightFlagA=1
Tilemap.X=Tilemap.X-Player.Speed
Player.RightFlagB=1
IF Player.FrameFlag=1
Player.FrameMin=12
Player.FrameMax=15
Player.FrameFlag=0
ENDIF
ENDIF
ELSE
Player.RightFlagB=0
ENDIF

IF Player.UpFlagB=0 AND Player.LeftFlagB=0 AND Player.RightFlagB=0 AND Player.DownFlagB=0
Player.Frame=Player.FrameMin
ENDIF

IF Player.FrameMin=0 AND Player.UpFlagB=0
Player.FrameFlag=1
ELSEIF Player.FrameMin=4 AND Player.DownFlagB=0
Player.FrameFlag=1
ELSEIF Player.FrameMin=8 AND Player.LeftFlagB=0
Player.FrameFlag=1
ELSEIF Player.FrameMin=12 AND Player.RightFlagB=0
Player.FrameFlag=1
ENDIF


//Player Frame Check
IF Player.Frame>Player.FrameMax
Player.Frame=Player.FrameMin
ELSEIF Player.Frame<Player.FrameMin
Player.Frame=Player.FrameMin
ENDIF


//Set Tiles To Be Drawn
IF Tilemap.X<=-32
IF Tilemap.XOffset<(Tilemap.TileWidth-Tilemap.TileWidthMax-1)
Tilemap.X=Tilemap.X+16
Tilemap.XOffset=Tilemap.XOffset+1
ENDIF
ENDIF
IF Tilemap.X>=0
IF Tilemap.XOffset>0
Tilemap.X=Tilemap.X-16
Tilemap.XOffset=Tilemap.XOffset-1
ENDIF
ENDIF
IF Tilemap.Y<=-32
IF Tilemap.YOffset<(Tilemap.TileHeight-Tilemap.TileHeightMax-1)
Tilemap.Y=Tilemap.Y+16
Tilemap.YOffset=Tilemap.YOffset+1
ENDIF
ENDIF
IF Tilemap.Y>=0
IF Tilemap.YOffset>0
Tilemap.Y=Tilemap.Y-16
Tilemap.YOffset=Tilemap.YOffset-1
ENDIF
ENDIF


//Fix Size
IF Tilemap.TileWidth<=Tilemap.TileWidthMax
D=(Tilemap.TileWidth-1)
ELSEIF Tilemap.TileWidth>Tilemap.TileWidthMax
D=Tilemap.TileWidthMax
ENDIF

IF Tilemap.TileHeight<=Tilemap.TileHeightMax
E=(Tilemap.TileHeight-1)
ELSEIF Tilemap.TileHeight>Tilemap.TileHeightMax
E=Tilemap.TileHeightMax
ENDIF


Tilemap.DotFlag=0
//Tilemap Collision/Draw/Frame Update
FOR A=0 TO 4
G=0
FOR B=Tilemap.XOffset TO (D+Tilemap.XOffset)
H=0
FOR C=Tilemap.YOffset TO (E+Tilemap.YOffset)


IF TilemapTile[A][B][C].CollisionFlag=1
FOR F=0 TO Player.Speed
IF ANIMCOLL(Player.Guide,0,Player.X,(Player.Y-F),Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16)))
TilemapYA=(F-Player.Speed)
Player.UpFlagA=0
BREAK
ELSE
Player.UpFlagA=1
ENDIF
NEXT

FOR F=0 TO Player.Speed
IF ANIMCOLL(Player.Guide,1,Player.X,(Player.Y+F),Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16)))
TilemapYB=(F-Player.Speed)
Player.DownFlagA=0
BREAK
ELSE
Player.DownFlagA=1
ENDIF
NEXT

FOR F=0 TO Player.Speed
IF ANIMCOLL(Player.Guide,2,(Player.X-F),Player.Y,Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16)))
TilemapXA=(F-Player.Speed)
Player.LeftFlagA=0
BREAK
ELSE
Player.LeftFlagA=1
ENDIF
NEXT

FOR F=0 TO Player.Speed
IF ANIMCOLL(Player.Guide,3,(Player.X+F),Player.Y,Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16)))
TilemapXB=(F-Player.Speed)
Player.RightFlagA=0
BREAK
ELSE
Player.RightFlagA=1
ENDIF
NEXT
ENDIF


IF TilemapTile[A][B][C].DotFlag=1
IF ANIMCOLL(Player.Guide,4,Player.X,Player.Y,Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16)))
Tilemap.DotFlag=1
ENDIF
ENDIF


IF TilemapTile[A][B][C].AnimatedFlag=1
DRAWANIM Tilemap.Image,(TilemapTile[A][B][C].Frame+TilemapTile[A][B][C].FrameCounter+TilemapTile[A][B][C].FrameOffset),(Tilemap.X+(G*16)),(Tilemap.Y+(H*16))
ELSEIF TilemapTile[A][B][C].AnimatedFlag=0
DRAWANIM Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16))
ENDIF


H=H+1
NEXT
G=G+1
NEXT
NEXT


DRAWANIM Player.Guide,0,Player.X,Player.Y
DRAWANIM Player.Guide,1,Player.X,Player.Y
DRAWANIM Player.Guide,2,Player.X,Player.Y
DRAWANIM Player.Guide,3,Player.X,Player.Y
DRAWANIM Player.Image,Player.Frame,(Player.X-8),(Player.Y-26)


FOR A=0 TO 4
G=0
FOR B=Tilemap.XOffset TO (D+Tilemap.XOffset)
H=0
FOR C=Tilemap.YOffset TO (E+Tilemap.YOffset)


IF Tilemap.DotFlag=1
IF TilemapTile[A][B][C].DotFlag=1
IF TilemapTile[A][B][C].AnimatedFlag=1
DRAWANIM Tilemap.Image,(TilemapTile[A][B][C].Frame+TilemapTile[A][B][C].FrameCounter+TilemapTile[A][B][C].FrameOffset),(Tilemap.X+(G*16)),(Tilemap.Y+(H*16))
ELSEIF TilemapTile[A][B][C].AnimatedFlag=0
DRAWANIM Tilemap.Image,TilemapTile[A][B][C].Frame,(Tilemap.X+(G*16)),(Tilemap.Y+(H*16))
ENDIF
ENDIF
ENDIF


IF Tilemap.FrameDelay>=10
TilemapTile[A][B][C].FrameCounter=TilemapTile[A][B][C].FrameCounter+TilemapTile[A][B][C].FrameXIncrement

IF TilemapTile[A][B][C].FrameCounter>(Tilemap.TilesetTileWidth-(TilemapTile[A][B][C].FrameJump+1))+((TilemapTile[A][B][C].FrameCounterB*Tilemap.TilesetTileWidth))
TilemapTile[A][B][C].FrameOffset=TilemapTile[A][B][C].FrameOffset+(Tilemap.TilesetTileWidth*(TilemapTile[A][B][C].FrameYIncrement-1))
TilemapTile[A][B][C].FrameCounterB=TilemapTile[A][B][C].FrameCounterB+1
ENDIF

IF TilemapTile[A][B][C].FrameCounter>=TilemapTile[A][B][C].AnimatedFrames*TilemapTile[A][B][C].FrameXIncrement
TilemapTile[A][B][C].FrameCounter=0
TilemapTile[A][B][C].FrameCounterB=0
TilemapTile[A][B][C].FrameOffset=0
ENDIF
ENDIF


H=H+1
NEXT
G=G+1
NEXT
NEXT


IF Player.FrameDelay>=10 THEN Player.FrameDelay=0
IF Tilemap.FrameDelay>=10 THEN Tilemap.FrameDelay=0
Tilemap.Y=(Tilemap.Y+TilemapYA)
Tilemap.Y=(Tilemap.Y-TilemapYB)
Tilemap.X=(Tilemap.X+TilemapXA)
Tilemap.X=(Tilemap.X-TilemapXB)
ENDFUNCTION