JDK-8069233 : JSR 292: reject redefinitions if patched string becomes non-patched and vice versa
  • Type: Bug
  • Component: hotspot
  • Sub-Component: jvmti
  • Affected Version: 9
  • Priority: P4
  • Status: Closed
  • Resolution: Not an Issue
  • OS: generic
  • CPU: generic
  • Submitted: 2015-01-17
  • Updated: 2024-07-10
  • Resolved: 2024-07-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdResolved
Related Reports
Relates :  
Relates :  
Description
Pseudo-strings must remain pseudo-strings and strings remain strings after a class redefinition/retransformation.
We need to put a check in place if the invariant is broken as the pseudo-string patches will be lost in such case.

The suggestion is to reject such redefinitions and return a JVMTI error, something like:
  JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED
  JVMTI_ERROR_INTERNAL
Comments
<Serviceability triage team>: Pseudo strings removed with JDK-8243287 in JDK-17
10-07-2024

I'm pretty sure pseudo strings have been removed with JDK-8243287 so this can be closed.
24-08-2021

Not a high priority. Moved to 16 and changed to P4.
08-05-2020

This is not a high priority to fix. Changed to P3 which is more relevant.
23-07-2015

JVMTI_ERROR_INTERNAL should be used if it is the implementation that screwed something up. If the change from: pseudo-string -> string or string -> pseudo-string happens because of user/programmer input, then a different error code like JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED is better.
17-01-2015