[OpenJDK 2D-Dev] [9] JDK-8176287 :[macosx] The print test crashed with Nimbus L&F
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Wed Mar 15 05:13:24 UTC 2017
On 3/14/2017 9:51 PM, Sergey Bylokhov wrote:
>
>> 14 марта 2017 г., в 14:41, Philip Race <philip.race at oracle.com
>> <mailto:philip.race at oracle.com>> написал(а):
>>
>> >Since this is mac specific code, I guess VS2010 will not play any
>> part in building this.
>>
>> Ah, yes :-)
>>
>> Updated fix looks OK.
>
> Should we memset the data allocated via malloc(calloc was used before)?
>
Should be a good practice to do it, I guess .
Modified webrev adding memset:
http://cr.openjdk.java.net/~psadhukhan/8176287/webrev.02/
Regards
Prasanta
>>
>> -phil.
>>
>> On 3/14/17, 2:31 AM, Prasanta Sadhukhan wrote:
>>>
>>> JPRT 8u build resulted in failure, so I had to modify at 2 other places.
>>>
>>> QuartzSurfaceData.m:287 and QuartzSurfaceData.m:328
>>> Other things remains same.
>>> http://cr.openjdk.java.net/~psadhukhan/8176287/webrev.01/
>>>
>>> Regards
>>> Prasanta
>>> On 3/14/2017 10:47 AM, Philip Race wrote:
>>>>
>>>>
>>>> On 3/13/17, 10:14 PM, Prasanta Sadhukhan wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 3/14/2017 10:24 AM, Philip Race wrote:
>>>>>> The problem seems to have been that you were allocating zero
>>>>>> bytes in the old code :
>>>>>> 950 CGFloat* colors= (CGFloat*)calloc(0, sizeof(CGFloat)*length);
>>>>>> 960 qsdo->gradientInfo->colordata = (CGFloat*)calloc(0,
>>>>>> sizeof(CGFloat)*4*length); Regarding the new code, whilst it
>>>>>> seems like it fixes the problem I have a nit
>>>>>> 937 int i;
>>>>>> 938 for (i=0; i<length; i++)
>>>>>>
>>>>>> Since this code appears at the start of a block I'd expect all
>>>>>> compilers to be happy with
>>>>>> for (int i=0; i<length; i++)
>>>>>>
>>>>>> is this not so ? Assuming yes, pls fix before push.
>>>>> Yes, it should be ok. I got a problem with jdk8u JPRT build
>>>>> (during earlier backport) citing C99 compiler failure but I guess
>>>>> that was because variable was declared not at blockstart.
>>>>> Will again do a JPRT and if its ok, I will push with this change.
>>>>
>>>> Testing the 8u backport via JPRT is good since that will use VS2010
>>>> which
>>>> wins the "most likely to barf" award on such an issue.
>>>>
>>>> -phil
>>>>>>
>>>>>> Also I wonder if the regression test we created for LGP passes
>>>>>> only because it is "short".
>>>>>> Perhaps later we can improve on that.
>>>>>>
>>>>>> The fix will also need to be backported since the original fix
>>>>>> was backported.
>>>>>>
>>>>> ok.
>>>>>> So "+1" with those comments ..
>>>>>>
>>>>> Thanks
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>>> -phil.
>>>>>>
>>>>>> On 3/12/17, 11:49 PM, Prasanta Sadhukhan wrote:
>>>>>>> Hi All,
>>>>>>>
>>>>>>> Please review a jck print test crash fix for jdk9. The issue was
>>>>>>> seen with only Nimbus L&F which seems to use Linear gradient path
>>>>>>> and not in other L&F (such as Aqua) .
>>>>>>>
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8176287
>>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8176287/webrev.00/
>>>>>>>
>>>>>>> Linear Gradient path collects the gradient colors and fractions
>>>>>>> values in native obtained from Java and allocates several arrays
>>>>>>> to store the same in setupGradient() method.
>>>>>>> It seems even after being freed, in subsequent call to the same
>>>>>>> gradient path routine, it may get the same allocated pointer the
>>>>>>> next time the array is allocated causing it to crash citing
>>>>>>> "memory being modified after freed".
>>>>>>>
>>>>>>> Optimise setupGradient() method to allocate fewer pointer. The
>>>>>>> JCK test works now.
>>>>>>> Also, the JDK-8162796 testcase LinearGradientPrintingTest and
>>>>>>> RadialGradientPrintingTest works with this optimisation.
>>>>>>>
>>>>>>> Regards
>>>>>>> Prasanta
>>>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20170315/d48773b7/attachment.html>
More information about the 2d-dev
mailing list