Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用libfuse的fuse文件系统稳定增加内存_C_Memory Leaks_Filesystems_Fuse_Userspace - Fatal编程技术网

C 使用libfuse的fuse文件系统稳定增加内存

C 使用libfuse的fuse文件系统稳定增加内存,c,memory-leaks,filesystems,fuse,userspace,C,Memory Leaks,Filesystems,Fuse,Userspace,我正在fuse文件系统实现上运行dbench基准测试工具for fileio,并确保fuse能够支持测试 我正在使用libfuse库()实现fuse。我没有做任何花哨的事情,我只是让它成为一个通行证,阅读只是做预告,写作只是做预告 我让它运行了大约10个小时,我看到内存从0稳步增加到21G。还有谁见过这个吗?我检查了代码中的mem泄漏,但我正在执行非常简单的直通代码,我没有专门分配堆内存的地方。就像一个简单的读取函数一样。FUSE_DATA是在主函数中分配的全局结构 void fuse_full

我正在fuse文件系统实现上运行dbench基准测试工具for fileio,并确保fuse能够支持测试

我正在使用libfuse库()实现fuse。我没有做任何花哨的事情,我只是让它成为一个通行证,阅读只是做预告,写作只是做预告

我让它运行了大约10个小时,我看到内存从0稳步增加到21G。还有谁见过这个吗?我检查了代码中的mem泄漏,但我正在执行非常简单的直通代码,我没有专门分配堆内存的地方。就像一个简单的读取函数一样。FUSE_DATA是在主函数中分配的全局结构

void fuse_fullpath(char fpath[PATH_MAX], const char *path, const char * rootdir)
{
    if (rootdir == NULL || path == NULL) {
        return;
    }
    strcpy(fpath, rootdir);
    strncat(fpath, path, PATH_MAX);
}

static int fuse_read(const char *path, char *buf, size_t size, off_t offset,
        struct fuse_file_info *fi)
{
    int res;
    char fpath[PATH_MAX];
    fuse_fullpath(fpath, path, FUSE_DATA->rootdir);

    res = pread(fi->fh, buf, size, offset);

   if (res == -1) {
       res = -errno;
   }

   return res;
}

我在fuse上尝试了valgrind,它的报告在libgobject库中给了我很多类似的信息

==31923== 8 bytes in 1 blocks are still reachable in loss record 2 of 245
==31923==    at 0x4C2CC70: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==31923==    by 0x54E0668: g_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4002.0)
==31923==    by 0x4E63315: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E67108: g_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E6FF71: g_pointer_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E6FFF7: g_gtype_get_type (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E558E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)

我认为我们没有足够的信息来帮助你。你能缩小范围吗?我脑海中浮现的一些问题:你是否反复进行打开/读取/写入/关闭操作?或者只是让文件长时间打开并进行读/写?也。。。。当valgrind抱怨libgobject的东西时,你为什么怀疑fuse是个问题?我认为我们没有足够的信息来帮助你。你能缩小范围吗?我脑海中浮现的一些问题:你是否反复进行打开/读取/写入/关闭操作?或者只是让文件长时间打开并进行读/写?也。。。。当valgrind抱怨libgobject的东西时,你为什么怀疑fuse是个问题?