|
From: Annamalai G.
|
Hi All, I am trying to use valgrind to test our DataBlitz (DBZ) main memory database. When I run DBZ individually, it is working fine. But when I run it via valgrind it is failing when trying to do mmap. The reported error is always "Interrupted System Call". Any help much appreciated. I am running it on Red Hat Linux release 9 (Shrike). Here is a valgrind output. Any help much appreciated. ==7595== Memcheck, a memory error detector. ==7595== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al. ==7595== Using LibVEX rev 1367, a library for dynamic binary translation. ==7595== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP. ==7595== Using valgrind-3.0.1, a dynamic binary instrumentation framework. ==7595== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al. --7595-- Valgrind library directory: /home/prabhakt/local/lib/valgrind --7595-- Command line --7595-- datablitz --7595-- CREAT --7595-- TRUNC --7595-- Startup, with flags: --7595-- --memcheck:leak-check=yes --7595-- --vex-iropt-precise-memory-exns=yes --7595-- --trace-signals=yes --7595-- -v --7595-- -- --7595-- Contents of /proc/version: --7595-- Linux version 2.4.20-8 (bhc...@po...) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #1 Thu Mar 13 17:54:28 EST 2003 --7595-- Reading syms from /home2/prabhakt/anna/MSQL/bin/datablitz_joint (0x8048000) --7595-- Reading syms from /lib/ld-2.3.2.so (0x1B8E4000) --7595-- Reading syms from /home2/prabhakt/local/lib/valgrind/stage2 (0xB0000000) --7595-- Max kernel-supported signal is 64 --7595-- Reading suppressions file: /home/prabhakt/local/lib/valgrind/default.supp ==7595== --7595-- signal 11 arrived ... si_code=1, EIP=0x1B8E94EA, eip=0xB1443C46 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BFDF88 tid=1 ESP=0x52BFDF80 seg=0x52BFE000-0x52C00000 fl=30 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BFD000 --7595-- Reading syms from /home2/prabhakt/local/lib/valgrind/vg_preload_core.so (0x1B8FB000) --7595-- Reading syms from /home2/prabhakt/local/lib/valgrind/vgpreload_memcheck.so (0x1B8FD000) --7595-- REDIR: 0x1B8F54A0 (index) redirected to 0x1B9002EC (index) --7595-- REDIR: 0x1B8F5640 (strlen) redirected to 0x1B9004F0 (strlen) --7595-- Reading syms from /home2/prabhakt/anna/MSQL/lib/libserver-mt.so (0x1B902000) --7595-- Reading syms from /home2/prabhakt/anna/MSQL/lib/librel-mt.so (0x1B989000) --7595-- Reading syms from /home2/prabhakt/anna/MSQL/lib/libblz-mt.so (0x1BB2B000) --7595-- Reading syms from /home2/prabhakt/anna/MSQL/lib/librnm-mt.so (0x1BEDA000) --7595-- Reading syms from /home2/prabhakt/anna/MSQL/lib/libmsql-mt.so (0x1BEF6000) --7595-- Reading syms from /lib/libdl-2.3.2.so (0x1BFE1000) --7595-- Reading syms from /lib/libnsl-2.3.2.so (0x1BFE4000) --7595-- Reading syms from /lib/libcrypt-2.3.2.so (0x1BFF9000) --7595-- Reading syms from /lib/librt-2.3.2.so (0x1C026000) --7595-- Reading syms from /lib/libpthread-0.10.so (0x1C039000) --7595-- Reading syms from /usr/lib/libstdc++.so.5.0.3 (0x1C08B000) --7595-- object doesn't have a symbol table --7595-- Reading syms from /lib/libm-2.3.2.so (0x1C13E000) --7595-- Reading syms from /lib/libgcc_s-3.2.2-20030225.so.1 (0x1C160000) --7595-- object doesn't have a symbol table --7595-- Reading syms from /lib/libc-2.3.2.so (0x1C168000) --7595-- REDIR: 0x1C1E3B20 (memset) redirected to 0x1B900B54 (memset) ++7595++ sys_sigaction: sigNo 32, new 0x52BFE3BC, old 0x0, new flags 0x4000000 ++7595++ sys_sigaction: sigNo 33, new 0x52BFE3BC, old 0x0, new flags 0x4000000 ++7595++ sys_sigaction: sigNo 34, new 0x52BFE3BC, old 0x0, new flags 0x4000000 ++7595++ do_setmask: tid = 1 how = 0 (SIG_BLOCK), set = 0x52BFE69C 0000000080000000 --7595-- REDIR: 0x1C1E2500 (rindex) redirected to 0x1B900224 (rindex) --7595-- REDIR: 0x1C1E1A40 (strcpy) redirected to 0x1B900528 (strcpy) --7595-- REDIR: 0x1C1E21D0 (strlen) redirected to 0x1B9004D4 (strlen) --7595-- REDIR: 0x1C116E70 (operator new(unsigned)) redirected to 0x1B8FED4D (operator new(unsigned)) --7595-- REDIR: 0x1C1DAD80 (malloc) redirected to 0x1B8FE9B6 (malloc) --7595-- REDIR: 0x1C116FD0 (operator new[](unsigned)) redirected to 0x1B8FF187 (operator new[](unsigned)) --7595-- REDIR: 0x1C1E2470 (strncpy) redirected to 0x1B9005D8 (strncpy) --7595-- REDIR: 0x1C1E23B0 (strncmp) redirected to 0x1B9006E0 (strncmp) ==7595== Source and destination overlap in strncpy(0x1BE1E847, 0x1BE1E847, 4095) ==7595== at 0x1B900671: strncpy (mac_replace_strmem.c:290) ==7595== by 0x1BC7C89B: BlzMELT::setProgName(char const*) (BlzMELT.c:359) ==7595== by 0x1BC7CA24: BlzMELT::BlzMELT(char const*, BlzRC (*)(BlzMELTnode*)) (BlzMELT.c:401) ==7595== by 0x1BC7CBF5: BlzMELT::testAndInit() (BlzMELT.c:450) ==7595== by 0x1B91E301: BlzMELT::init() (BlzMELT.h:216) ==7595== by 0x1BD22FFA: BlzThreadData::BlzThreadData() (BlzThreadData.c:51) ==7595== by 0x1BD1A932: __static_initialization_and_destruction_0(int, int) (BlzSysInternal.c:82) ==7595== by 0x1BD1ABE2: _GLOBAL__I_BlzProcessIDnull (streambuf:131) ==7595== by 0x1BD698E4: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1BB9F648: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1B8F04B0: _dl_init (in /lib/ld-2.3.2.so) ==7595== by 0x1B8E4C1C: (within /lib/ld-2.3.2.so) --7595-- REDIR: 0x1C1DB570 (calloc) redirected to 0x1B8FFC87 (calloc) --7595-- REDIR: 0x1C1E0C80 (strcat) redirected to 0x1B90032C (strcat) --7595-- REDIR: 0x1C1DB000 (realloc) redirected to 0x1B8FFD32 (realloc) --7595-- REDIR: 0x1C1E0FA0 (strcmp) redirected to 0x1B900738 (strcmp) --7595-- signal 11 arrived ... si_code=1, EIP=0x1B921A39, eip=0xB162059F --7595-- SIGSEGV: si_code=1 faultaddr=0x52BFC790 tid=1 ESP=0x52BFC790 seg=0x52BFD000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BFC000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BFA710 tid=1 ESP=0x52BFA710 seg=0x52BFC000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BFA000 --7595-- REDIR: 0x1C1E0E30 (index) redirected to 0x1B9002CC (index) --7595-- signal 11 arrived ... si_code=1, EIP=0x1B93D133, eip=0xB162D1A7 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF76E0 tid=1 ESP=0x52BF76E0 seg=0x52BFA000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF7000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF5660 tid=1 ESP=0x52BF5660 seg=0x52BF7000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF5000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCF3DE, eip=0xB1633AA3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF4550 tid=1 ESP=0x52BF4550 seg=0x52BF5000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF4000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCF315, eip=0xB163414F --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF3524 tid=1 ESP=0x52BF3524 seg=0x52BF4000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF3000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF14A0 tid=1 ESP=0x52BF14A0 seg=0x52BF3000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF1000 --7595-- REDIR: 0x1C1DAF40 (free) redirected to 0x1B8FF4CB (free) --7595-- REDIR: 0x1C115960 (operator delete(void*)) redirected to 0x1B8FF75F (operator delete(void*)) --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BF0460 tid=1 ESP=0x52BF0460 seg=0x52BF1000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BF0000 --7595-- REDIR: 0x1C1E3900 (memchr) redirected to 0x1B900798 (memchr) --7595-- REDIR: 0x1C1E4130 (memcpy) redirected to 0x1B9007BC (memcpy) --7595-- REDIR: 0x1C1E2280 (strnlen) redirected to 0x1B9004B0 (strnlen) ++7595++ sys_sigaction: sigNo 2, new 0x52BF74C0, old 0x52BF7430, new flags 0x14000004 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF75A0 0000000080000000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF75A0 0000000080000000 ++7595++ sys_sigaction: sigNo 15, new 0x52BF74C0, old 0x52BF7430, new flags 0x14000004 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF75A0 0000000080000000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF75A0 0000000080000000 ++7595++ sys_sigaction: sigNo 14, new 0x52BF74C0, old 0x52BF7430, new flags 0x14000004 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF75A0 0000000080000000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF75A0 0000000080000000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF7630 0000000080000000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF7630 0000000080004000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF7630 0000000080004000 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF7630 0000000080004002 --7595-- REDIR: 0x1C1159C0 (operator delete[](void*)) redirected to 0x1B8FFA77 (operator delete[](void*)) DataBlitz(TM) Main-Memory Database System Release 7.0.Lh02-32SIO-beta3-d Copyright(C) 2003 Lucent Technologies Inc. All Rights Reserved. *** Starting DataBlitz on system database: /home/prabhakt/anna/pdb/BlzSysDB *** System started at Wed Jan 4 11:58:36 2006 DataBlitz server: datablitz OS Pid: 7595 Config File: /home/prabhakt/anna/pdb/sys.rc --7595-- signal 11 arrived ... si_code=1, EIP=0x1BD09E53, eip=0xB16F7B7D --7595-- SIGSEGV: si_code=1 faultaddr=0x52BD1290 tid=1 ESP=0x52BD1290 seg=0x52BF0000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BD1000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCF3DE, eip=0xB1633AA3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BD0230 tid=1 ESP=0x52BD0230 seg=0x52BD1000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BD0000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCF315, eip=0xB163414F --7595-- SIGSEGV: si_code=1 faultaddr=0x52BCF204 tid=1 ESP=0x52BCF204 seg=0x52BD0000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BCF000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BCD180 tid=1 ESP=0x52BCD180 seg=0x52BCF000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BCD000 --7595-- signal 11 arrived ... si_code=1, EIP=0x1BBCEEE0, eip=0xB1624EC3 --7595-- SIGSEGV: si_code=1 faultaddr=0x52BCC190 tid=1 ESP=0x52BCC190 seg=0x52BCD000-0x52C00000 fl=34 shad=0x52D00000-0xB0000000 --7595-- -> extended stack base to 0x52BCC000 ++7595++ sys_sigaction: sigNo 11, new 0x52BF6350, old 0x52BF62C0, new flags 0x14000004 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x0 0000000000000000 ++7595++ oldset=0x52BF6430 0000000080004002 ++7595++ do_setmask: tid = 1 how = 2 (SIG_SETMASK), set = 0x52BF6430 0000000080004002 --7595-- REDIR: 0x1C1E3CE0 (stpcpy) redirected to 0x1B900944 (stpcpy) 01/04/2006 11:58:37 263696 7595 16384 datablitz [1] BlzErrSev = Error BlzRC = blzErrOpSys at ::startSys() BlzRootSrv.c::3409 [1] details: DataBlitz server failed to open the sysDB name='/home/prabhakt/anna/pdb/BlzSysDB' 01/04/2006 11:58:37 239923 7595 16384 datablitz [2] BlzErrSev = Error BlzRC = blzErrOpSys at BlzSysInternal::open() BlzSysInternal.c::1822 [2] details: Low level memory instantiation failed for sysDB name='/home/prabhakt/anna/pdb/BlzSysDB' 01/04/2006 11:58:37 233621 7595 16384 datablitz [3] BlzErrSev = Error BlzRC = blzErrOpSys at BlzSysDB::initMemImage() BlzSysDB.c::4521 [3] details: Low level memory instantiation failed for sysDB name='/home/prabhakt/anna/pdb/BlzSysDB' 01/04/2006 11:58:37 222055 7595 16384 datablitz [4] BlzErrSev = Error BlzRC = blzErrOpSys at BlzBaseDB::creatMemImage() BlzBaseDB.c::1490 [4] details: Unable to map/attach memory for db name='/home/prabhakt/anna/pdb/BlzSysDB' mode=26 01/04/2006 11:58:37 211097 7595 16384 datablitz [5] BlzErrSev = Error BlzRC = blzErrOpSys at BlzBaseDB::mapDB() BlzBaseDB.c::488 [5] details: Unable to map/attach memory for db name='/home/prabhakt/anna/pdb/BlzSysDB' mode=26 addr=0x17d78400 size=25395200 maxSize=209715200 01/04/2006 11:58:37 109439 7595 16384 datablitz [6] BlzErrSev = Error BlzRC = blzErrOpSys at BlzMmap::fastMap() ../../include/dbmgmt/BlzMmap.ih::377 [6] details: Memory map file fd=4 name='/home/prabhakt/anna/pdb/BlzSysDB/mem_image' to addr=0x17d79000 [6] details: for size=209715200 using prot=3 flags=17 failed [6] details: Operating system errno=2 errstr='No such file or directory' ++7595++ sys_sigaction: sigNo 14, new 0x52BF72D0, old 0x52BF7240, new flags 0x4000000 ++7595++ do_setmask: tid = 1 how = 1 (SIG_UNBLOCK), set = 0x52BF7470 0000000000002000 --7595-- REDIR: 0x1C1E3AC0 (memmove) redirected to 0x1B900B78 (memmove) DataBlitz server -- EXITING 01/04/2006 11:58:37 364372 7595 16384 datablitz [1] BlzErrSev = Error BlzRC = blzErrOpSys at ::blzRootMain() BlzRootSrv.c::3859 [1] details: Problems encountered opening/recovering sysDB name='/home/prabhakt/anna/pdb/BlzSysDB' while starting up ++7595++ sys_sigaction: sigNo 11, new 0xB0AEC8D8, old 0x0, new flags 0x0 ++7595++ sys_sigaction: sigNo 7, new 0xB0AEC8D4, old 0x0, new flags 0x0 ++7595++ sys_sigaction: sigNo 4, new 0xB0AEC8D0, old 0x0, new flags 0x0 ++7595++ sys_sigaction: sigNo 8, new 0xB0AEC8EC, old 0x0, new flags 0x0 ==7595== ==7595== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 44 from 1) ==7595== ==7595== 1 errors in context 1 of 1: ==7595== Source and destination overlap in strncpy(0x1BE1E847, 0x1BE1E847, 4095) ==7595== at 0x1B900671: strncpy (mac_replace_strmem.c:290) ==7595== by 0x1BC7C89B: BlzMELT::setProgName(char const*) (BlzMELT.c:359) ==7595== by 0x1BC7CA24: BlzMELT::BlzMELT(char const*, BlzRC (*)(BlzMELTnode*)) (BlzMELT.c:401) ==7595== by 0x1BC7CBF5: BlzMELT::testAndInit() (BlzMELT.c:450) ==7595== by 0x1B91E301: BlzMELT::init() (BlzMELT.h:216) ==7595== by 0x1BD22FFA: BlzThreadData::BlzThreadData() (BlzThreadData.c:51) ==7595== by 0x1BD1A932: __static_initialization_and_destruction_0(int, int) (BlzSysInternal.c:82) ==7595== by 0x1BD1ABE2: _GLOBAL__I_BlzProcessIDnull (streambuf:131) ==7595== by 0x1BD698E4: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1BB9F648: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1B8F04B0: _dl_init (in /lib/ld-2.3.2.so) ==7595== by 0x1B8E4C1C: (within /lib/ld-2.3.2.so) --7595-- --7595-- supp: 44 Ugly strchr error in /lib/ld-2.3.2.so ==7595== ==7595== IN SUMMARY: 1 errors from 1 contexts (suppressed: 44 from 1) ==7595== ==7595== malloc/free: in use at exit: 123628 bytes in 28 blocks. ==7595== malloc/free: 118 allocs, 90 frees, 249369 bytes allocated. ==7595== ==7595== searching for pointers to 28 not-freed blocks. ==7595== checked 2577124 bytes. ==7595== ==7595== ==7595== 40 bytes in 1 blocks are possibly lost in loss record 8 of 22 ==7595== at 0x1B8FF206: operator new[](unsigned) (vg_replace_malloc.c:197) ==7595== by 0x1BD645AC: BlzVersion::BlzVersion(char const*) (BlzVersion.c:165) ==7595== by 0x1BD64E27: __static_initialization_and_destruction_0(int, int) (BlzVersion.c:594) ==7595== by 0x1BD64EB4: _GLOBAL__I_blzVersionString (streambuf:131) ==7595== by 0x1BD698E4: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1BB9F648: (within /home2/prabhakt/anna/MSQL/lib/libblz-mt.so) ==7595== by 0x1B8F04B0: _dl_init (in /lib/ld-2.3.2.so) ==7595== by 0x1B8E4C1C: (within /lib/ld-2.3.2.so) ==7595== ==7595== ==7595== 4104 bytes in 1 blocks are definitely lost in loss record 19 of 22 ==7595== at 0x1B8FEDCC: operator new(unsigned) (vg_replace_malloc.c:164) ==7595== by 0x1BBE64B0: BlzLicense::init() (BlzCrypt.c:199) ==7595== by 0x1BBE69D4: BlzLicense::load(char const*, int) (BlzCrypt.c:304) ==7595== by 0x1BBE6021: BlzCrypt::checkLicense(void*) (BlzCrypt.c:137) ==7595== by 0x1B93DA60: blzRootMain(int, char**, char**) (BlzRootSrv.c:3822) ==7595== by 0x1B921B38: jointMain(int, char**, char**) (BlzJointSrv.c:100) ==7595== by 0x8048835: main (BlzSrvMain.c:21) ==7595== ==7595== LEAK SUMMARY: ==7595== definitely lost: 4104 bytes in 1 blocks. ==7595== possibly lost: 40 bytes in 1 blocks. ==7595== still reachable: 119484 bytes in 26 blocks. ==7595== suppressed: 0 bytes in 0 blocks. ==7595== Reachable blocks (those to which a pointer was found) are not shown. ==7595== To see them, rerun with: --show-reachable=yes --7595-- memcheck: sanity checks: 53 cheap, 3 expensive --7595-- memcheck: auxmaps: 0 auxmap entries (0k, 0M) in use --7595-- memcheck: auxmaps: 0 searches, 0 comparisons --7595-- memcheck: secondaries: 56 issued (3584k, 3M) --7595-- memcheck: secondaries: 113 accessible and distinguished (7232k, 7M) --7595-- tt/tc: 26457 tt lookups requiring 31945 probes --7595-- tt/tc: 26457 fast-cache updates, 4 flushes --7595-- translate: new 12461 (268813 -> 4382870; ratio 163:10) [0 scs] --7595-- translate: dumped 0 (0 -> ??) --7595-- translate: discarded 10 (285 -> ??) --7595-- scheduler: 2658704 jumps (bb entries). --7595-- scheduler: 53/14824 major/minor sched events. --7595-- sanity: 54 cheap, 3 expensive checks. --7595-- exectx: 4999 lists, 175 contexts (avg 0 per list) --7595-- exectx: 253 searches, 81 full compares (320 per 1000) --7595-- exectx: 207 cmp2, 130 cmp4, 0 cmpAll Rgds, anna -- Once upon a time, a man asked his girl, "Will you marry me?" She said, "No." And they lived happily ever after. |