return;
}
do {static struct sigaction action; action.__sigaction_handler.sa_handler = (void *)memprotect_handler; action.sa_flags = 0x10000000|0x00000008; sigemptyset(&action.sa_mask); sigaddset(&action.sa_mask,2); sigaddset(&action.sa_mask,14); sigaction(11,&action,0); sigaction(10,&action,0);} while (0);
beg=first_protectable_page;
writable = (((unsigned long)beg<(128*1024*(4>>2)/(1<<(14 -12))))&& (sgc_type_map[beg]& (4 | 1)));
for (i=beg ; ++i<= end; ) {
int wri = (((unsigned long)i<(128*1024*(4>>2)/(1<<(14 -12))))&& (sgc_type_map[i]& (4 | 1)));
if ((wri==0&& writable)
|| (writable ==0&& wri)
|| i == end) {
if (writable)
make_writable(beg,i);
else
sgc_mprotect(beg,i-beg,writable);
writable = wri;
beg = i;
}
}
}
with the following strace:
lstat64("/usr/lib/gcl-2.6.7/unixport/saved_gcl", {st_mode=S_IFREG|0755, st_size=9231344, ...}) = 0
personality(0xffffffff /* PER_??? */) = 0
rt_sigaction(SIGSEGV, {0x18000008, [RT_68 RT_71 RT_75 RT_80 RT_81 RT_85 RT_86 RT_87 RT_88 RT_90 RT_92 RT_94], SA_SIGINFO|0x422fe4}, NULL, 16) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
getrlimit(RLIMIT_DATA, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
rt_sigaction(SIGSEGV, {0x18000008, [RT_69 RT_72 RT_75 RT_76 RT_82 RT_84 RT_85 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], SA_SIGINFO|0x422fe4}, NULL, 16) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault
The working -62 binary, built on and installed in my home on phrixos,
has the following strace:
personality(0xffffffff /* PER_??? */) = 0
rt_sigaction(SIGSEGV, {0x18000008, [RT_68 RT_71 RT_75 RT_80 RT_81 RT_85 RT_86 RT_87 RT_88 RT_90 RT_92 RT_94], SA_SIGINFO|0x422fe4}, NULL, 16) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
getrlimit(RLIMIT_DATA, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
mprotect(0xab8000, 1949696, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
rt_sigaction(SIGSEGV, {0x18000008, [RT_67 RT_68 RT_70 RT_71 RT_72 RT_74 RT_76 RT_77 RT_78 RT_80 RT_83 RT_84 RT_86 RT_87], SA_SIGINFO|0x422fe4}, NULL, 16) = 0
getrlimit(RLIMIT_DATA, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
sigaltstatck({ss_sp=0x6cbe98, ss_flags=0, ss_size=2097152}, NULL) = 0
The only thing I can spot is the RT_ flag difference in the second
sigaction call. But both these faults occur inside of sigaction (it
appears), so my working guess is that the c libraries are binary
incompatible across some of the the mipsel buildds.
I would need access to two different machines to be able to compile
with debugging on for further info. But I hope the above is enough.
Take care,
Andreas Barth<aba@not.so.argh.org> writes:
* Camm Maguire (camm@maguirefamily.org) [100719 18:20]:
Greetings! Is is possible the sigaction semantics have changed on
mipsel recently, and that rem might be running in an older
compatibility mode?
I've rebuilt gcl from the same -60 source on phrixous, and all appears
flawless. The older binary appears to be faulting on starup around an
attempted sigaction trap of SIGSEGV and SIGBUS (no debugging symbols).
Any way I can replace the -60 mipsel deb in the archive without
forcing a rebuild everywhere else?
You can upload an +b1-package built by hand. Alternativly, if it can
build automatically, I can schedule an binNMU.
Andi
--
Camm Maguire camm@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah