On Sun, Jan 09, 2022 at 02:54:43PM +0100, Otto Moerbeek wrote:
> currently malloc does cache a number of free'ed regions up to 128k in
> size. This cache is indexed by size (in # of pages), so it is very
> quick to check.
> 
> Some programs allocate and deallocate larger allocations in a frantic
> way.  Accodomate those programs by also keeping a cache of regions
> betwen 128k and 2M, in a cache of variable sized regions.
> 
> My test case speeds up about twice. A make build gets a small speedup.
> 
> This has been tested by myself on amd64 quite intensively. I am asking
> for more tests, especialy on more "exotic" platforms. I wil do arm64
> myself soon.  Test can be running your favorite programs, doing make
> builds or running tests in regress/lib/libc/malloc.

I see openssl and tmux crash with this diff.
/usr/src/regress/usr.sbin/openssl reproduces it on arm64, amd64,
i386.

#0  L1 () at /usr/src/lib/libc/arch/amd64/string/memset.S:52
52      L1:     rep
(gdb) bt
#0  L1 () at /usr/src/lib/libc/arch/amd64/string/memset.S:52
#1  0x00000fde4ed058d8 in _libc_explicit_bzero (buf=0xfded1f8e000, 
len=18446744073709549600) at /usr/src/lib/libc/string/explicit_bzero.c:17
#2  0x00000fde4ed6f84f in unmap (d=0xfdead893830, p=Variable "p" is not 
available.
) at /usr/src/lib/libc/stdlib/malloc.c:805
#3  0x00000fde4ed6ceca in ofree (argpool=0x7f7ffffc2268, p=Variable "p" is not 
available.
) at /usr/src/lib/libc/stdlib/malloc.c:1511
#4  0x00000fde4ed6e4cb in _libc_recallocarray (ptr=0xfded1f8e7e0, 
oldnmemb=Variable "oldnmemb" is not available.
) at /usr/src/lib/libc/stdlib/malloc.c:1908
#5  0x00000fdbd4787afe in xrecallocarray (ptr=Unhandled dwarf expression opcode 
0xa3
) at /usr/src/usr.bin/tmux/xmalloc.c:81
#6  0x00000fdbd4703ce6 in cmd_parse_build_commands (cmds=Unhandled dwarf 
expression opcode 0xa3
) at cmd-parse.y:815
#7  0x00000fdbd4703d47 in cmd_parse_build_commands (cmds=Unhandled dwarf 
expression opcode 0xa3
) at cmd-parse.y:823
#8  0x00000fdbd47040f7 in cmd_parse_from_buffer (buf=Unhandled dwarf expression 
opcode 0xa3
) at cmd-parse.y:1036
#9  0x00000fdbd4703ffd in cmd_parse_from_string (
    s=0xfdbd46d6522 "bind > { display-menu -xP -yP -T 
'#[align=centre]#{pane_index} (#{pane_id})'  
'#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}' '<' {send -X history-top} 
'#{?#{m/r:(copy|view)-mode,#{pane_mode}},G"..., pi=0x7f7ffffc24a0) at 
cmd-parse.y:959
#10 0x00000fdbd473506e in key_bindings_init () at 
/usr/src/usr.bin/tmux/key-bindings.c:636
#11 0x00000fdbd47564c8 in server_start (client=0xfdec1056000, flags=402653184, 
base=0xfdec103f400, lockfd=5, lockfile=0xfdec1041b80 "/tmp/tmux-0/default.lock")
    at /usr/src/usr.bin/tmux/server.c:210
#12 0x00000fdbd46f8788 in client_main (base=0xfdec103f400, argc=Unhandled dwarf 
expression opcode 0xa3
) at /usr/src/usr.bin/tmux/client.c:165
#13 0x00000fdbd4761b62 in main (argc=0, argv=0x7f7ffffc2880) at 
/usr/src/usr.bin/tmux/tmux.c:529

bluhm

Reply via email to