Current-Users archive

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

rump_sys_rename & tmpfs ... memory leak ?


While learning how to use rump, i encountered a possible memory leak
with rump_sys_rename(), when run on a tmpfs mount.

The attached sample, seems to leaks some memory (about 4MB/sec on my
amd64) ... And the problem goes away if i remove/comment the
rump_sys_rename() call. I tried some other fs, but failed to reproduce
the problem.

Thanks in advance,

njoly@lanfeust [~]> uname -a
NetBSD 5.99.11 NetBSD 5.99.11 (LANFEUST) #10: Tue Apr 
28 11:45:16 CEST 2009
njoly@lanfeust [~]> cc -lrumpfs_tmpfs -lrumpvfs -o tmpfs_rename tmpfs_rename.c
njoly@lanfeust [~]> ./tmpfs_rename 

Nicolas Joly

Biological Software and Databanks.
Institut Pasteur, Paris.
#include <rump/rump_syscalls.h>
#include <rump/rump.h>

#include <sys/types.h>
#include <sys/mount.h> 

#include <fs/tmpfs/tmpfs_args.h>

#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define MNTDIR "/"
#define FILE1 MNTDIR "foobar"
#define FILE2 MNTDIR "barfoo"

int main() {
  int res, fd;
  struct tmpfs_args args;

  res = rump_init();
  if (res != 0)
    err(1, "rump_init failed");

  memset(&args, 0x0, sizeof(args));
  args.ta_version = TMPFS_ARGS_VERSION;
  args.ta_root_mode = 0777;
  args.ta_size_max = 10000 * 512;

  res = rump_sys_mount(MOUNT_TMPFS, MNTDIR, 0, &args,
  if (res == -1)
    err(1, "mount failed");

  while (1) {
    fd = rump_sys_open(FILE1, O_WRONLY|O_CREAT|O_TRUNC, 0666);
    rump_sys_rename(FILE1, FILE2);

  res = rump_sys_unmount(MNTDIR, MNT_FORCE);
  if (res == -1)
    err(1, "mount failed");

  return 0; }

Home | Main Index | Thread Index | Old Index