Sam Lang wrote:

Hi All,

I noticed that in thread-mgr.c:bmi_thread_function, there is a call to BMI_test_unexpected if the bmi_unexp_count > 0, which only happens on the server. The value of bmi_unexp_count on the server can be as high as 50 from the job_bmi_unexp posts in server.c. It looks like the bmi_unexp_array (which gets filled in with the unexpected messages received) is only allocated to hold 5 results though (THREAD_MGR_TEST_COUNT). At first glance this looks like a bug, since BMI_test_unexpected would be filling in the results past the 5th element. It seems like something like this would have caused some server crashes due to writing past the end of the array, and that we would have discovered something like that by now. How is this handled? Does bmi internally only handle at most 5 unexpected messages at a time?

This logic in thread-mgr.c is what prevents it from overrunning the array (the incount variable is passed into BMI_test_unexpected to indicate how many results it is allowed to retrieve):

            incount = bmi_unexp_count;
            if(incount > THREAD_MGR_TEST_COUNT)
                incount = THREAD_MGR_TEST_COUNT;

I don't think the BMI function cares how big the array is (there probably is no explicit internal limit).

-Phil
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to