Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Nov 2024 05:21:31 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org>, "jah@freebsd.org" <jah@FreeBSD.org>, dougm@freebsd.org, Alan Somers <asomers@freebsd.org>, Mark Johnston <markj@FreeBSD.org>, FreeBSD Current <freebsd-current@freebsd.org>, Guido Falsi <mad@madpilot.net>, Yasuhiro Kimura <yasu@FreeBSD.org>, ports@freebsd.org
Subject:   Re: port binary dumping core on recent head in poudriere [tmpfs corruptions involving blocks of zeros that should not be all zeros]
Message-ID:  <4EDAA149-2D45-40D3-A2CA-F6FBD06C18BF@yahoo.com>
In-Reply-To: <4AE5B316-D7EB-4290-8D52-7FBF244EA7A4@FreeBSD.org>
References:  <aa597431-54a8-4cde-8d4f-b75040b59bae@madpilot.net> <f9e32784-226a-4e1e-a24b-62f5e6d3d765@madpilot.net> <E4616829-D2DE-4EAF-B971-1EDA8B447F13@FreeBSD.org> <7c9c3cf5-bbd1-4642-8d04-33aa07a4db02@madpilot.net> <9df256a8-c6ed-46d9-b955-fc2657c12d36@madpilot.net> <5c502054-7353-4a1e-8350-c403482e9c0d@madpilot.net> <a203a89f-2eb7-4220-8dfb-648cd46fc6bb@madpilot.net> <3127C3BA-FC93-4636-ADDB-89518DE9C60D@FreeBSD.org> <86ed2zsp6l.fsf@ltc.des.dev> <5f24a570-26e0-4c0a-817f-591a234fd07b@madpilot.net> <5918C6A1-8FDB-40CA-8C86-EB7B7BE75A2E@yahoo.com> <86ed2zc8r5.fsf@ltc.des.dev> <45098ccf-4dc6-426c-849a-c923805d6723@madpilot.net> <F64DB4E9-A210-4E1F-B333-C597F3DBED54@yahoo.com> <38658C0D-CA33-4010-BBE1-E68D253A3DF7@FreeBSD.org> <1004a753-9a3c-4aa2-bfa8-4a0c471fe3ea@madpilot.net> <D14FF56C-506F-4168-91BC-1F10937B943F@yahoo.com> <E77AF0C3-5210-41C7-B8B8-02A8E22DB23D@yahoo.com> <A2820AEA-AB92-425F-AE91-2AF9629B3020@yahoo.com> <0690CFB1-6A6D-4B63-916C-BAB7F6256000@yahoo.com> <3660625A-0EE8-40DA-A248-EC18C734718C@yahoo.com> <865xoa2t6f.fsf@ltc.des.dev> <69A2E921-F5E3-40D2-977D-0964EE27349A@FreeBSD.org> <4AE5B316-D7EB-4290-8D52-7FBF244EA7A4@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help


On Nov 26, 2024, at 04:58, Dimitry Andric <dim@FreeBSD.org> wrote:

> On 26 Nov 2024, at 13:32, Dimitry Andric <dim@FreeBSD.org> wrote:
>>=20
>> On 26 Nov 2024, at 11:19, Dag-Erling Sm=C3=B8rgrav <des@FreeBSD.org> =
wrote:
>>>=20
>>> Mark Millard <marklmi@yahoo.com> writes:
>>>> =46rom inside a bulk -i where I did a manual make command
>>>> after it built and installed libsass.so.1.0.0 . The
>>>> manual make produced a /wrkdirs/ :
>>>> [...]
>>>> So the original creation looks okay. But . . .
>>>> [...]
>>>> So: The later, staged copy is a bad copy. Both are in the
>>>> tmpfs. So copying to the staging area makes a corrupted
>>>> copy inside the same tmpfs. After that, further copies of
>>>> staging's bad copy can be expected to be messed up.
>>>=20
>>> This and the fact that it happens on 14 and 15 but not on 13 =
strongly
>>> suggests an issue wth `copy_file_range(2)`, since `install(1)` in 14 =
and
>>> 15 (but not in 13) now uses `copy_file_range(2)` if at all possible.
>>>=20
>>> My educated guess is that hole detection doesn't work reliably for =
files
>>> that have had holes filled while memory-mapped, so =
`copy_file_range(2)`
>>> thinks there is a hole where there isn't one and skips some of the =
data
>>> when `install(1)` uses it to copy the library from `${WRKSRC}` to
>>> `${STAGEDIR}`.  This may or may not be specific to tmpfs.
>>>=20
>>> You may want to try applying the attached patch to your FreeBSD 14 =
and
>>> 15 jails.  It prevents `cp(1)` and `install(1)` from trying to use
>>> `copy_file_range(2)`.
>>=20
>> Yes, tmpfs is indeed the culprit (or at least involved). I have had =
USE_TMPFS=3Dlocalbase in my poudriere.conf for a long time, since =
otherwise my build machine would run out of memory very quickly,

