<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Sergey,<div class=""><br class=""></div><div class="">Thanks for the comments. Please review the updated webrev.</div><div class=""><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.04/" class="">http://cr.openjdk.java.net/~mhalder/8165555/webrev.04/</a></div><div class=""><br class=""></div><div class="">The “frame” can’t be a local variable as it is used in two different threads inside the function.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Manajit</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On 04-Oct-2016, at 6:26 pm, Sergey Bylokhov <<a href="mailto:sergey.bylokhov@oracle.com" class="">sergey.bylokhov@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Times New Roman'; font-size: 12pt;" class="">Hi, Manajit.<br class="">It looksbetter, bet it can be improved a little bit.<br class=""> - you should not skip exceptions in the run();<br class=""> - It will be good to select the frame by mouse click before pressing the key, otherwise you can run somthing else.<br class=""> - I suggest to iterate the code in main a few times in the loop(I guess 10 iterations is ok)<br class=""> -The "frame" can be a local var inside the createRobot(), also the method can be renamed.<br class=""><br class="">-----<span class="Apple-converted-space"> </span><a href="mailto:manajit.halder@oracle.com" class="">manajit.halder@oracle.com</a><span class="Apple-converted-space"> </span>wrote:<span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">> Hi Sergey,<div class="">><span class="Apple-converted-space"> </span><br class=""></div><div class="">> Thanks for the review. Changes in CRobot.m are removed and added a jtreg test case.</div><div class="">> Please review the webrev.</div><div class="">><span class="Apple-converted-space"> </span><br class=""></div><div class="">><span class="Apple-converted-space"> </span><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.03/" class="" target="_blank">http://cr.openjdk.java.net/~mhalder/8165555/webrev.03/</a></div><div class="">><span class="Apple-converted-space"> </span><br class=""></div><div class="">> Thanks,</div><div class="">> Manajit</div><div class="">><span class="Apple-converted-space"> </span><br class=""><div class=""><blockquote class=""><div class="">> On 27-Sep-2016, at 4:15 pm, Sergey Bylokhov <<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">Sergey.Bylokhov@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">><span class="Apple-converted-space"> </span><span class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">On 27.09.16 11:51, Manajit Halder wrote:</span><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Hi Sergey,<br class=""><br class="">Thanks for the comment. “self.javaToMacKeyMap is retaining the reference.<br class="">Please review the modified code:<br class=""><br class=""><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.02/" class="" target="_blank">http://cr.openjdk.java.net/~mhalder/8165555/webrev.02/</a><br class=""></blockquote><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">The changes in CRobot.m is unnecessary? I also suggest to write the test. Recently I have run all jck tests on my osx system and no of them were crashed, so it seems that the sequence of tests in the bug report are not stable and the new reg test will be welcome to catch such bugs always.</span><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote class="">On 23-Sep-2016, at 10:24 pm, Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">Sergey.Bylokhov@oracle.com</a><span class="Apple-converted-space"> </span><<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">mailto:Sergey.Bylokhov@oracle.com</a>>> wrote:<br class=""><br class="">On 21.09.16 16:01, Manajit Halder wrote:<br class=""><blockquote class="">Hi Sergey,<br class=""><br class="">Thanks for the comment.<br class=""><br class="">Access to "instance" is not broken. The problem is with the dictionary<br class="">variable "javaToMacKeyMap" within the "instance" reference.<br class="">The dictionary is not getting initialised for the second time when<br class="">singleton method is called for the second time. The dictionary is<br class="">getting initialised during the first time singleton method is called and<br class="">hence crash was observed. Tried adding self.javaToMacKeyMap<br class="">but doesn’t solve the problem.<br class=""></blockquote><br class="">I still suggest you to check "self.javaToMacKeyMap" at line 48 this<br class="">should call generated setter which will retain the reference.<br class=""><br class=""><blockquote class=""><br class="">I propose two solutions to this problem:<br class=""><br class="">Solution 1:<br class="">Reinitialise the dictionary every-time the singleton method is called.<br class="">Webrev:<br class=""><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.01/" class="" target="_blank">http://cr.openjdk.java.net/~mhalder/8165555/webrev.01/</a><br class=""><br class="">Drawback:<br class="">dictionary is initialised multiple times (every time singleton method is<br class="">called).<br class=""><br class="">Solution 2:<br class="">Make the dictionary static.<br class="">Drawback:<br class="">Still dictionary need to be initialised multiple times.<br class="">No singleton method, just two static methods, one method to initialise<br class="">the dictionary and other to get the key form the dictionary.<br class="">Webrev:<br class="">Not prepared. Will be prepared if second solution accepted.<br class=""><br class="">Test case:<br class="">There are no test cases. Problem can be reproduced by<br class="">executing following JCK test:<br class="">java -jar JCK-runtime-9/lib/jtjck.jar -mode:single -k:interactive<br class="">"api/java_awt/interactive/event/EventTests.html#EventTest0019<br class="">api/java_awt/interactive/event/EventTests.html#EventTest0013”<br class=""><br class="">Thanks,<br class="">Manajit<br class=""><br class=""><blockquote class="">On 20-Sep-2016, at 4:42 am, Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">Sergey.Bylokhov@oracle.com</a><br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">mailto:Sergey.Bylokhov@oracle.com</a>> <<a href="mailto:Sergey.Bylokhov@oracle.com" class="" target="_blank">mailto:Sergey.Bylokhov@oracle.com</a>>><br class="">wrote:<br class=""><br class="">Hi, Manajit.<br class="">It seems that after the fix "(CRobotKeyCodeMapping *) sharedInstance"<br class="">returns the new object per invocation, so it is not really<br class="">sharedInstance. I am not sure I understand what is wrong in the<br class="">current code, from the my point of view this is a correct singleton.<br class="">It it true that the problem is in access to broken "instance" and not<br class="">to "javaToMacKeyMap" inside the "instance"? If not then<br class="">"javaToMacKeyMap" should be changed to "self.javaToMacKeyMap".<br class="">Do you have a test case to reproduce the bug?<br class=""><br class="">On 19.09.16 15:26, Manajit Halder wrote:<br class=""><blockquote class="">Hi All,<br class=""><br class="">Kindly review the fix for JDK9.<br class=""><br class="">Bug:<br class=""><a href="https://bugs.openjdk.java.net/browse/JDK-8165555" class="" target="_blank">https://bugs.openjdk.java.net/browse/JDK-8165555</a><br class=""><br class="">Webrev:<br class=""><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.00/" class="">http://cr.openjdk.java.net/~mhalder/8165555/webrev.00/</a><br class=""><br class="">Issue:<br class="">[macosx] VM crashes on second attempt to execute JCK interactive tests<br class="">that use Robot (single JVM, agent)<br class=""><br class="">Cause:<br class="">While executing the JCK test for the second time the robot was getting<br class="">initialised once again and old instance of CRobotKeyCodeMapping was not<br class="">available.<br class="">Crash was observed while trying to access invalid instance of<br class="">CRobotKeyCodeMapping.<br class=""><br class="">Fix:<br class="">A new instance of CRobotKeyCodeMapping is created when robot is<br class="">initialised.<br class=""><br class="">Regards,<br class="">Manajit<br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""></blockquote><br class=""><br class="">--<br class="">Best regards, Sergey.<br class=""></blockquote><br class=""></blockquote><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">--<span class="Apple-converted-space"> </span></span><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">Best regards, Sergey.</span></div></blockquote></div></div></div></div></div></blockquote></div><br class=""></div></body></html>