more mmtimer questions

Oliver Stieber oliver_stieber at yahoo.co.uk
Fri Feb 11 13:59:24 CST 2005


While people are thinking about mmtimer I've got a
question, or more a problem.

Sometimes, mainly when escape from Bink videos (or
they run to the end)  the linked list in time.c is
getting corrupt. (this happens about 1 in 5 times)

i.e. 

TIME_MMSysTimeCallback()
....
    EnterCriticalSection(&iData->cs);
    for (ptimer = &TIME_TimersList; *ptimer != NULL; )
{
        /* silly test */
        if((int)*ptimer < 1000){
            FIXME("ptimer out of expected range,
timers list is probably corrupt %p \n", *ptimer);
            break;
        }


I've had a look through the code and can't spot any
problems with managing the linked list which would
point to problems with TIME_TimersList but when the
crash occurs ptimer != &TIME_TimersList


Also if the we're using a = &TIME_TimersList,
a=&(*a)->lpNext  and then referencing *a in critical
sections doesn't anything that modifies
TIME_TimersList or ... lpNext also have to be in a
critical section? e.g. TIME_MMTimeStart and
TIME_MMTimeStop.

If so should the code be change to copy the values in
TIME_TimersList and  ..->lpNext  instead of
referencing them or should it be changed to make sure
TIME_MMTimeStart and TIME_MMTimeStop etc.. use
critical sections.




Send instant messages to your online friends http://uk.messenger.yahoo.com 



More information about the wine-devel mailing list