my build from source segfaults - please help

About SheepShaver, a PPC Mac emulator for Windows, MacOS X, and Linux that can run System 7.5.3 to MacOS 9.0.4.

Moderators: Cat_7, Ronald P. Regensburg, ClockWise

Post Reply
themaddoctor
Space Cadet
Posts: 9
Joined: Fri Jan 07, 2011 5:41 pm

my build from source segfaults - please help

Post by themaddoctor »

I downloaded the source from git (last modified 20140306),
and built with PKG_CONFIG_PATH=/usr/lib64/pkgconfig ./configure --prefix=/usr --datadir=/usr/share/appdata --enable-sdl-video=yes --enable-sdl-audio=yes
but it segfaults every time.
I tried also without SDL video, and it quits every time
without the segfault warning.

By contrast, cat_7's build from 2010 does work.
User avatar
Cat_7
Expert User
Posts: 6121
Joined: Fri Feb 13, 2004 8:59 am
Location: Sittard, The Netherlands

Re: my build from source segfaults - please help

Post by Cat_7 »

Hi,

Yes, the older builds (e.g., built with gcc 4.4) do work. I just did a gdb on my latest build (with the new slirp patches included), and it gave me this:
Reading symbols from ./SheepShaver...done.
(gdb) run
Starting program: /home/hsp/src/macemu-master/SheepShaver/src/Unix/SheepShaver
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
SheepShaver V2.4 by Christian Bauer and Mar"c" Hellwig
[New Thread 0x7fffeb035700 (LWP 10293)]
[New Thread 0x7fffea834700 (LWP 10294)]
[New Thread 0x7fffea033700 (LWP 10295)]
[Thread 0x7fffea033700 (LWP 10295) exited]
[New Thread 0x7fffea033700 (LWP 10296)]
[New Thread 0x7fffe93cd700 (LWP 10297)]
[New Thread 0x7fffe8bcc700 (LWP 10298)]
[Thread 0x7fffe8bcc700 (LWP 10298) exited]
[Thread 0x7fffe93cd700 (LWP 10297) exited]
Reading ROM file...
[New Thread 0x7fffe93cd700 (LWP 10300)]
[New Thread 0x7fffe8bcc700 (LWP 10301)]
[New Thread 0x7fffd3fff700 (LWP 10302)]
[New Thread 0x7fffd3629700 (LWP 10303)]
[New Thread 0x7fffd2e28700 (LWP 10304)]
[New Thread 0x7fffd2627700 (LWP 10305)]
Detected CPU features: MMX SSE SSE2 SSE3 SSSE3
PowerPC CPU emulator by Gwenole Beauchesne