Use of TMPFS_BLACKLIST and TMPFS_BLACKLIST_TMPDIR can allow the use of
USE_TMPFS=3Dall in many contexts. I'll later show my list that tries to
exclude most everything using more than 7 or so GiBytes of tmpfs for
the builder.

If nothing else, it can help have a context for testing for the failure
at hand for fairly general builds, including "bulk -a" .

>> so I didn't encounter any issues.
>>=20
>> Now I changed it to USE_TMPFS=3Dyes, rebuilt only textproc/libsass =
and textproc/sassc, and then after reinstalling those packages:
>>=20
>> $ /usr/local/bin/sassc
>> Segmentation fault
>=20
> And after applying Dag-Erling's patch to disable copy_file_range for =
cp and install, it works correctly again.

For reference (a very long line in its original form, noted in
case something splits the line):

TMPFS_BLACKLIST=3D"*-emacs_devel *-emacs_devel_nox *-emacs_nox *-gcc14 =
*-rust-bootstrap 0ad RStudio aarch64-none-elf-gcc afni alliance anki =
apache-openoffice apache-openoffice-devel arm-none-eabi-gcc binutils =
biostar-tools blender boost-libs chezmoi chromium =
chrono-physics-simulation-engine clickhouse cmake-core code_saturne deno =
diaspora digikam dotnet dune-common dune-localfunctions dynare eclipse =
eksctl electron[1-9][0-9] ess ess-emacs_canna firefox firefox-esr =
foundationdb fr-aster freebsd-gcc14 gcc-arm-embedded =
gcc-msp430-ti-toolchain gcc14 gcc1[45]-devel gdb geant4 ghc ghc810 ghc92 =
ghc94 ghemical giacxcas grafana grafana-loki grafana9 gretl =
gstreamer1-plugins-rust heyoka hs-cardano-db-sync =
intel-graphics-compiler-llvm1[4321] iridium-browser julia kde5 kicad =
kicad-devel kicad-doc kicad-library-packages3d* kosmorro kstars =
libghemical libint2-psi4 libreoffice librewolf librsvg2-rust =
libva-intel-media-driver llvm-devel llvm1[98764321] mesa-dri =
mongodb[4-9][0-9] mpqc nerd-fonts nextcloudclient nextpnr octave =
octave-forge octave-forge-bim octave-forge-msh octave-forge-sec*d =
octave-forge-sole onlyoffice-documentserver paraview piglit =
py39-orange3-single py39-pytorch pydio-cells qemu qemu-devel qemu-nox11 =
qemu7 qemu7-nox11 qgis qgis-ltr qt*-webengine qt[56]*-webengine =
qt[56]-tools quantum-espresso-pseudopotentials ringrtc rust rust-nightly =
signal-desktop simpleitk telegraf tex-dvipdfmx tex-luatex tex-xetex =
texlive-docs texlive-full thunderbird tor-browser trilinos trivy ttk =
ungoogled-chromium vault vaultnextcloudclient virtualbox-ose =
virtualbox-ose-legacy virtualbox-ose-nox11 vscode vuls =
wasi-compiler-rt-* wasi-libcxx* webkit2-gtk3 wx30-gtk3 yazi ztop"


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EDAA149-2D45-40D3-A2CA-F6FBD06C18BF>