<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></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 comment. “self.javaToMacKeyMap is retaining the reference.</div><div class="">Please review the modified code:</div><div class=""><br class=""></div><div class=""><a href="http://cr.openjdk.java.net/~mhalder/8165555/webrev.02/" class="">http://cr.openjdk.java.net/~mhalder/8165555/webrev.02/</a></div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Manajit</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 23-Sep-2016, at 10:24 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=""><span 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;" class="">On 21.09.16 16:01, Manajit Halder wrote:</span><br 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;" class=""><blockquote type="cite" 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;" 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 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;" class=""><span 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;" class="">I still suggest you to check "self.javaToMacKeyMap" at line 48 this should call generated setter which will retain the reference.</span><br 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;" class=""><br 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;" class=""><blockquote type="cite" 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;" 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="">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 type="cite" class="">On 20-Sep-2016, at 4:42 am, Sergey Bylokhov<br class=""><<a href="mailto:Sergey.Bylokhov@oracle.com" class="">Sergey.Bylokhov@oracle.com</a><span class="Apple-converted-space"> </span><<a href="mailto:Sergey.Bylokhov@oracle.com" class="">mailto:Sergey.Bylokhov@oracle.com</a>>> 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 type="cite" 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="">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 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;" class=""><br 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;" class=""><span 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;" class="">--<span class="Apple-converted-space"> </span></span><br 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;" class=""><span 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;" class="">Best regards, Sergey.</span></div></blockquote></div><br class=""></div></body></html>