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