Program received signal SIGSEGV, Segmentation fault.
powerpc_cpu::execute_loadstore<op_template_nop<unsigned int>, input_gpr_except<bit_field<11, 15>, 0>, immediate_operand<bit_field<16, 31>, op_sign_extend_16_32>, false, 4, false, false> (this=0x7864eed0,
opcode=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
store (value=<optimized out>, ea=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_write_memory_4 (value=<optimized out>, addr=<optimized out>)
at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_do_write_memory_4 (v=<optimized out>, a=<optimized out>) at ../kpx_cpu/src/cpu/vm.hpp:69
69 static inline void vm_do_write_memory_4(uint32 *a, uint32 v) { *a = bswap_32(v); }
(gdb) step
sigsegv_handler (sig=11, sip=0x7fffffffd7f0, scp=0x7fffffffd6c0) at sigsegv.cpp:2861
2861 {
(gdb) step
2863 if (handle_badaccess(SIGSEGV_FAULT_HANDLER_ARGS)) {
(gdb) step
handle_badaccess (sip=0x7fffffffd7f0, scp=0x7fffffffd6c0) at sigsegv.cpp:2613
2613 SI.addr = (sigsegv_address_t)SIGSEGV_FAULT_ADDRESS_FAST;
(gdb) step
2623 switch (SIGSEGV_FAULT_HANDLER_INVOKE(SIP)) {
(gdb) step
2613 SI.addr = (sigsegv_address_t)SIGSEGV_FAULT_ADDRESS_FAST;
(gdb) step
2614 SI.pc = (sigsegv_address_t)SIGSEGV_FAULT_INSTRUCTION_FAST;
(gdb) step
2623 switch (SIGSEGV_FAULT_HANDLER_INVOKE(SIP)) {
(gdb) step
sigsegv_handler (sip=0x7fffffffd670) at ../kpx_cpu/sheepshaver_glue.cpp:756
756 {
(gdb) step
764 const uintptr addr = (uintptr)sigsegv_get_fault_address(sip);
(gdb) step
sigsegv_get_fault_address (SIP=SIP@entry=0x7fffffffd670) at sigsegv.cpp:2589
2589 return SIP->addr;
(gdb) step
2590 }
(gdb) step
sigsegv_handler (sip=0x7fffffffd670) at ../kpx_cpu/sheepshaver_glue.cpp:767
767 if ((addr - (uintptr)ROMBaseHost) < ROM_SIZE)
(gdb) step
768 return SIGSEGV_RETURN_SKIP_INSTRUCTION;
(gdb) step
825 }
(gdb) step
handle_badaccess (sip=<optimized out>, scp=0x7fffffffd6c0) at sigsegv.cpp:2635
2635 if (SIGSEGV_SKIP_INSTRUCTION(SIGSEGV_REGISTER_FILE)) {
(gdb)
ix86_skip_instruction (regs=0x7fffffffd6e8) at sigsegv.cpp:987
987 unsigned char * eip = (unsigned char *)regs[X86_REG_EIP];
(gdb)
989 if (eip == 0)
(gdb)

987 unsigned char * eip = (unsigned char *)regs[X86_REG_EIP];
(gdb)

989 if (eip == 0)
(gdb)
1014 if (*eip == 0x66) {
(gdb)
1006 int len = 0;
(gdb)
1002
transfer_size_t transfer_size = SIZE_LONG;
(gdb)
1014 if (*eip == 0x66) {
(gdb)
1030 if ((*eip & 0xf0) == 0x40) {

(gdb)
1028 rex_t rex = { 0, 0, 0, 0 };

(gdb)

1029 bool has_rex = false;
(gdb)
1056 switch (eip[0]) {
(gdb)





1003 instruction_type_t instruction_type = i_MOV;
(gdb)

1056 switch (eip[0]) {
(gdb)

1005 int reg = -1;
(gdb)
1003 instruction_type_t instruction_type = i_MOV;
(gdb)
1001 transfer_type_t transfer_type = SIGSEGV_TRANSFER_UNKNOWN;
(gdb)
1143 if (transfer_type == SIGSEGV_TRANSFER_UNKNOWN) {
(gdb)

sigsegv_handler (sig=<optimized out>, sip=<optimized out>, scp=0x7fffffffd6c0) at sigsegv.cpp:2872
2872 SIGSEGV_ALL_SIGNALS
(gdb)

__bsd_signal (sig=11, handler=0x0) at ../sysdeps/posix/signal.c:36
36 ../sysdeps/posix/signal.c: No such file or directory.
(gdb)
32 in ../sysdeps/posix/signal.c
(gdb)
36 in ../sysdeps/posix/signal.c
(gdb)
32 in ../sysdeps/posix/signal.c
(gdb) step
43 in ../sysdeps/posix/signal.c
(gdb) step
42 in ../sysdeps/posix/signal.c
(gdb) step
43 in ../sysdeps/posix/signal.c
(gdb) step
44 in ../sysdeps/posix/signal.c
(gdb) step
__sigaddset (__sig=11, __set=0x7fffffffd528) at ../sysdeps/unix/sysv/linux/bits/sigset.h:117
117 ../sysdeps/unix/sysv/linux/bits/sigset.h: No such file or directory.
(gdb) step
__bsd_signal (sig=11, handler=0x0) at ../sysdeps/posix/signal.c:47
47 ../sysdeps/posix/signal.c: No such file or directory.
(gdb) step
44 in ../sysdeps/posix/signal.c
(gdb) step
__sigaddset (__sig=11, __set=0x7fffffffd528) at ../sysdeps/unix/sysv/linux/bits/sigset.h:117
117 ../sysdeps/unix/sysv/linux/bits/sigset.h: No such file or directory.
(gdb) step
__bsd_signal (sig=11, handler=0x0) at ../sysdeps/posix/signal.c:47
47 ../sysdeps/posix/signal.c: No such file or directory.
(gdb) step
44 in ../sysdeps/posix/signal.c
(gdb) step
__sigaddset (__sig=11, __set=0x7fffffffd528) at ../sysdeps/unix/sysv/linux/bits/sigset.h:117
117 ../sysdeps/unix/sysv/linux/bits/sigset.h: No such file or directory.
(gdb) step
__bsd_signal (sig=11, handler=0x0) at ../sysdeps/posix/signal.c:46
46 ../sysdeps/posix/signal.c: No such file or directory.
(gdb) step
__sigismember (__sig=11, __set=0x7ffff62bdd00 <_sigintr>)
at ../sysdeps/unix/sysv/linux/bits/sigset.h:116
116 ../sysdeps/unix/sysv/linux/bits/sigset.h: No such file or directory.
(gdb) step
__bsd_signal (sig=11, handler=0x0) at ../sysdeps/posix/signal.c:46
46 ../sysdeps/posix/signal.c: No such file or directory.
(gdb) step
47 in ../sysdeps/posix/signal.c
(gdb) step
__GI___sigaction (sig=11, act=act@entry=0x7fffffffd520, oact=oact@entry=0x7fffffffd5c0)
at ../nptl/sigaction.c:37
37 ../nptl/sigaction.c: No such file or directory.
(gdb) step
43 in ../nptl/sigaction.c
(gdb) step
__GI___libc_sigaction (sig=11, act=act@entry=0x7fffffffd520, oact=oact@entry=0x7fffffffd5c0)
at ../sysdeps/unix/sysv/linux/x86_64/sigaction.c:49
49 ../sysdeps/unix/sysv/linux/x86_64/sigaction.c: No such file or directory.
(gdb) step
53 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
49 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
53 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
56 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
55 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
56 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
55 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
56 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
^[[A57 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
59 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
64 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
67 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
69 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
70 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
^[[A71 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
72 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
75 in ../sysdeps/unix/sysv/linux/x86_64/sigaction.c
(gdb) step
__bsd_signal (sig=<optimized out>, handler=<optimized out>) at ../sysdeps/posix/signal.c:50
50 ../sysdeps/posix/signal.c: No such file or directory.
(gdb) step
51 in ../sysdeps/posix/signal.c
(gdb) step
sigsegv_handler (sig=<optimized out>, sip=<optimized out>, scp=0x7fffffffd6c0) at sigsegv.cpp:2874
2874 }
(gdb) step
powerpc_cpu::execute_loadstore<op_template_nop<unsigned int>, input_gpr_except<bit_field<11, 15>, 0>, immediate_operand<bit_field<16, 31>, op_sign_extend_16_32>, false, 4, false, false> (this=0x7864eed0,
opcode=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
store (value=<optimized out>, ea=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_write_memory_4 (value=<optimized out>, addr=<optimized out>)
at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_do_write_memory_4 (v=<optimized out>, a=<optimized out>) at ../kpx_cpu/src/cpu/vm.hpp:69
69 static inline void vm_do_write_memory_4(uint32 *a, uint32 v) { *a = bswap_32(v); }
(gdb) step

Program received signal SIGSEGV, Segmentation fault.
powerpc_cpu::execute_loadstore<op_template_nop<unsigned int>, input_gpr_except<bit_field<11, 15>, 0>, immediate_operand<bit_field<16, 31>, op_sign_extend_16_32>, false, 4, false, false> (this=0x7864eed0,
opcode=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
store (value=<optimized out>, ea=<optimized out>) at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_write_memory_4 (value=<optimized out>, addr=<optimized out>)
at ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp:585
585 memory_helper<SZ, RX>::store(ea, operand_RS::get(this, opcode));
(gdb) step
vm_do_write_memory_4 (v=<optimized out>, a=<optimized out>) at ../kpx_cpu/src/cpu/vm.hpp:69
69 static inline void vm_do_write_memory_4(uint32 *a, uint32 v) { *a = bswap_32(v); }
(gdb) step
[Thread 0x7fffd2627700 (LWP 10305) exited]
[Thread 0x7fffd2e28700 (LWP 10304) exited]
[Thread 0x7fffd3629700 (LWP 10303) exited]
[Thread 0x7fffd3fff700 (LWP 10302) exited]
[Thread 0x7fffe8bcc700 (LWP 10301) exited]
[Thread 0x7fffe93cd700 (LWP 10300) exited]
[Thread 0x7fffea033700 (LWP 10296) exited]
[Thread 0x7fffea834700 (LWP 10294) exited]
[Thread 0x7fffeb035700 (LWP 10293) exited]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
themaddoctor
Space Cadet
Posts: 9
Joined: Fri Jan 07, 2011 5:41 pm

Re: my build from source segfaults - please help

Post by themaddoctor »

That's a lot of gobbly gook. Any idea what it means?

My system has gcc 4.8.2. Is it hopeless for me to
continue trying to compile and run sheepshaver?
User avatar
Cat_7
Expert User
Posts: 6121
Joined: Fri Feb 13, 2004 8:59 am
Location: Sittard, The Netherlands

Re: my build from source segfaults - please help

Post by Cat_7 »

Hi,

It's would be best to use the builds that are working from our forum.
The errors I pasted will need to be fixed by a developer.

Best,
Cat_7
themaddoctor
Space Cadet
Posts: 9
Joined: Fri Jan 07, 2011 5:41 pm

Re: my build from source segfaults - please help

Post by themaddoctor »

OK, for now. But may I ask: Is the problem with GCC > 4.4
when compiling SS alone? In other words, if I install GCC 4.4,
and compile SS, would I also have to recompile the dependencies
(SDL, etc.) with the older GCC?

Thanks again.
User avatar
Cat_7
Expert User
Posts: 6121
Joined: Fri Feb 13, 2004 8:59 am
Location: Sittard, The Netherlands

Re: my build from source segfaults - please help

Post by Cat_7 »

Hi,

Yes, you should compile SDL with the same gcc version you compile SheepShaver with.
It's easy to install SDL in a separate folder and then point SheepShaver to it.
Use these steps in the folder into which you unpacked SDL:
./autogen.sh
./configure --disable-shared --prefix=`pwd`
make
make install
PATH=`pwd`/bin:$PATH
export PATH

And then go the SheepShaver source and compile. It will find the SDL installation in the path.

The highest version of gcc and g++ you should install is 4.6.

Best,
Cat_7
themaddoctor
Space Cadet
Posts: 9
Joined: Fri Jan 07, 2011 5:41 pm

Re: my build from source segfaults - please help

Post by themaddoctor »

Success!

GCC 4.6.3, SDL 1.2.15

Thanks for your help!
User avatar
rickyzhang
Apple Corer
Posts: 205
Joined: Mon Sep 15, 2014 7:59 pm

Re: my build from source segfaults - please help

Post by rickyzhang »

Hi Gentlemen,

I know this is a little big old thread. But I wonder if this is related to GCC compiler or kernel. I want to fix this and make it works under latest GCC.

thanks,
Ricky
There is an App for that!
https://github.com/rickyzhang82
Post Reply