Previous Thread
Next Thread
Print Thread
Page 153 of 536 1 2 151 152 153 154 155 535 536
Joined: Jul 2007
Posts: 4,625
A
Anna Wu Offline OP
Very Senior Member
OP Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
My second try with clean compile.

Quote:
C:\Emulator\Mess\SVN\Bin\mess>make TARGET=mess
Compiling src/mame/drivers/megadriv.c...
src/mame/drivers/megadriv.c: In function 'void driver_init__32x(running_machine*
)':
src/mame/drivers/megadriv.c:6577: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [obj/windows/mess/mame/drivers/megadriv.o] Error 1


Can it be, something wrong with my GCC 4.4.3 20091223 version ?

Joined: Jul 2007
Posts: 4,625
A
Anna Wu Offline OP
Very Senior Member
OP Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
Originally Posted By etabeta78
you might have stopped compilation during first run, ending up with a half-compiled megadriv.o

try deleting it from the obj/windows/mess/mame/drivers/ directory and restarting compilation

current svn compiles fine


Thank you to try to help me. smile
My obj/windows/mess/mame/drivers/ directory is and was empty.




Joined: Aug 2004
Posts: 1,444
Likes: 6
Very Senior Member
Offline
Very Senior Member
Joined: Aug 2004
Posts: 1,444
Likes: 6
I got the same error today on a clean compile, it has happened to very many people, however I'm told we all have faulty pcs.

One suggestion is to not use the -j option, but if that doesn't fix it, go to mess/drivers/genesis.c, mame/includes/megadriv.h, and mame/drivers/megadriv.c and change the reference of DRIVER_INIT(_32x) to x32x. That always works. No idea why though.


