Ticket #61 (closed bug: fixed)

Opened 2 years ago

Last modified 2 years ago

xexec: methods calls of object that called hook within hook cause deadlock

Reported by: niam Owned by: niam
Priority: high Milestone: 0.13.0
Component: Version: trunk
Severity: major Keywords:
Cc:

Description

If inside hook call a method of callee object and method is protected with pc::sync::protector deadlock will occur.
For example:
void
hook(xexecCollectedData *odata,

short int type,
void *udata)

{

xexecIoChannelCollectedData *st = (xexecIoChannelCollectedData *)odata;
if (st->operType == IO_OPERATION_WRITE)
{

stdio *io = dynamic_cast<stdio *>(st->executor);
io->outSize = 100;
io->writeStream("\nhook\n"); /* >DEADLOCK< */

}

}

Change History

comment:1 Changed 2 years ago by administrator

It's possible to add flag to indicate that function call is under hook and do not try to protect.

comment:2 Changed 2 years ago by niam

  • Status changed from assigned to closed
  • Resolution set to fixed

(In [3d282b801f8985d51208951aaa1628d21267819e]) {issue #61[fixed]} pc::sync::(thread|process)::section could be acquired recursively by the current thread/process

Note: See TracTickets for help on using tickets.