Bug 275276 - benchmarks/ramspeed does not work on amd64 now
Summary: benchmarks/ramspeed does not work on amd64 now
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Only Me
Assignee: Daniel Engberg
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-11-23 08:37 UTC by gja822
Modified: 2024-01-14 22:49 UTC (History)
3 users (show)

See Also:
mkamm: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description gja822 2023-11-23 08:37:15 UTC
benchmarks/ramspeed compiles (although with warnings in amd64/ssemem.s having "fst" without suffix - should be "fstps" due to addresses), but then do not work.

$ ramspeed -b18
RAMspeed/SMP (FreeBSD) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09

8Gb per pass mode, 2 processes

Bus error (core dumped)


And under debugger it shows error with jemmaloc:

$ gdb /usr/local/bin/ramspeed
GNU gdb (GDB) 13.2 [GDB v13.2 for FreeBSD]
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd12.4".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/ramspeed...
(No debugging symbols found in /usr/local/bin/ramspeed)
(gdb) r -b18
Starting program: /usr/local/bin/ramspeed -b18
RAMspeed/SMP (FreeBSD) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09

8Gb per pass mode, 2 processes

[Detaching after fork from child process 77663]

Program received signal SIGBUS, Bus error.
Object-specific hardware error.
0x000000080055b73c in __je_extents_alloc (tsdn=0x800459090, arena=0x800a00980, 
    r_extent_hooks=0x7fffffffe630, extents=0x800a025c8, new_addr=0x0, size=83886080, pad=4096, 
    alignment=64, slab=<optimized out>, szind=85, zero=0x7fffffffe687, commit=0x7fffffffe62f)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:504
504	/usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c: No such file or directory.
(gdb) c
Continuing.

Program terminated with signal SIGBUS, Bus error.
The program no longer exists.
(gdb) r -b18
Starting program: /usr/local/bin/ramspeed -b18
RAMspeed/SMP (FreeBSD) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09

8Gb per pass mode, 2 processes

[Detaching after fork from child process 77671]

Program received signal SIGBUS, Bus error.
Object-specific hardware error.
0x000000080055b73c in __je_extents_alloc (tsdn=0x800459090, arena=0x800a00980, 
    r_extent_hooks=0x7fffffffe630, extents=0x800a025c8, new_addr=0x0, size=83886080, pad=4096, 
    alignment=64, slab=<optimized out>, szind=85, zero=0x7fffffffe687, commit=0x7fffffffe62f)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:504
504	/usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c: No such file or directory.
(gdb) where
#0  0x000000080055b73c in __je_extents_alloc (tsdn=0x800459090, arena=0x800a00980, 
    r_extent_hooks=0x7fffffffe630, extents=0x800a025c8, new_addr=0x0, size=83886080, pad=4096, 
    alignment=64, slab=<optimized out>, szind=85, zero=0x7fffffffe687, commit=0x7fffffffe62f)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:504
#1  0x0000000800574fec in __je_arena_extent_alloc_large (tsdn=0x800459090, arena=0x800a00980, 
    usize=83886080, alignment=64, zero=0x7fffffffe687)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_arena.c:338
#2  0x0000000800557323 in __je_large_palloc (tsdn=0x800459090, arena=<optimized out>, 
    usize=83886080, alignment=64, zero=<optimized out>)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_large.c:47
#3  0x000000080057ba43 in arena_malloc (tsdn=0x800459090, arena=0x0, size=67112960, ind=85, 
    zero=false, tcache=0x5000000, slow_path=false)
    at /usr/src/contrib/jemalloc/include/jemalloc/internal/arena_inlines_b.h:105
#4  iallocztm (tsdn=0x800459090, size=67112960, ind=85, zero=false, tcache=0x5000000, 
    is_internal=false, arena=0x0, slow_path=false)
    at /usr/src/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h:53
#5  imalloc_no_sample (size=67112960, ind=85, sopts=<optimized out>, dopts=<optimized out>, 
    tsd=<optimized out>, usize=<optimized out>)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:1713
#6  imalloc_body (sopts=<optimized out>, dopts=<optimized out>, tsd=<optimized out>)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:1909
#7  imalloc (sopts=<optimized out>, dopts=<optimized out>)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:2009
--Type <RET> for more, q to quit, c to continue without paging--
#8  __malloc (size=<optimized out>)
    at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:2042
#9  0x00000000004116a8 in ?? ()
#10 0x0000000000000002 in ?? ()
#11 0x00007fffffffe8b0 in ?? ()
#12 0x000000080042094d in _rtld_bind_start ()
    at /usr/src/libexec/rtld-elf/amd64/rtld_start.S:121
#13 0x0000000000407e8b in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) c
Continuing.

Program terminated with signal SIGBUS, Bus error.
The program no longer exists.
(gdb) q



I am aware that this port is quite outdated and unmaintained, but still the bug is the bug…
By the way, what's more up-to-date port is recommended to benchmark (or even test) RAM?
Comment 1 Robert Clausecker freebsd_committer freebsd_triage 2023-11-23 18:39:13 UTC
Looks like a memory corruption due to buffer overrun?

> amd64/ssemem.s having "fst" without suffix - should be "fstps" due to addresses

You sure?  FSTPS has an extra stack pop vs. FSTS which does not.
Comment 2 gja822 2023-11-23 18:58:04 UTC
Of course, fsts, not fstps. A typo by me. Only size suffix is absent.
Comment 3 Robert Clausecker freebsd_committer freebsd_triage 2023-11-23 19:00:27 UTC
That sounds reasonable.  With the GNU assembler, dword operation is the default, so the code should work as expected.
Comment 4 mkamm 2023-12-17 21:37:41 UTC
Unfortunately I cannot investigate this issue because I lack the needed ressources. Actually I had forgotten this port I submitted almost a decade ago.
Considering that my use cases for this port no longer exist I would like to transfer maintainership to someone who is interested to take over!
Comment 5 Daniel Engberg freebsd_committer freebsd_triage 2024-01-14 21:55:46 UTC
Given that upstream is dead (and unfetchable), no updates in ~10 years I propose that we mark this as broken and deprecate the port.
Comment 6 mkamm 2024-01-14 21:57:39 UTC
I agree. Let the port retire!
Comment 7 commit-hook freebsd_committer freebsd_triage 2024-01-14 22:48:04 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a080981aa25b832dc52306311fc08083c369a403

commit a080981aa25b832dc52306311fc08083c369a403
Author:     Daniel Engberg <diizzy@FreeBSD.org>
AuthorDate: 2024-01-14 22:44:21 +0000
Commit:     Daniel Engberg <diizzy@FreeBSD.org>
CommitDate: 2024-01-14 22:44:26 +0000

    benchmarks/ramspeed: Deprecate and set expiration date to 2024-02-29

    Last release roughly ~10 years, upstream is gone and application crashes
    upon execution

    PR:             275276
    Reviewed by:    Martin Kammerhofer <mkamm@gmx.net> (maintainer)

 benchmarks/ramspeed/Makefile | 4 ++++
 1 file changed, 4 insertions(+)
Comment 8 Daniel Engberg freebsd_committer freebsd_triage 2024-01-14 22:49:10 UTC
Committed, thanks all your work maintaining this port!