This is an annotated strace (system call trace) from the execution of the synctest.pl program. This purpose of this is to determine the exact functioning of the sync method on a DB_File object, so that locking can be implemented correctly. Annotated on Thu Mar 22 13:07:28 EST 2001 by David Harris This is perl loading and then the main thread creating an empty database: execve("./synctest.pl", ["./synctest.pl"], [/* 17 vars */]) = 0 brk(0) = 0x80c6f4c open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 4 fstat(4, {st_mode=S_ISVTX|0435, st_size=0, ...}) = 0 mmap(0, 9320, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40014000 close(4) = 0 open("/lib/libnsl.so.1", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 85872, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40017000 mprotect(0x40029000, 12144, PROT_NONE) = 0 mmap(0x40029000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x11000) = 0x40029000 mmap(0x4002a000, 8048, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4002a000 close(4) = 0 open("/lib/libdb.so.3", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 234588, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4002c000 mprotect(0x40064000, 5212, PROT_NONE) = 0 mmap(0x40064000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x37000) = 0x40064000 close(4) = 0 open("/usr/lib/libgdbm.so.2", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 23664, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40066000 mprotect(0x4006b000, 3184, PROT_NONE) = 0 mmap(0x4006b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x4000) = 0x4006b000 close(4) = 0 open("/lib/libdl.so.2", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 11532, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4006c000 mprotect(0x4006e000, 3340, PROT_NONE) = 0 mmap(0x4006e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x1000) = 0x4006e000 close(4) = 0 open("/lib/libm.so.6", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4006f000 mmap(0, 114680, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40070000 mprotect(0x4008b000, 4088, PROT_NONE) = 0 mmap(0x4008b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x1a000) = 0x4008b000 close(4) = 0 open("/lib/libc.so.6", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 974392, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4008c000 mprotect(0x40172000, 32312, PROT_NONE) = 0 mmap(0x40172000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0xe5000) = 0x40172000 mmap(0x40177000, 11832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40177000 close(4) = 0 open("/lib/libcrypt.so.1", O_RDONLY) = 4 fstat(4, {st_mode=0, st_size=0, ...}) = 0 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 182972, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4017a000 mprotect(0x4017f000, 162492, PROT_NONE) = 0 mmap(0x4017f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x4000) = 0x4017f000 mmap(0x40180000, 158396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40180000 close(4) = 0 munmap(0x40014000, 9320) = 0 personality(PER_LINUX) = 0 getpid() = 7945 brk(0) = 0x80c6f4c brk(0x80c6f84) = 0x80c6f84 brk(0x80c7000) = 0x80c7000 brk(0x80c8000) = 0x80c8000 brk(0x80ca000) = 0x80ca000 getuid() = 521 geteuid() = 521 getgid() = 500 getegid() = 500 brk(0x80cb000) = 0x80cb000 time([985283959]) = 985283959 SYS_175(0, 0, 0xbffffc7c, 0x8, 0) = 0 brk(0x80cd000) = 0x80cd000 open("./synctest.pl", O_RDONLY) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=032075, st_size=0, ...}) = 0 brk(0x80ce000) = 0x80ce000 brk(0x80cf000) = 0x80cf000 getpid() = 7945 brk(0x80d0000) = 0x80d0000 fstat(4, {st_mode=032075, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000 read(4, "#!/usr/bin/perl\n#\n# synctest.p"..., 4096) = 1451 brk(0x80d1000) = 0x80d1000 SYS_175(0, 0, 0xbffffacc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff9e4, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/strict.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/strict.pm", O_RDONLY) = 5 fstat(5, {st_mode=S_IFDIR|S_ISUID|0546, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "package strict;\n\n=head1 NAME\n"..., 4096) = 2302 brk(0x80d2000) = 0x80d2000 brk(0x80d3000) = 0x80d3000 brk(0x80d4000) = 0x80d4000 read(5, "", 4096) = 0 close(5) = 0 munmap(0x40015000, 4096) = 0 SYS_175(0, 0, 0xbffffacc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff9e4, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/DB_File.pm", O_RDONLY) = 5 fstat(5, {st_mode=S_IFDIR|S_ISUID|S_ISVTX|024, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "# DB_File.pm -- Perl 5 interface"..., 4096) = 4096 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/Carp.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/Carp.pm", O_RDONLY) = 6 brk(0x80d5000) = 0x80d5000 fstat(6, {st_mode=S_IFDIR|S_ISUID|0573, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 read(6, "package Carp;\n\n=head1 NAME\n\n"..., 4096) = 4096 brk(0x80d6000) = 0x80d6000 brk(0x80d7000) = 0x80d7000 brk(0x80d8000) = 0x80d8000 brk(0x80d9000) = 0x80d9000 read(6, "r at $file line $line\n\t# subs"..., 4096) = 4096 brk(0x80db000) = 0x80db000 brk(0x80dc000) = 0x80dc000 brk(0x80dd000) = 0x80dd000 brk(0x80de000) = 0x80de000 read(6, "ller($i++)) {\n\tif(defined @{$p"..., 4096) = 2101 brk(0x80df000) = 0x80df000 brk(0x80e0000) = 0x80e0000 brk(0x80e1000) = 0x80e1000 brk(0x80e2000) = 0x80e2000 read(6, "", 4096) = 0 close(6) = 0 munmap(0x40016000, 4096) = 0 open("/usr/lib/perl5/5.00503/i386-linux/Exporter.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/Exporter.pm", O_RDONLY) = 6 brk(0x80e3000) = 0x80e3000 fstat(6, {st_mode=033157, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 read(6, "package Exporter;\n\nrequire 5.0"..., 4096) = 4096 brk(0x80e4000) = 0x80e4000 brk(0x80e5000) = 0x80e5000 brk(0x80e6000) = 0x80e6000 brk(0x80e7000) = 0x80e7000 brk(0x80e8000) = 0x80e8000 brk(0x80e9000) = 0x80e9000 brk(0x80ea000) = 0x80ea000 brk(0x80eb000) = 0x80eb000 brk(0x80ec000) = 0x80ec000 brk(0x80ed000) = 0x80ed000 brk(0x80ee000) = 0x80ee000 brk(0x80ef000) = 0x80ef000 brk(0x80f0000) = 0x80f0000 read(6, "\n\t unless $sym =~ s/^(\\W)/"..., 4096) = 4096 brk(0x80f1000) = 0x80f1000 brk(0x80f2000) = 0x80f2000 brk(0x80f3000) = 0x80f3000 brk(0x80f4000) = 0x80f4000 brk(0x80f5000) = 0x80f5000 brk(0x80f6000) = 0x80f6000 brk(0x80f7000) = 0x80f7000 close(6) = 0 munmap(0x40016000, 4096) = 0 brk(0x80f8000) = 0x80f8000 brk(0x80f9000) = 0x80f9000 brk(0x80fa000) = 0x80fa000 brk(0x80fb000) = 0x80fb000 brk(0x80fc000) = 0x80fc000 brk(0x80fd000) = 0x80fd000 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 brk(0x80fe000) = 0x80fe000 brk(0x80ff000) = 0x80ff000 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/vars.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/vars.pm", O_RDONLY) = 6 fstat(6, {st_mode=S_IFDIR|S_ISUID|0561, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 read(6, "package vars;\n\nrequire 5.002;\n"..., 4096) = 2398 brk(0x8100000) = 0x8100000 brk(0x8101000) = 0x8101000 brk(0x8102000) = 0x8102000 brk(0x8103000) = 0x8103000 close(6) = 0 munmap(0x40016000, 4096) = 0 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/AutoLoader.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/AutoLoader.pm", O_RDONLY) = 6 brk(0x8104000) = 0x8104000 fstat(6, {st_mode=S_IFDIR|S_ISUID|0576, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 read(6, "package AutoLoader;\n\nuse vars "..., 4096) = 4096 brk(0x8105000) = 0x8105000 SYS_175(0, 0, 0xbffff4bc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff3d4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff4fc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff414, 0x8, 0) = 0 brk(0x8106000) = 0x8106000 brk(0x8107000) = 0x8107000 brk(0x8108000) = 0x8108000 brk(0x8109000) = 0x8109000 brk(0x810a000) = 0x810a000 brk(0x810b000) = 0x810b000 close(6) = 0 munmap(0x40016000, 4096) = 0 open("/usr/lib/perl5/5.00503/i386-linux/auto/DB_File/autosplit.ix", O_RDONLY) = 6 fstat(6, {st_mode=S_IFDIR|S_ISUID|S_ISVTX|036, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 read(6, "# Index created by AutoSplit for"..., 4096) = 87 read(6, "", 4096) = 0 close(6) = 0 munmap(0x40016000, 4096) = 0 brk(0x810c000) = 0x810c000 brk(0x810d000) = 0x810d000 read(5, "ift;\n# my $callpkg = caller;"..., 4096) = 4096 brk(0x810e000) = 0x810e000 brk(0x810f000) = 0x810f000 brk(0x8110000) = 0x8110000 brk(0x8111000) = 0x8111000 brk(0x8112000) = 0x8112000 brk(0x8113000) = 0x8113000 brk(0x8114000) = 0x8114000 brk(0x8115000) = 0x8115000 brk(0x8116000) = 0x8116000 close(5) = 0 munmap(0x40015000, 4096) = 0 brk(0x8117000) = 0x8117000 open("/usr/lib/perl5/5.00503/i386-linux/Tie/Hash.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/Tie/Hash.pm", O_RDONLY) = 5 fstat(5, {st_mode=S_IFDIR|S_ISUID|S_ISVTX|047, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "package Tie::Hash;\n\n=head1 NAM"..., 4096) = 3968 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 brk(0x8118000) = 0x8118000 brk(0x8119000) = 0x8119000 brk(0x811a000) = 0x811a000 brk(0x811b000) = 0x811b000 brk(0x811c000) = 0x811c000 brk(0x811d000) = 0x811d000 read(5, "", 4096) = 0 close(5) = 0 munmap(0x40015000, 4096) = 0 brk(0x811e000) = 0x811e000 open("/usr/lib/perl5/5.00503/i386-linux/DynaLoader.pm", O_RDONLY) = 5 fstat(5, {st_mode=S_ISGID|S_ISVTX|0404, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "\n# Generated from DynaLoader.pm"..., 4096) = 4096 brk(0x811f000) = 0x811f000 brk(0x8120000) = 0x8120000 brk(0x8121000) = 0x8121000 brk(0x8122000) = 0x8122000 brk(0x8123000) = 0x8123000 brk(0x8124000) = 0x8124000 read(5, "le module statically linked into"..., 4096) = 4096 brk(0x8125000) = 0x8125000 brk(0x8126000) = 0x8126000 brk(0x8127000) = 0x8127000 brk(0x8128000) = 0x8128000 brk(0x8129000) = 0x8129000 brk(0x812a000) = 0x812a000 close(5) = 0 munmap(0x40015000, 4096) = 0 brk(0x812b000) = 0x812b000 open("/usr/lib/perl5/5.00503/i386-linux/Fcntl.pm", O_RDONLY) = 5 fstat(5, {st_mode=S_IFDIR|S_ISUID|0566, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "package Fcntl;\n\n=head1 NAME\n\n"..., 4096) = 2853 SYS_175(0, 0, 0xbffff7c4, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff6dc, 0x8, 0) = 0 brk(0x812c000) = 0x812c000 read(5, "", 4096) = 0 close(5) = 0 munmap(0x40015000, 4096) = 0 brk(0x812d000) = 0x812d000 brk(0x812e000) = 0x812e000 stat("/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl", {st_mode=0, st_size=0, ...}) = 0 stat("/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.so", {st_mode=0, st_size=0, ...}) = 0 stat("/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.bs", {st_mode=S_IFDIR|S_ISUID|0567, st_size=0, ...}) = 0 open("/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.so", O_RDONLY) = 5 fstat(5, {st_mode=0, st_size=0, ...}) = 0 read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 10068, PROT_READ|PROT_EXEC, MAP_PRIVATE, 5, 0) = 0x401a7000 mprotect(0x401a9000, 1876, PROT_NONE) = 0 mmap(0x401a9000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 5, 0x1000) = 0x401a9000 close(5) = 0 brk(0x812f000) = 0x812f000 brk(0x8130000) = 0x8130000 brk(0x8131000) = 0x8131000 brk(0x8132000) = 0x8132000 stat("/usr/lib/perl5/5.00503/i386-linux/auto/DB_File", {st_mode=0, st_size=0, ...}) = 0 stat("/usr/lib/perl5/5.00503/i386-linux/auto/DB_File/DB_File.so", {st_mode=0, st_size=0, ...}) = 0 stat("/usr/lib/perl5/5.00503/i386-linux/auto/DB_File/DB_File.bs", {st_mode=S_IFDIR|S_ISUID|S_ISVTX|0230, st_size=0, ...}) = 0 open("/usr/lib/perl5/5.00503/i386-linux/auto/DB_File/DB_File.so", O_RDONLY) = 5 fstat(5, {st_mode=0, st_size=0, ...}) = 0 read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096 mmap(0, 27992, PROT_READ|PROT_EXEC, MAP_PRIVATE, 5, 0) = 0x401aa000 mprotect(0x401b0000, 3416, PROT_NONE) = 0 mmap(0x401b0000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 5, 0x5000) = 0x401b0000 close(5) = 0 brk(0x8133000) = 0x8133000 brk(0x8134000) = 0x8134000 brk(0x8135000) = 0x8135000 brk(0x8136000) = 0x8136000 brk(0x8137000) = 0x8137000 brk(0x8138000) = 0x8138000 brk(0x8139000) = 0x8139000 SYS_175(0, 0, 0xbffffacc, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff9e4, 0x8, 0) = 0 open("/usr/lib/perl5/5.00503/i386-linux/Symbol.pm", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/perl5/5.00503/Symbol.pm", O_RDONLY) = 5 brk(0x813a000) = 0x813a000 fstat(5, {st_mode=S_IFDIR|S_ISUID|0564, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(5, "package Symbol;\n\n=head1 NAME\n"..., 4096) = 3754 SYS_175(0, 0, 0xbffff804, 0x8, 0) = 0 SYS_175(0, 0, 0xbffff71c, 0x8, 0) = 0 brk(0x813b000) = 0x813b000 brk(0x813c000) = 0x813c000 brk(0x813d000) = 0x813d000 brk(0x813e000) = 0x813e000 brk(0x813f000) = 0x813f000 brk(0x8140000) = 0x8140000 read(5, "", 4096) = 0 close(5) = 0 munmap(0x40015000, 4096) = 0 brk(0x8141000) = 0x8141000 brk(0x8142000) = 0x8142000 brk(0x8143000) = 0x8143000 read(4, "", 4096) = 0 close(4) = 0 munmap(0x40014000, 4096) = 0 SYS_175(0, 0, 0xbffffc90, 0x8, 0) = 0 fstat(1, {st_mode=S_IFREG|S_ISUID|06, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 write(1, "main: creating new empty databas"..., 34) = 34 unlink("baz.db") = -1 ENOENT (No such file or directory) open("./baz.db", O_RDWR|O_CREAT|O_EXCL, 0644) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=S_ISGID|S_ISVTX|0432, st_size=0, ...}) = 0 read(4, "", 512) = 0 close(4) = 0 brk(0x8151000) = 0x8151000 open("/etc/fstab", O_RDONLY) = 4 fstat(4, {st_mode=S_ISGID|S_ISVTX|0673, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(4, "/dev/ida/c0d0p5 / "..., 4096) = 912 close(4) = 0 munmap(0x40015000, 4096) = 0 open("/proc/cpuinfo", O_RDONLY) = 4 fstat(4, {st_mode=S_IFIFO|S_ISUID|0132, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 read(4, "processor\t: 0\nvendor_id\t: Gen"..., 1024) = 391 read(4, "", 1024) = 0 close(4) = 0 munmap(0x40015000, 4096) = 0 stat("./baz.db", {st_mode=S_ISGID|S_ISVTX|0432, st_size=0, ...}) = 0 time([985283959]) = 985283959 open("./baz.db", O_RDWR) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=S_ISGID|S_ISVTX|0432, st_size=0, ...}) = 0 lseek(4, 0, SEEK_SET) = 0 read(4, "", 4096) = 0 brk(0x8153000) = 0x8153000 lseek(4, 0, SEEK_SET) = 0 write(4, "\0\0\0\0\0\0\0\0\0\0\0\0a\25\6\0"..., 4096) = 4096 fsync(4) = 0 lseek(4, 12288, SEEK_SET) = 12288 read(4, "", 4096) = 0 lseek(4, 12288, SEEK_SET) = 12288 write(4, "\0\0\0\0\0\0\0\0\3\0\0\0\0\0\0\0"..., 4096) = 4096 fsync(4) = 0 SYS_175(0, 0, 0xbffffb50, 0x8, 0) = 0 fsync(4) = 0 fsync(4) = 0 close(4) = 0 write(1, "thread_a: pid 7945\n", 19) = 19 Database being opened by the main thread. Note that the database is opened on filehandle 4 and that the first 4096 bytes of the file have been read into memory. write(2, "*** open the database\n", 22) = 22 open("./baz.db", O_RDWR|O_CREAT|O_EXCL, 0644) = -1 EEXIST (File exists) open("./baz.db", O_RDWR) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=S_ISGID|S_ISVTX|0432, st_size=0, ...}) = 0 read(4, "\0\0\0\0\0\0\0\0\0\0\0\0a\25\6\0"..., 512) = 512 close(4) = 0 open("./baz.db", O_RDWR) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 fstat(4, {st_mode=S_ISGID|S_ISVTX|0432, st_size=0, ...}) = 0 lseek(4, 0, SEEK_SET) = 0 read(4, "\0\0\0\0\0\0\0\0\0\0\0\0a\25\6\0"..., 4096) = 4096 Database is written to. Notice that the file is only read. Probably the writes are cached and will be dumped when we sync below. write(2, "*** writing to database\n", 24) = 24 lseek(4, 4096, SEEK_SET) = 4096 read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 16384, SEEK_SET) = 16384 read(4, "", 4096) = 0 lseek(4, 12288, SEEK_SET) = 12288 read(4, "\0\0\0\0\0\0\0\0\3\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 8192, SEEK_SET) = 8192 read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 20480, SEEK_SET) = 20480 read(4, "", 4096) = 0 lseek(4, 24576, SEEK_SET) = 24576 read(4, "", 4096) = 0 lseek(4, 28672, SEEK_SET) = 28672 read(4, "", 4096) = 0 lseek(4, 32768, SEEK_SET) = 32768 read(4, "", 4096) = 0 lseek(4, 36864, SEEK_SET) = 36864 read(4, "", 4096) = 0 Database is synched. Note that the database is finally written. No reading actually occurs becuase that was done an cached before. Also notice the fsync(4) call at the end which forces the operating system to write the file to disk. write(2, "*** sync the database\n", 22) = 22 lseek(4, 0, SEEK_SET) = 0 write(4, "\0\0\0\0\0\0\0\0\0\0\0\0a\25\6\0"..., 4096) = 4096 lseek(4, 4096, SEEK_SET) = 4096 write(4, "\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 8192, SEEK_SET) = 8192 write(4, "\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 12288, SEEK_SET) = 12288 write(4, "\0\0\0\0\0\0\0\0\3\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 16384, SEEK_SET) = 16384 write(4, "\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 20480, SEEK_SET) = 20480 write(4, "\0\0\0\0\0\0\0\0\5\0\0\0\4\0\0\0"..., 4096) = 4096 lseek(4, 24576, SEEK_SET) = 24576 write(4, "\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 28672, SEEK_SET) = 28672 write(4, "\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 32768, SEEK_SET) = 32768 write(4, "\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 36864, SEEK_SET) = 36864 write(4, "\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0"..., 4096) = 4096 fsync(4) = 0 Database is dumped. This is to see if the first 4k of the file are read. Note that the dump file is opened on filehandle 5. Then a whole bunch of memory is allocated with the brk() calls. Then the dump contents are writtten to filehandle five and it is closed. Note that the database file on filehandle four is not touched at all. Information cached inside the process is being used to perform this dump. This means that the sync only effects a write to disk, but not a re-starting of the database file. Information already read from disk and cached will still be used. write(2, "*** dumping database\n", 21) = 21 open("baz.db.dump01", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 5 fstat(5, {st_mode=S_IFIFO|S_ISUID|0132, st_size=0, ...}) = 0 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 brk(0x8154000) = 0x8154000 brk(0x8155000) = 0x8155000 brk(0x8156000) = 0x8156000 brk(0x8157000) = 0x8157000 brk(0x8159000) = 0x8159000 brk(0x815a000) = 0x815a000 brk(0x815b000) = 0x815b000 brk(0x815c000) = 0x815c000 brk(0x815e000) = 0x815e000 brk(0x8160000) = 0x8160000 brk(0x8161000) = 0x8161000 brk(0x8162000) = 0x8162000 brk(0x8165000) = 0x8165000 brk(0x8166000) = 0x8166000 brk(0x8167000) = 0x8167000 brk(0x8168000) = 0x8168000 brk(0x816b000) = 0x816b000 brk(0x816e000) = 0x816e000 brk(0x8172000) = 0x8172000 brk(0x8173000) = 0x8173000 brk(0x8174000) = 0x8174000 brk(0x8178000) = 0x8178000 brk(0x8179000) = 0x8179000 brk(0x817e000) = 0x817e000 fstat(5, {st_mode=S_IFIFO|S_ISUID|0132, st_size=0, ...}) = 0 mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000 write(5, "A10a1 = A\nA10a10 = A\nA10a100 ="..., 4096) = 4096 write(5, "13a77 = A\nA13a78 = A\nA13a79 = "..., 4096) = 4096 write(5, "7a54 = A\nA17a55 = A\nA17a56 = A"..., 4096) = 4096 write(5, "4 = A\nA20a40 = A\nA20a41 = A\nA"..., 4096) = 4096 write(5, " A\nA5a46 = A\nA5a47 = A\nA5a48 "..., 4096) = 4096 write(5, "= A\nA9a58 = A\nA9a59 = A\nA9a6 "..., 481) = 481 close(5) = 0 munmap(0x40015000, 4096) = 0 The database is closed. Filehandle four is fsynch-ed twice and then closed. Nothing interesting here. write(2, "*** close the database\n", 23) = 23 SYS_175(0, 0, 0xbffffaf4, 0x8, 0) = 0 brk(0x8180000) = 0x8180000 fsync(4) = 0 fsync(4) = 0 close(4) = 0 Main process exiting. write(1, "thread_a: exiting\n", 18) = 18 SYS_175(0x2, 0xbffffc90, 0, 0x8, 0x2) = 0 munmap(0x40014000, 4096) = 0 _exit(0) = ?