I'd say yes, it's better to still call Thread::interrupt. -- Igor
> On Feb 11, 2020, at 10:19 PM, Chris Plummer <chris.plum...@oracle.com> wrote: > > Ok. Should I still call interrupt()? > > Chris > > On 2/11/20 10:07 PM, Igor Ignatyev wrote: >> Hi Chris, >> >> that's a common practice for any kind of library-ish code, if there are no >> explicit check of interrupt status, it will be checked a by next operation >> which might be interrupted. in this particular case, I agree rethrowing it >> as an unchecked exception might be a good alternative. >> >> -- Igor >> >>> On Feb 11, 2020, at 10:03 PM, Chris Plummer <chris.plum...@oracle.com >>> <mailto:chris.plum...@oracle.com>> wrote: >>> >>> Hi Igor, >>> >>> I guess I fail to see the benefit of this. Who is going to check the >>> interrupt status of this thread and do something meaningful with it? It >>> seems we would want to immediately propagate the failure by throwing a >>> RuntimeException. This will work well when called from a test since this is >>> a common way to fail a test. The other use of this code is by >>> VMProps.vmHasSAandCanAttach(). It looks like if a RuntimeException is >>> thrown the right thing will happen when SafeMap.put() catches the exception >>> (it catches all Throwables). >>> >>> Chris >>> >>> On 2/11/20 7:12 PM, Igor Ignatev wrote: >>>> rather like this : >>>> >>>>> } catch (InterruptedException e) { >>>>> Thread.currentThread().interrupt(); >>>>> return false; // assume not signed >>>>> } >>>> >>>> — Igor >>>> >>>>> On Feb 11, 2020, at 6:15 PM, Chris Plummer <chris.plum...@oracle.com >>>>> <mailto:chris.plum...@oracle.com>> wrote: >>>>> >>>>> >>>>> Like this? >>>>> >>>>> } catch (InterruptedException e) { >>>>> Thread.currentThread().interrupt(); >>>>> throw new RuntimeException(e); >>>>> } >>>>> >>>>> Chris >>>>> >>>>> On 2/11/20 2:23 PM, Igor Ignatyev wrote: >>>>>> no, I meant to call Thread.currentThread().interrupt(), calling that >>>>>> will restore interrupted state of the thread, so an user of Platform >>>>>> class will be able to response to it appropriately, w/ your current >>>>>> code, the fact that the thread was interrupted will be missed, and in >>>>>> most cases it is not right thing to do. >>>>>> >>>>>> -- Igor >>>>>> >>>>>>> On Feb 11, 2020, at 2:02 PM, Chris Plummer <chris.plum...@oracle.com >>>>>>> <mailto:chris.plum...@oracle.com>> wrote: >>>>>>> >>>>>>> Hi Igor, >>>>>>> >>>>>>> I'm not sure what you mean by restore the interrupt state. Do you mean >>>>>>> loop back to the waitFor() call? >>>>>>> >>>>>>> thanks, >>>>>>> >>>>>>> Chris >>>>>>> >>>>>>> On 2/11/20 1:55 PM, Igor Ignatyev wrote: >>>>>>>> Hi Chris, >>>>>>>> >>>>>>>> I don't insist on (3), so I'm fine if you don't want to change that >>>>>>>> part. one thing I'd change though is to restore thread interrupted >>>>>>>> state at L#266 of Platform.java (no need to publish new webrev) >>>>>>>> >>>>>>>> Thanks, >>>>>>>> -- Igor >>>>>>>> >>>>>>>>> On Feb 11, 2020, at 1:49 PM, Chris Plummer <chris.plum...@oracle.com >>>>>>>>> <mailto:chris.plum...@oracle.com>> wrote: >>>>>>>>> >>>>>>>>> Hi Igor, >>>>>>>>> >>>>>>>>> Here's an updated webrev: >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~cjplummer/8238196/webrev.01/index.html >>>>>>>>> <http://cr.openjdk.java.net/~cjplummer/8238196/webrev.01/index.html> >>>>>>>>> >>>>>>>>> I rebased to JDK 15 and made all the changes you suggested except for >>>>>>>>> (3). I did not think it is necessary since the code is only executed >>>>>>>>> on OSX. However, if you still feel allowing flexibility in the path >>>>>>>>> separator is important, I can add that change too. >>>>>>>>> >>>>>>>>> thanks, >>>>>>>>> >>>>>>>>> Chris >>>>>>>>> >>>>>>>>> On 2/10/20 1:34 PM, Igor Ignatyev wrote: >>>>>>>>>> Hi Chris, >>>>>>>>>> >>>>>>>>>> in general it all looks good, I have a few comments (most of them >>>>>>>>>> are editorial): >>>>>>>>>> in Platform.java: >>>>>>>>>> 1. you have doubled spaced at line#238 (b/w boolean and isSignedOSX) >>>>>>>>>> 2. as FileNotFoundException is IOException, there is no need to >>>>>>>>>> declare the former in the signature of isSignedOSX >>>>>>>>>> 3. it's better to pass jdkPath, "bin" and "java" as separate >>>>>>>>>> arguments to Path.get, so the code won't depend on file separator >>>>>>>>>> 4. you are waiting for codesign to finish w/o reading its cout / >>>>>>>>>> cerr, which might lead to a deadlock (if codesign will exhaust IO >>>>>>>>>> buffer before exiting), so you need to either create two separate >>>>>>>>>> threads to read cout and cerr or redirect these streams them to >>>>>>>>>> files and read these files afterwards or just ignore cout/cerr by >>>>>>>>>> using Redirect.DISCARD. I'd personally recommend the latter as the >>>>>>>>>> result of codesign can be reliably deduced from its exitcode (0 - >>>>>>>>>> signed, 1 - verification failed, 2 - wrong arguments, 3 - not all >>>>>>>>>> requirements from R are satisfied) and using cout/cerr is somewhat >>>>>>>>>> fragile as there is no guarantee output format won't be changed. >>>>>>>>>> >>>>>>>>>> the rest looks good to me. >>>>>>>>>> >>>>>>>>>> -- Igor >>>>>>>>>> >>>>>>>>>>> On Feb 10, 2020, at 11:48 AM, Chris Plummer >>>>>>>>>>> <chris.plum...@oracle.com >>>>>>>>>>> <mailto:chris.plum...@oracle.com><mailto:chris.plum...@oracle.com >>>>>>>>>>> <mailto:chris.plum...@oracle.com>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Ping #2. It's not that hard of a review. Most of it is the new >>>>>>>>>>> Platform.isSignedOSX() method, which is well commented and pretty >>>>>>>>>>> straight froward. >>>>>>>>>>> >>>>>>>>>>> thanks, >>>>>>>>>>> >>>>>>>>>>> Chris >>>>>>>>>>> >>>>>>>>>>> On 2/4/20 5:04 PM, Chris Plummer wrote: >>>>>>>>>>>> Ping! >>>>>>>>>>>> >>>>>>>>>>>> And I decided to push to 15 instead of 14. Will backport to 14 >>>>>>>>>>>> eventually. >>>>>>>>>>>> >>>>>>>>>>>> thanks, >>>>>>>>>>>> >>>>>>>>>>>> Chris >>>>>>>>>>>> >>>>>>>>>>>> On 1/30/20 10:20 PM, Chris Plummer wrote: >>>>>>>>>>>>> Yes, you are correct: >>>>>>>>>>>>> >>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8238196 >>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8238196> >>>>>>>>>>>>> http://cr.openjdk.java.net/~cjplummer/8238196/webrev.00 >>>>>>>>>>>>> <http://cr.openjdk.java.net/~cjplummer/8238196/webrev.00> >>>>>>>>>>>>> >>>>>>>>>>>>> thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Chris >>>>>>>>>>>>> >>>>>>>>>>>>> On 1/30/20 10:13 PM, Igor Ignatyev wrote: >>>>>>>>>>>>>> Hi Chris, >>>>>>>>>>>>>> >>>>>>>>>>>>>> http://cr.openjdk.java.net/~cjplummer/8236913/webrev.00 >>>>>>>>>>>>>> <http://cr.openjdk.java.net/~cjplummer/8236913/webrev.00%C3%82> >>>>>>>>>>>>>> seems to be a webrev from another issue, should it have been >>>>>>>>>>>>>> http://cr.openjdk.java.net/~cjplummer/8238196/webrev.00/ >>>>>>>>>>>>>> <http://cr.openjdk.java.net/~cjplummer/8238196/webrev.00/%C3%82> >>>>>>>>>>>>>> ? >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- Igor >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Jan 30, 2020, at 10:10 PM, Chris Plummer >>>>>>>>>>>>>>> <chris.plum...@oracle.com >>>>>>>>>>>>>>> <mailto:chris.plum...@oracle.com><mailto:chris.plum...@oracle.com >>>>>>>>>>>>>>> <mailto:chris.plum...@oracle.com>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hello, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Please review the following fix for some SA tests that are >>>>>>>>>>>>>>> failing on Mac OS X 10.14.5 and later: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8238196 >>>>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8238196> >>>>>>>>>>>>>>> http://cr.openjdk.java.net/~cjplummer/8236913/webrev.00 >>>>>>>>>>>>>>> <http://cr.openjdk.java.net/~cjplummer/8236913/webrev.00> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The issue is that SA can't attach to a signed binary starting >>>>>>>>>>>>>>> with 10.14.5. There is no workaround for this, so these tests >>>>>>>>>>>>>>> are being disabled when it is detected that the binary is >>>>>>>>>>>>>>> signed and we are running on 10.14 or later (I chose all 10.14 >>>>>>>>>>>>>>> releases to simplify the check). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Some background may help explain the fix. In order for SA to >>>>>>>>>>>>>>> attach to a live process (not a core file) on OSX, either the >>>>>>>>>>>>>>> attaching process (ie. the test) has to be run as root, or sudo >>>>>>>>>>>>>>> needs to be supported. However, the only tests that make the >>>>>>>>>>>>>>> sudo check are the 20 or so that use ClhsdbLauncher. The rest >>>>>>>>>>>>>>> all rely on "@requires vm.hasSAandCanAttach" to filter out >>>>>>>>>>>>>>> tests that use SA attach. vm.hasSAandCanAttach only checks if >>>>>>>>>>>>>>> the test is being run as root. Thus all our non-ClhsdbLauncher >>>>>>>>>>>>>>> tests that SA attach to a live process are currently not run >>>>>>>>>>>>>>> unless they are run as root. 8238268 [1] has been filed to >>>>>>>>>>>>>>> address this, making it so all the tests will attempt to use >>>>>>>>>>>>>>> sudo if not run as root. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Because of the difference in how ClhsdbLauncher tests and >>>>>>>>>>>>>>> "@requires vm.hasSAandCanAttach" tests check to see if they >>>>>>>>>>>>>>> are runnable, this fix needs to address both types of checks. >>>>>>>>>>>>>>> The common code for both these cases is >>>>>>>>>>>>>>> Platform.shouldSAAttach(), which on OSX basically equates to >>>>>>>>>>>>>>> check to see if we are running as root. I changed it to also >>>>>>>>>>>>>>> return false if running on signed binary with 10.14 or later. >>>>>>>>>>>>>>> However, this confused the ClhsdbLauncher use of >>>>>>>>>>>>>>> Platform.shouldSAAttach() somewhat, since it assumed a false >>>>>>>>>>>>>>> result only happens because you are not running as root (in >>>>>>>>>>>>>>> which case it would then check if sudo will work). So >>>>>>>>>>>>>>> ClhsdbLauncher now has double check that the false result was >>>>>>>>>>>>>>> not because of running a signed binary. If it is signed, it >>>>>>>>>>>>>>> won't do the sudo check. This will get cleaned up with 8238268 >>>>>>>>>>>>>>> [1], which will move the sudo check into >>>>>>>>>>>>>>> Platform.shouldSAAttach(). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Chris >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8238268 >>>>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8238268> >>>>>>> >>>>>> >>>>> >>> >> >