This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Summary: | Line breakpoint in servlet always invalid | ||
---|---|---|---|
Product: | serverplugins | Reporter: | Jiri Skrivanek <jskrivanek> |
Component: | WebLogic | Assignee: | Martin Entlicher <mentlicher> |
Status: | CLOSED WONTFIX | ||
Severity: | normal | CC: | mentlicher, mmirilovic, phejl, pjiricka |
Priority: | P2 | ||
Version: | 7.0.1 | ||
Hardware: | PC | ||
OS: | All | ||
Issue Type: | DEFECT | Exception Reporter: | |
Attachments: |
fastswap stacktrace
standard stacktrace |
Description
Jiri Skrivanek
2011-06-21 12:18:34 UTC
It looks like this happens with fast swap enabled - in runtime the class is using some proxy. I'm afraid there is not much we can do in serverplugin (except disabling fastswap). Martine could you look into this? Can debugger somehow stop even on changed location? Should WL runtime provide WL runtime line numbers for every stack element event in fastwap (and thus is this a WL issue)? I'll attach two stacktraces from simple servlet throwing an exception to show the difference. Created attachment 113253 [details]
fastswap stacktrace
Created attachment 113254 [details]
standard stacktrace
Discussed with PetrJ - P2. I do not think we'll be able to do anything about it. The class in question is class test.NewServlet (loaded by instance of com.bea.wls.redef.RedefiningClassLoader(id=1133)) This class has a method "processRequest". But when I ask for it's bytecode, it gives me just an array of length 7: [42, 43, 44, -72, 0, 103, -79]. It's clear that this is not the original method body. Query for all line locations throws an AbsentInformationException and method location has line -1. The class has 67 methods! There is a bunch of bea...() methods, therefore the class loader performs some redefinitions. I do not think we're able to retrieve the information which is not provided. I've tried to search some information about FastSwap, but was not much successful, if you know about some configuration options that add the line locations, it would fix the problem. This can not be fixed on debugger side AFAIK. Moving back to Weblogic. (In reply to comment #6) > I do not think we'll be able to do anything about it. > The class in question is class test.NewServlet (loaded by instance of > com.bea.wls.redef.RedefiningClassLoader(id=1133)) > This class has a method "processRequest". > But when I ask for it's bytecode, it gives me just an array of length 7: [42, > 43, 44, -72, 0, 103, -79]. It's clear that this is not the original method > body. > Query for all line locations throws an AbsentInformationException and method > location has line -1. > The class has 67 methods! There is a bunch of bea...() methods, therefore the > class loader performs some redefinitions. > > I do not think we're able to retrieve the information which is not provided. > I've tried to search some information about FastSwap, but was not much > successful, if you know about some configuration options that add the line > locations, it would fix the problem. > > This can not be fixed on debugger side AFAIK. Moving back to Weblogic. Martine, could you please file a bug to WL runtime (product 5242 on bug.oraclecorp.com). You can specify your requirements more precisely than me and discuss the details with WL guys. In case this could not be fixed we may decide to disable fastswap. BTW Information on fastswap I used is here (no technical details unfortunately) http://download.oracle.com/docs/cd/E12840_01/wls/docs103/deployment/deployunits.html#wp1053872 I've submitted https://bug.oraclecorp.com/pls/bug/webbug_print.show?c_rptno=13423091 for this problem. FYI: Stepping is possible, but it's performed in class NewServlet$beaVersion0_2. If you're able to provide this class from: ElementUtilities.getBinaryName(CompilationController.getTreeUtilities().scopeFor(offset).getEnclosingClass()) you will probably fix this. But if the class name is changed after each fastswap, it would break the breakpoints functionality anyway. |