If you get a segfault while compiling tms57002, open the file it complains about (tms57002.c), look for the first occurence of "cycles > 0" (without the quotes) (it's a IF statement) and enclose it in ( ) - so it looks like (cycles > 0) .. this always works too, again no idea what difference it could make.

Last edited by robbbert; 06/06/10 01:16 PM.
Joined: Mar 2006
Posts: 1,055
L
Very Senior Member
Online Content
Very Senior Member
L
Joined: Mar 2006
Posts: 1,055
Not faulty pcs, its just that the newer mame/mess build toolkit mingw64 version has some nasty extremely-hard-to-track compiler bugs which are especially prevalent in the 32 bit version but don't affect the 64 bit version much if at all.
They also, for some reason, cause much more problems on winxp than on win7 or vista, and I have no idea why...

LN


"When life gives you zombies... *CHA-CHIK!* ...you make zombie-ade!"
Joined: Mar 2001
Posts: 16,757
Likes: 29
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,757
Likes: 29
More accurately, there's an intermittent compiler bug on XP (a 10 year old operating system) which doesn't occur on 32 or 64 bit versions of Vista or 7 (or at all on Linux/BSD/Mac). The same compiler bug also occurs on systems which are overclocked or have faulty RAM.

Anyway, Firewave was pissed because it wasn't happening for a while, so now he can go to work.

Joined: Jul 2007
Posts: 4,625
A
Anna Wu Offline OP
Very Senior Member
OP Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
Originally Posted By robbbert
I got the same error today on a clean compile, it has happened to very many people, however I'm told we all have faulty pcs.

One suggestion is to not use the -j option, but if that doesn't fix it, go to mess/drivers/genesis.c, mame/includes/megadriv.h, and mame/drivers/megadriv.c and change the reference of DRIVER_INIT(_32x) to x32x. That always works. No idea why though.


If you get a segfault while compiling tms57002, open the file it complains about (tms57002.c), look for the first occurence of "cycles > 0" (without the quotes) (it's a IF statement) and enclose it in ( ) - so it looks like (cycles > 0) .. this always works too, again no idea what difference it could make.


I not use the -j option.

mess/drivers/genesis.c


Quote:
/****************************************** SegaCD & 32X emulation ****************************************/

/* Very preliminary skeleton code from David Haywood, borrowed for MESS by Fabio Priuli */
/* These are only included to document BIOS informations currently available */

static DRIVER_INIT( mess_32x )
{
DRIVER_INIT_CALL(_32x);
DRIVER_INIT_CALL(mess_md_common);
}

static MACHINE_DRIVER_START( ms_32x )
MDRV_IMPORT_FROM( genesis_32x )

MDRV_IMPORT_FROM( _32x_cartslot )
MACHINE_DRIVER_END


to


Quote:
/****************************************** SegaCD & 32X emulation ****************************************/

/* Very preliminary skeleton code from David Haywood, borrowed for MESS by Fabio Priuli */
/* These are only included to document BIOS informations currently available */

static DRIVER_INIT( messx32x )
{
DRIVER_INIT_CALL([_32x);
DRIVER_INIT_CALL(mess_md_common);
}

static MACHINE_DRIVER_START( ms_32x )
MDRV_IMPORT_FROM( genesis_32x )

MDRV_IMPORT_FROM( _32x_cartslot )
MACHINE_DRIVER_END


mame/drivers/megadriv.c

Quote:

#define MASTER_CLOCK_NTSC 53693175
#define MASTER_CLOCK_PAL 53203424
#define SEGACD_CLOCK 12500000

extern DRIVER_INIT( megadriv_c2 );
extern DRIVER_INIT( megadrie );
extern DRIVER_INIT( megadriv );
extern DRIVER_INIT( megadrij );
extern DRIVER_INIT( _32x );
extern DRIVER_INIT( mpnew );


to

Quote:
#define MASTER_CLOCK_NTSC 53693175
#define MASTER_CLOCK_PAL 53203424
#define SEGACD_CLOCK 12500000

extern DRIVER_INIT( megadriv_c2 );
extern DRIVER_INIT( megadrie );
extern DRIVER_INIT( megadriv );
extern DRIVER_INIT( megadrij );
extern DRIVER_INIT( x32x );
extern DRIVER_INIT( mpnew );


mame/drivers/megadriv.c

Quote:
DRIVER_INIT( _32x )
{
_32x_dram0 = auto_alloc_array(machine, UINT16, 0x40000/2);
_32x_dram1 = auto_alloc_array(machine, UINT16, 0x40000/2);

memset(_32x_dram0, 0x00, 0x40000);
memset(_32x_dram1, 0x00, 0x40000);

_32x_palette_lookup = auto_alloc_array(machine, UINT16, 0x200/2);
_32x_palette = auto_alloc_array(machine, UINT16, 0x200/2);

memset(_32x_palette_lookup, 0x00, 0x200);
memset(_32x_palette, 0x00, 0x200);


to

Quote:
DRIVER_INIT( x32x )
{
_32x_dram0 = auto_alloc_array(machine, UINT16, 0x40000/2);
_32x_dram1 = auto_alloc_array(machine, UINT16, 0x40000/2);

memset(_32x_dram0, 0x00, 0x40000);
memset(_32x_dram1, 0x00, 0x40000);

_32x_palette_lookup = auto_alloc_array(machine, UINT16, 0x200/2);
_32x_palette = auto_alloc_array(machine, UINT16, 0x200/2);

memset(_32x_palette_lookup, 0x00, 0x200);
memset(_32x_palette, 0x00, 0x200);


Is this right or I forget something ?

Joined: Mar 2001
Posts: 16,757
Likes: 29
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,757
Likes: 29
The compiler can tell you faster and easier than us - if it generates a new error, you forgot something smile

Also, if you don't normally use -j, adding it can sometimes bypass the initial error.

Joined: Jan 2006
Posts: 3,690
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,690
that is just a workaround which might work or not on your computer, not a real fix. e.g. the unmodified code compiles perfectly on my winxp computer. this is a subtle compiler problem which we hope to solve sooner or later.

notice that someone else used a different workaround consisting of changing the order of some constant (without need of renaming any 32x item).

Kale reported that compiling with lower case

make target=mess

fixed as well the issue in his computer, but I never got the error, so I don't know if it would work for everyone.

Joined: Jul 2007
Posts: 4,625
A
Anna Wu Offline OP
Very Senior Member
OP Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
Originally Posted By R. Belmont
The compiler can tell you faster and easier than us - if it generates a new error, you forgot something smile

Also, if you don't normally use -j, adding it can sometimes bypass the initial error.


-j is not helpful for me. What I forget ?

Joined: Jul 2007
Posts: 4,625
A
Anna Wu Offline OP
Very Senior Member
OP Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
Originally Posted By etabeta78
that is just a workaround which might work or not on your computer, not a real fix. e.g. the unmodified code compiles perfectly on my winxp computer. this is a subtle compiler problem which we hope to solve sooner or later.

notice that someone else used a different workaround consisting of changing the order of some constant (without need of renaming any 32x item).

Kale reported that compiling with lower case

make target=mess


fixed as well the issue in his computer, but I never got the error, so I don't know if it would work for everyone.


How strange is this ? sick

It seems (still in progress...) to work now ! smile

Thanks guys (robbbert, etabeta78, Arbee) for your great help.

Last edited by Anna Wu; 06/06/10 02:01 PM.
Page 153 of 536 1 2 151 152 153 154 155 535 536

Link Copied to Clipboard
Who's Online Now
0 members (), 31 guests, and 3 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics8,943
Posts117,565
Members4,994
Most Online890
Jan 17th, 2020
Forum Host
These forums are hosted by www.retrogamesformac.com
Forum hosted by www.retrogamesformac.com