On Sep 10, 2007, at 8:00 AM, Scott Atchley wrote:

Hi Sam,

Thanks for the heads up. Is it safe to use on both the client and server?

It is for IDs internal to PVFS. For reference, id_gen_safe_register takes the pointer and adds it to a hashtable, so that we can check if its already been destroyed when we do id_gen_safe_lookup. This is really only useful for the ids we pass back to the user through the system interfaces though, as we don't have any control there over whether they will pass in invalid ids. For the ids internal to the code, we don't need the overhead of checking that all our pointers are valid, so id_gen_fast_register just casts the pointer value to a 64bit value.


What is the best way to catch changes like this so I can keep bmi_mx up to date with CVS?

Honestly I thought I had changed the id_gen_safe calls in bmi_mx to id_gen_fast calls, so that's my bad. To catch things like this, we should add nightly tests with the mx method enabled. We've got some nodes here with mx, but we don't always have access to them. If you've got a few nodes for testing, we can help you setup the tests and notification stuff to report to our tinderbox. In an ideal world, we would have regular performance tests of PVFS and the mx code running as well, but I suppose that's a pipe dream.

-sam


Thanks,

Scott

On Sep 7, 2007, at 4:04 PM, Sam Lang wrote:


Hi Scott,

You don't need to use id_gen_safe for your ids. If you switch to using id_gen_fast_register, it should fix the abort you're seeing. The abort is caused by the gen_safe code not being initialized by default on the server now, unless components actually need to use it.

-sam

On Sep 7, 2007, at 1:44 PM, Scott Atchley wrote:

Hi all,

I am trying a fresh checkout of PVFS2 from this morning. I have a single server and a single client.

As soon as the client connects, the server aborts. Using gdb, the server calls BMI_mx_post_send_list(). This function calls my common send function, bmx_post_send_common, which calls id_gen_safe_register().

In that function, there is an assert which fails:

(gdb)
61      int id_gen_safe_register(
62          PVFS_id_gen_t *new_id,
63          void *item)
64      {
65          id_gen_safe_t *id_elem = NULL;
66
67          assert(s_id_gen_safe_table != NULL);
68
(gdb) p s_id_gen_safe_table
$8 = (struct qhash_table *) 0x0

Where is this table initialized? Is this something I need to worry about or is cvs broken?

Thanks,

Scott
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers




_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to