[Spread-users] To protect against SEGV in scatter.
Ed Holyat
eholyat at olf.com
Fri Oct 26 14:38:26 EDT 2007
The screen shots didn't go through, here is the code change
Basically the msg->num_elements was 135 and the MAX_SCATTER_ELEMENTS
array is only 100
message_obj *Message_copy_message(message_obj *msg)
{
int i;
message_obj *tmp_scat;
tmp_scat = new( SCATTER );
tmp_scat->num_elements = msg->num_elements;
for( i=0; i < msg->num_elements; i++ )
{
if( i >= MAX_SCATTER_ELEMENTS)
{
Alarm(DEBUG, "Message_copy_message: num of elements %d >
MAX_SCATTER_ELEMENTS=%d \n",
msg->num_elements, MAX_SCATTER_ELEMENTS);
break;
}
tmp_scat->elements[i].len = msg->elements[i].len;
tmp_scat->elements[i].buf = (char *)new( PACKET_BODY );
if (tmp_scat == NULL) {
Alarm(EXIT, "Message_copy_message: Failed to
allocate a new PACKET_BODY object\n");
return(NULL);
}
memcpy( tmp_scat->elements[i].buf, msg->elements[i].buf,
msg->elements[i].len );
}
return(tmp_scat);
}
Recreation of stack
* Message_copy_message()
* Sess_write() -> The len_sent=76108 is < the
total_to_send=176250
* G_send_heavyweight_join()
* G_send_heavyweight_memb()
* G_compute_and_notify
* G_handle_groups
* Sess_deliver_message
* Deliver_packet
* Deliver_agreed_packets
* Port_handle_bcast
* E_handle_events
* _run_main
* main
-----Original Message-----
From: spread-users-bounces at lists.spread.org
[mailto:spread-users-bounces at lists.spread.org] On Behalf Of Ed Holyat
Sent: Friday, October 26, 2007 12:52 PM
To: Spread-users at lists.spread.org
Subject: [Spread-users] To protect against SEGV in scatter.
I have run into a case where the number of members combined with the
size of the private_name to a particular group has exceeded the vector
space available in a single scatter message.
What are the effects of truncating this list and allowing the message to
propagate to the users? Will the truncated members still receive these
messages?
If the last member name is truncated, will that crash the receiving
daemons or clients? Do we have to make sure that the last group contains
the entire member name?
Is this information needed by a client program (daemon to client) or by
the daemons (daemon to daemon)?
Message_copy_message()
Sess_write()
The len_sent is < the total_to_send
Ed Holyat
Open Link Financial, Inc.
(516) 227-6600 x 231
www.olf.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.spread.org/pipermail/spread-users/attachments/20071026/6e2c1e52/attachment.html
More information about the Spread-users
mailing list