Port-m68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

sync DFLSSIZ and MAXXSIZ among m68k ports?



I've been trying to build m68k packages on NetBSD/virt68k and
got SIGSEGV on building pkgsrc/devel/ninja-build:

---
File "/usr/pkg/lib/python3.12/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./ninja']' died with <Signals.SIGSEGV: 11>.
---

According to isaki@'s analysis, this also happen on NetBSD/x68k
and is caused by ninja that try to allocalte 512KB (!) on stack:
---
x68k# make package-install
:
bootstrapping ninja...
wrote build.ninja.
bootstrap complete.  rebuilding...
Traceback (most recent call last):
  File "/export/pkgsrc/devel/ninja-build/work/ninja-1.12.1/./configure.py", line 702, in <module>
    subprocess.check_call(rebuild_args)
  File "/usr/pkg/lib/python3.12/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./ninja']' died with <Signals.SIGSEGV: 11>.
*** Error code 1

Stop.
make[1]: stopped in /export/pkgsrc/devel/ninja-build
:

x68k# cd work/ninja-1.21.1
x68k# gdb ./ninja ./ninja.core
:
Core was generated by `ninja'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0001707a in DepsLog::Load (this=0xffefe760, path=..., state=0xffefe684,
    err=0xffefe5a8) at src/deps_log.cc:152
152     LoadStatus DepsLog::Load(const string& path, State* state, string* err) {
(gdb) info reg
d0             0xffefe598          -1055336
d1             0x1e                30
d2             0xffefe598          -1055336
d3             0xffefe760          -1054880
d4             0xffefe578          -1055368
d5             0xffefe5a8          -1055320
d6             0xffefe800          -1054720
d7             0xffefe724          -1054940
a0             0xffefe5b0          0xffefe5b0
a1             0x11                0x11
a2             0xffefe678          0xffefe678
a3             0xffefe580          0xffefe580
a4             0x43e45bc           0x43e45bc <__stack_chk_guard>
a5             0x3e38c             0x3e38c
fp             0xffefe534          0xffefe534
sp             0xffe7e4ac          0xffe7e4ac
ps             0x8                 [ N ]
pc             0x1707a             0x1707a
:
(gdb) p $fp - $sp
$1 = 524424
(gdb) q
x68k# less src/deps_log.cc
:
const unsigned kMaxRecordSize = (1 << 19) - 1;
:
LoadStatus DepsLog::Load(const string& path, State* state, string* err) {
  METRIC_RECORD(".ninja_deps load");
  char buf[kMaxRecordSize + 1];
: 

x68k# ulimit -s
512
x68k# ulimit -a
time          (-t seconds    )    unlimited
file          (-f blocks     )    unlimited
data          (-d kbytes     )        16384
stack         (-s kbytes     )          512
coredump      (-c blocks     )    unlimited
memory        (-m kbytes     )       135372
locked memory (-l kbytes     )        45124
thread        (-r threads    )         2048
process       (-p processes  )          148
nofiles       (-n descriptors)          128
vmemory       (-v kbytes     )    unlimited
sbsize        (-b bytes      )    unlimited
x68k# uname -srm
NetBSD 10.1_STABLE x68k
---

(I've file an issue to their GitHub:
 https://github.com/ninja-build/ninja/issues/2567 )

On the other hand, NetBSD/atari has 2MB stack by default
so ninja-build builds without problems.

Currently various NetBSD/m68k ports have different DFLSSIZE and MAXSSIZE
in <machine/vmparam.h> (maybe due to historical reasons):

---
amiga/include/vmparam.h :#define	DFLSSIZ		(2*1024*1024)		/* initial stack size limit */
amiga/include/vmparam.h :#define	MAXSSIZ		(32*1024*1024)		/* max stack size */

atari/include/vmparam.h :#define	DFLSSIZ		(2*1024*1024)		/* initial stack size limit */
atari/include/vmparam.h :#define	MAXSSIZ		(256*1024*1024)		/* max stack size */

cesfic/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
cesfic/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

hp300/include/vmparam.h :#define	DFLSSIZ		(2*1024*1024)		/* initial stack size limit */
hp300/include/vmparam.h :#define	MAXSSIZ		MAXDSIZ			/* max stack size */

luna68k/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
luna68k/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

mac68k/include/vmparam.h:#define	DFLSSIZ		(2*1024*1024)		/* initial stack size limit */
mac68k/include/vmparam.h:#define	MAXSSIZ		(32*1024*1024)		/* max stack size */

mvme68k/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
mvme68k/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

news68k/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
news68k/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

next68k/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
next68k/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

sun3/include/vmparam3.h :#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
sun3/include/vmparam3.h :#define	MAXSSIZ		MAXDSIZ			/* max stack size */

sun3/include/vmparam3x.h:#define	DFLSSIZ		(2*1024*1024)		/* initial stack size limit */
sun3/include/vmparam3x.h:#define	MAXSSIZ		(32*1024*1024)		/* max stack size */

virt68k/include/vmparam.h:#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
virt68k/include/vmparam.h:#define	MAXSSIZ		MAXDSIZ			/* max stack size */

x68k/include/vmparam.h   :#define	DFLSSIZ		(512*1024)		/* initial stack size limit */
x68k/include/vmparam.h   :#define	MAXSSIZ		MAXDSIZ			/* max stack size */

---

Is it worth to unify these DFLSSIZE (2MB) and MAXSSIZE (32MB)
for at least hp300 pmap derived m68k ports (i.e. except sun3 and sun3x)?

Thanks,

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index