On Fri, 2005-09-16 at 11:35 -0500, Brian Barrett wrote: > On Sep 16, 2005, at 8:44 AM, Ferris McCormick wrote: > > > ========================================== > > fmccor@polylepis util [235]% ./opal_timer > > --> frequency: 900000000 > > --> cycle count > > Slept approximately 903151189 cycles, or 1003501 us > > --> usecs > > Slept approximately 18446744073289684648 us > > ========================================== > > That last value means that I'm munging the upper 32 bits of the tick > register (it's 64 bits long). So we're not quite there yet, but > getting closer. I should be able to get to that today. > > The other problem is very odd. Since you're compiling in 32bit mode, > I'd expect us to see it on our PowerPC machines, but I haven't run into > that one yet. I'll try to compile without debugging and see what I can > see. > > > Brian > Here's a little more information on the SegFault when trying OBJ_DESTRUCT(&verbose); in opal/util/optput.c: First of all, verbose is of type opal_output_stream_t, and this is not an opal_object_t, so OBJ_DESTRUCT is calling opal_obj_run_destructors with an object of the wrong type (although ompi might be forcing storage allocation so that this call should work; I haven't worked it out).
Second, on my system at least, when OBJ_DESTRUCT(&verbose) gets called, verbose looks like this (I have a debug fprintf to try to look at a bit of the verbose structure. The corresponding fprintf I put after OBJ_CONSTRUCT(&verbose, opal_output_stream_t); is fine.) ==================================== Program received signal SIGSEGV, Segmentation fault. 0x7014f7d4 in opal_output_close (output_id=1883966264) at output.c:287 287 fprintf(stderr,"Destroying verbose, depth=%d \n",(/*(opal_object_t*)&*/verbose.super).obj_class->cls_depth); Current language: auto; currently c (gdb) print verbose $1 = {super = {obj_class = 0x0, obj_reference_count = 1}, lds_is_debugging = false, lds_verbose_level = 0, lds_want_syslog = false, lds_syslog_priority = 0, lds_syslog_ident = 0x0, lds_prefix = 0x0, lds_want_stdout = false, lds_want_stderr = true, lds_want_file = false, lds_want_file_append = false, lds_file_suffix = 0x0} ===================================== so that verbose.super.obj_class has been set to null, and no matter how it is supposed to work, the opal_obj_run_destructors loop: cls = object->obj_class; for(i=0; i < cls->cls_depth;i++) { ... is going to be working on garbage, because nothing in verbose has a useful obj_class element. Hope this helps, Regards, Ferris -- Ferris McCormick (P44646, MI) <fmc...@gentoo.org> Developer, Gentoo Linux (Sparc, Devrel)
signature.asc
Description: This is a digitally signed message part