Hi,
while I am using DirectFB with fusion, some time the application was locked. we
debugged into, find lock is in fusion. I looked the code, found a place seems
missed unlock (see red line or comment). if any one knows linux-fusion, please
make sure. both 3.x or 7.x have same code.
Thanks,
Victor Liu
int
fusion_skirmish_prevail (FusionDev *dev, int id, int fusion_id)
{
int ret;
FusionSkirmish *skirmish;
#ifdef FUSION_DEBUG_SKIRMISH_DEADLOCK
FusionSkirmish *s;
int i;
bool outer = true;
#endif
dev->stat.skirmish_prevail_swoop++;
ret = fusion_skirmish_lock( &dev->skirmish, id, true, &skirmish );
if (ret)
return ret;
......
up( &dev->skirmish.lock );
while (skirmish->lock_pid) {
ret = fusion_skirmish_wait( skirmish, NULL );
if (ret)
{
fusion_skirmish_unlock( skirmish ); // original code does not have this
line
return ret;
}
}
skirmish->lock_fid = fusion_id;
skirmish->lock_pid = current->pid;
skirmish->lock_count = 1;
skirmish->lock_total++;
fusion_skirmish_unlock( skirmish );
return 0;
}
_________________________________________________________________
Your smile counts. The more smiles you share, the more we donate. Join in.
www.windowslive.com/smile?ocid=TXT_TAGLM_Wave2_oprsmilewlhmtagline_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev