Current-Users archive

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

Re: overnight crash



On Tue, Sep 24, 2019 at 02:52:16PM +0100, Patrick Welche wrote:
> Something is still not right. newfs'd /usr/obj, built release, untarred
> sets over /.
> 
> Little script:
> 
> export RUMP_SERVER=unix://zsock
> rump.halt 2> /dev/null
> rump_server -lrumpvfs -lrumpdev_disk -lrumpkern_solaris -lrumpfs_zfs -lrumpdev -lrumpdev_rnd -d key=/dk,hostpath=zfs.img,size=100m ${RUMP_SERVER}
> export LD_PRELOAD=/usr/lib/librumphijack.so
> export RUMPHIJACK=blanket=/dev/zfs:/dk:/storage,sysctl=yes,modctl=yes
> zpool create storage /dk
> zpool list
> zfs list
> echo hello | rump.dd of=/storage/hello
> ls -l /storage
> zfs list
> zfs snapshot storage@hello
> echo bar | rump.dd of=/storage/bar
> ls -l /storage
> zfs list
> zfs list -t snapshot
> zfs diff storage@hello
> 
> which should (not) just give me a zfs.core from the last line, now coredumps
> everywhere, again with
> 
> #0  0x00007f7ff48ae8a5 in __compat_fstatvfs1 (fd=5, buf=0x7f7fffbff380, flags=2) at /usr/src/lib/libc/compat/sys/compat_statvfs.c:99
> 99              int error = __fstatvfs190(fd, &sb, flags);
> 
> k$ modstat | grep compat_90
> compat_90               exec     builtin  -        1       - -
> compat_netbsd32_90      exec     builtin  -        0       - compat_netbsd32,compat_90
> 
> I thought rump loaded kernel modules - what else needs changing?

This turns out to be a locale issue!

with
rump_server unix://sock
export LC_CTYPE=en_GB.UTF-8
export RUMP_SERVER=unix://sock
export LD_PRELOAD=/usr/lib/librumphijack.so

the following code dumps core:

#include <locale.h>
#include <unistd.h>

int main()
{
        sleep(10);
        setlocale(LC_ALL, "");

        return 0;
}

(the sleep is there to attach gdb...)

With LC_TYPE=C it works, with LC_TYPE=en_GB.UTF-8 but outside of rump, it works.The issue only appears when using rump and a non-C locale.


Cheers,

Patrick


Home | Main Index | Thread Index | Old Index