Hi,
I've had couple of multisync (latest CVS) synchronization
lockups lately and the reason seems to be the following
function:
In other words in one special case the control jumps
out from the function without unclocking the lock.
----------------------------------------------------------
// If the message is on the queue already, dont add this too
void sync_send_msg_once(sync_msg_port *port, int type) {
sync_msg *msg;
GList *q;
g_mutex_lock(port->msg_mutex);
q = port->msg_queue;
while (q) {
msg = q->data;
if (msg && msg->type == type) {
+ g_mutex_unlock(port->msg_mutex);
return;
^^^^^^^^^^^^^^^^^^^^^^^^^
}
q = q->next;
}
msg = g_malloc0(sizeof(sync_msg));
g_assert(msg);
msg->type = type;
msg->data = NULL;
port->msg_queue = g_list_append(port->msg_queue, msg);
g_mutex_unlock(port->msg_mutex);
g_cond_signal(port->msg_signal);
}
-------------------------------------------------------
Regards,
Tomi Orava
-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines
at the same time. Free trial click here:http://www.vmware.com/wl/offer/358/0
_______________________________________________
Multisync-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/multisync-users