On Sun, May 19, 2024 at 07:45:29PM +0000, Klemens Nanni wrote: > 19.05.2024 18:04, Thomas Frohwein пишет: > > I think the better approach is to pick an absolute datasize and set > > that (or recommend it in README or MESSAGE). See chromium's > > files/chrome: > > > > DATASIZE="716800" > > [...] > > if [ $(ulimit -Sd) -lt ${DATASIZE} ]; then > > ulimit -Sd ${DATASIZE} || \ > > xm_log "Cannot increase datasize-cur to at least ${DATASIZE}" > > [ $? -eq 0 ] || exit > > fi > > > > Otherwise you're doubling an unknown ulimit -d that might already be > > sufficient. > > Fair point, so 1.5G crashed and 3G worked; I did a big game with 2G and > it worked, so I'll pick that and we can still crank if needed. > > > > >> + "$pyrogenesis" "$@" > >> + else > >> + echo "Error: pyrogenesis not found in ($PATH)" > >> > > > > I tested the pop-up with an extra *5 to make it fail. > Feedback? OK?
Can we do the same check for -lt like with chromium? The reason is that I don't think the datasize should be reduced if the user has set it higher than the 2G. As in this counter diff: Index: Makefile =================================================================== RCS file: /cvs/ports/games/0ad/base/Makefile,v retrieving revision 1.51 diff -u -p -r1.51 Makefile --- Makefile 6 May 2024 12:23:33 -0000 1.51 +++ Makefile 19 May 2024 21:12:33 -0000 @@ -2,7 +2,7 @@ COMMENT = historical real-time strategy DISTNAME = 0ad-${V}-alpha-unix-build PKGNAME = 0ad-${V} -REVISION = 6 +REVISION = 7 USE_WXNEEDED = Yes USE_NOBTCFI = Yes @@ -105,7 +105,7 @@ do-install: cp -R ${WRKDIST}/binaries/data/* ${PREFIX}/share/0ad ${INSTALL_DATA} ${WRKDIST}/binaries/system/lib* ${PREFIX}/lib ${INSTALL_PROGRAM} ${WRKDIST}/binaries/system/pyrogenesis ${PREFIX}/bin - ${INSTALL_SCRIPT} ${WRKDIST}/build/resources/0ad.sh ${PREFIX}/bin/0ad + ${SUBST_PROGRAM} ${WRKDIST}/build/resources/0ad.sh ${PREFIX}/bin/0ad ${INSTALL_DATA_DIR} ${PREFIX}/share/applications ${INSTALL_DATA} ${WRKDIST}/build/resources/0ad.desktop \ ${PREFIX}/share/applications/ Index: patches/patch-build_resources_0ad_sh =================================================================== RCS file: patches/patch-build_resources_0ad_sh diff -N patches/patch-build_resources_0ad_sh --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-build_resources_0ad_sh 19 May 2024 21:12:33 -0000 @@ -0,0 +1,22 @@ +Try to crank datasize to 2G to avoid ENOMEM crashes during big games + +Index: build/resources/0ad.sh +--- build/resources/0ad.sh.orig ++++ build/resources/0ad.sh +@@ -2,6 +2,16 @@ + + pyrogenesis=$(which pyrogenesis 2> /dev/null) + if [ -x "$pyrogenesis" ] ; then ++ DATASIZE=$((2 * 1024 * 1024)) ++ if [ $(ulimit -Sd) -lt ${DATASIZE} ]; then ++ ulimit -Sd ${DATASIZE} || \ ++ ${X11BASE}/bin/xmessage -file - -center -buttons yes:0,no:1 -default no <<- _EOF ++ Cannot increase datasize-cur to at least ${DATASIZE} ++ Do you want to run 0.A.D. anyway? ++ (If so, it may run out of memory and crash.) ++ _EOF ++ [ $? -eq 0 ] || exit ++ fi + "$pyrogenesis" "$@" + else + echo "Error: pyrogenesis not found in ($PATH)"