The Duration and PreRelease values determine the value of NextTargetOnsetTime.
The NextTargetOnsetTime under the 'Event' Timing Mode is calculated by:
NextOnsetTime = (OnsetTime + Duration) - PreRelease
Due to an internal design flaw, the values do not handle negative and unsigned values properly. This either leads to a negative NextTargetOnsetTime or an underflow occurs due to internal storage of unsigned numbers resulting in a very large calculation.
This results in the experiment appearing to stall.
Ensure that the PreRelease value is not larger than the Duration value of the object.
3/8/2011 4:35:00 PM
|Are you sure this (KB #4516) is a bug? I ran into this myself while exploring the use & limits of PreRelease. Because the effect of PreRelease is merely to affect the TargetOffsetTime of an object, it is perfectly legitimate to use a PreRelease larger than Duration -- this merely means that the TargetOffsetTime will be set to some time before the object's OnsetTime, which in turn means that as soon as the object completes its onset it will have already reached its TargetOffsetTime and will offset immediately thereafter, which all makes sense once you think about it. So a simple expedience for setting the maximum PreRelease is to simply set it to some arbitrarily large value. But if you use a PreRelease so large that the TargetOffsetTime comes before the start of the session, well then you end up with a negative TargetOffsetTime, and then the program hangs indefinitely.|
Perhaps you could add a more detailed description of this "bug" in the KB.
-- David McFarlane, Professional Faultfinder
3/8/2011 5:15:00 PM
|Thank you for bringing this to our attention, it appears a number of INFO, FEATURE, and BUG topics got through our generation system to this web site before they had appropriate content. As per this specific BUG, the issue is an internal flaw with how E-Prime handles unsigned/signed integers that results in a bad calculation of the NextTargetOnsetTime. This could result in the experiment appearing to hang. Future updates to E-Prime will correct this issue by basically internally altering the PreRelease to not exceed the Duration. Please keep posted to this topic for further informaiton.|
3/17/2011 9:31:00 PM
|Thank you for amplifying the description. A couple new comments about your equation. First, shouldn't "NextOnsetTime" read "NextTargetOnsetTime"? Second, isn't that the equation for the OffsetTime of the stimulus object? I.e., under Event timing mode (and without a response terminating the stimulus), the following hold:|
NextTargetOnsetTime = OnsetTime + Duration
TargetOffsetTime = NextTargetOnsetTime - PreRelease
= (OnsetTime + Duration) - PreRelease
So PreRelease affects only TargetOffsetTime, not NextTargetOnsetTime. This is how E-Prime can release time to allow other processes to proceed (e.g., loading of stimuls files) without affecting the onset timing of the subsequent stimulus. Did I miss something?
If that is correct, then the problem does *not* arise as the result of a negative NextTargetOnsetTime, but rather from a negative TargetOffsetTime.