yi huang wrote:
I'm not sure how this happens,
Learn how to use your tools properly.
==13010== Use --track-origins=yes to see where uninitialised values
come from
is it a problem?
No.
$ make $ gcc sample-mdb.c -L. -llmdb $ valgrind ./a.out ==13010== Memcheck, a memory error detector ==13010== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==13010== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==13010== Command: ./a.out ==13010== ==13010== Syscall param pwrite64(buf) points to uninitialised byte(s) ==13010== at 0x42319D3: pwrite (pwrite.c:46) ==13010== by 0x403AB25: mdb_page_flush (mdb.c:3160) ==13010== by 0x4043AD0: mdb_txn_commit (mdb.c:3416) ==13010== by 0x8048A13: main (in /home/yihuang/src/mdb/libraries/liblmdb/a.out) ==13010== Address 0x43c35b4 is 4,084 bytes inside a block of size 4,096 alloc'd ==13010== at 0x402BE18: malloc (vg_replace_malloc.c:270) ==13010== by 0x403AE47: mdb_page_malloc.isra.13 (mdb.c:1615) ==13010== by 0x403D281: mdb_page_alloc.isra.22 (mdb.c:2120) ==13010== by 0x403D446: mdb_page_touch (mdb.c:2252) ==13010== by 0x403EEED: mdb_cursor_touch (mdb.c:6019) ==13010== key: 0x4643fdc 020 , data: 0x4643fe0 020 3141592 foo bar ==13010== ==13010== HEAP SUMMARY: ==13010== in use at exit: 0 bytes in 0 blocks ==13010== total heap usage: 15 allocs, 15 frees, 1,586,385 bytes allocated ==13010== ==13010== All heap blocks were freed -- no leaks are possible ==13010== ==13010== For counts of detected and suppressed errors, rerun with: -v ==13010== Use --track-origins=yes to see where uninitialised values come from ==13010== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)