[ghemical-devel] complete MY_RTTI patch

Michael Banck mbanck@gmx.net
Wed, 26 Mar 2003 16:49:59 +0100


On Wed, Mar 26, 2003 at 02:57:23PM +0200, Tommi Hassinen wrote:
> If there's any problems other than MPQC-related ones, please just report
> them to me and I'll fix them (the modified code uses void pointers and I
> might have made some mistakes there since there's no type checking).

well, mpqc segfaults, as you predicted:

writing MPQC-input file /tmp/mpqc0000.in
using ProcMessageGrp as MessageGroup...
using PthreadThreadGrp as ThreadGroup...
  Reading file /usr/share/mpqc/atominfo.kv.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 12855)]
0x88402626 in ?? ()
(gdb) bt
#0  0x88402626 in ?? ()
#1  0x40cdcba2 in sc::StringKeyVal::key_value(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#2  0x40ce0df1 in sc::PrefixKeyVal::key_value(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#3  0x40cd4205 in sc::KeyVal::key_describedclassvalue(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#4  0x40cd44ae in sc::KeyVal::describedclassvalue(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#5  0x40a2c9e0 in sc::MolecularEnergy::MolecularEnergy(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCmolecule.so.4
#6  0x4083884e in sc::Wavefunction::Wavefunction(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCwfn.so.4
#7  0x408463d9 in sc::OneBodyWavefunction::OneBodyWavefunction(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCwfn.so.4
#8  0x407b76b7 in sc::SCF::SCF(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCscf.so.4
#9  0x407c6dd2 in sc::CLSCF::CLSCF(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCscf.so.4
#10 0x407ce2da in sc::CLHF::CLHF(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCscf.so.4
#11 0x407d1cdc in sc::DescribedClass* sc::create<sc::CLHF>(sc::Ref<sc::KeyVal> const&) () from /usr/lib/libSCscf.so.4
#12 0x40cf1bf6 in sc::ClassDesc::create(sc::Ref<sc::KeyVal> const&) const () from /usr/lib/libSCclass.so.4
#13 0x40cdca54 in sc::StringKeyVal::key_value(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#14 0x40ce0df1 in sc::PrefixKeyVal::key_value(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#15 0x40cd4205 in sc::KeyVal::key_describedclassvalue(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#16 0x40cd44ae in sc::KeyVal::describedclassvalue(char const*, sc::KeyValValue const&) () from /usr/lib/libSCkeyval.so.4
#17 0x080f6b2a in qm1_eng_mpqc (this=0xa841550, p1=@0xa81c4a0, mode=1) at /usr/include/sc/util/ref/ref.h:372
#18 0x080f0df9 in qm1_mdl::CreateDefaultEngine() (this=0xa81c4a0) at qm1mdl.cpp:225
#19 0x080f1fc7 in qm1_mdl::DoEnergy() (this=0xa81c4a0) at qm1mdl.cpp:663
#20 0x40457086 in gnome_pixmap_entry_get_filename () from /usr/lib/libgnomeui.so.32
[...]

This is the tail of an strace:

write(1, "  Reading file /usr/share/mpqc/a"..., 44) = 44
brk(0)                                  = 0xa879000
brk(0xa889000)                          = 0xa889000
open("/usr/share/mpqc/atominfo.kv", O_RDONLY) = 6
brk(0)                                  = 0xa889000
brk(0xa88b000)                          = 0xa88b000
brk(0)                                  = 0xa88b000
brk(0xa88f000)                          = 0xa88f000
fstat64(6, {st_mode=S_IFREG|0644, st_size=11957, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40020000
read(6, "% Emacs should use -*- keyval -*"..., 8192) = 8192
brk(0)                                  = 0xa88f000
brk(0xa890000)                          = 0xa890000
brk(0)                                  = 0xa890000
brk(0xa891000)                          = 0xa891000
brk(0)                                  = 0xa891000
brk(0xa892000)                          = 0xa892000
brk(0)                                  = 0xa892000
brk(0xa893000)                          = 0xa893000
brk(0)                                  = 0xa893000
brk(0xa894000)                          = 0xa894000
read(6, "    Sm =  1.85\n    Eu =  1.85\n  "..., 8192) = 3765
read(6, "", 4096)                       = 0 
brk(0)                                  = 0xa894000
brk(0xa895000)                          = 0xa895000
brk(0)                                  = 0xa895000
brk(0xa896000)                          = 0xa896000
brk(0)                                  = 0xa896000
brk(0xa897000)                          = 0xa897000 
brk(0)                                  = 0xa897000 
brk(0xa898000)                          = 0xa898000
brk(0)                                  = 0xa898000
brk(0xa899000)                          = 0xa899000
brk(0)                                  = 0xa899000
brk(0xa89a000)                          = 0xa89a000
read(6, "", 8192)                       = 0
close(6)                                = 0
munmap(0x40020000, 4096)                = 0
brk(0)                                  = 0xa89a000
brk(0xa89b000)                          = 0xa89b000
brk(0)                                  = 0xa89b000 
brk(0xa89c000)                          = 0xa89c000
brk(0)                                  = 0xa89c000
brk(0xa89d000)                          = 0xa89d000
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
write(3, "\33\0\2\0\0\0\0\0 \0\2\0\0\0\0\0+\0\1\0", 20) = 20
read(3, "\1\2\22F\0\0\0\0\216\1`\3\0\0\0\0\4\0\0\0\1\0\0\0\330y"..., 32) = 32
fork()                                  = 13074
wait4(13074, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 13074
--- SIGCHLD (Child exited) @ 0 (0) ---
exit_group(1)                           = ?


I've set a breakpoint at the last dynamic cast in qm1e_mpqc.cpp, but it did not
trigger. Could this be an unrelated problem with mpqc? I've only run the mpqc
test-suite, which does not use keyval et. al. as far as I know.

running mpqc on /tmp/mpqc0000.in works without problems.


Otherwise, everything else in ghemical seems to work fine, as far as I
can tell.

thanks,

Michael