http://jeremymanson.blogspot.com/2007/05/profiling-with-jvmtijvmpi-sigprof-and.html http://stackoverflow.com/questions/3426537/how-to-properly-write-a-sigprof-handler-that-invokes-asyncgetcalltrace http://hiroshiyamauchi.blogspot.com/2008/12/stabilizing-asyncgetcalltrace.html
The AsyncGetCallTrace symbol is a public extern symbol, unfortunately. So there may be third party shared libraries dependent on the extern, and optionally calling it. Removing the symbol will prevent those libraries from linking into the VM, even if they don't call it. Just FYI... -kto On May 21, 2013, at 8:35 AM, JOSEPH PROVINO wrote: > > On 5/21/2013 3:06 AM, David Holmes wrote: >> Hi Staffan, >> >> On 21/05/2013 4:49 PM, Staffan Larsen wrote: >>> >>> On 21 maj 2013, at 04:34, David Holmes <david.hol...@oracle.com> wrote: >>> >>>> <added servicability> >>>> >>>> Hi Joe, >>>> >>>> As I have previously stated you copied the struct definitions instead of >>>> moving them outside the ifdef. >>>> >>>> Serviceability folk: we are particularly interested in whether the use of >>>> ticks_no_class_load is deemed appropriate in this situation. Who will be >>>> consuming this value? >>> >>> Since you have opted for the simple fix of having an exported but >>> non-functional AsyncGetCallTrace instead of actually removing the symbol >>> from the symbol files (which is the proposed solution in the bug report), >> >> That would be a simpler solution semantically but the only way I can see to >> do that is to use a text replacement mechanism in the build files - as is >> done for the dynamic vtable symbols. I find that less appealing than simply >> exporting an interface that is configured to report an error (which is >> essentially what all the optional interfaces do under the minimal VM). >> >>> I would like you to include a comment about this in the source. Right now >>> it's very unclear why there is an exported function that only returns an >>> error. >>> >>> As to the appropriate return value, I don't know. The only caller should be >>> the Sun Studio profiler, and I'm not sure how it will handle this case if >>> ever run. The possible return values aren't very well documented. >> >> I guess we need to try and run it to find out. > > Okay, do either of you feel strongly about how this should be fixed -- return > an error or remove the symbol? > > joe > >> >> Thanks, >> David >> >>> /Staffan >>> >>>> >>>> Thanks, >>>> David >>>> >>>> On 21/05/2013 5:10 AM, JOSEPH PROVINO wrote: >>>>> The change is to include forte.cpp in the minimal jvm but to >>>>> conditionalize the code so that >>>>> only AsyncGetCallTrace() is defined with the minimal jvm. >>>>> >>>>> Webrev is here: http://cr.openjdk.java.net/~jprovino/8013461/webrev.00/ >>>>> >>>>> * JDK-8013461 <https://jbs.oracle.com/bugs/browse/JDK-8013461>There is >>>>> a symbol AsyncGetCallTrace in libjvm.symbols that does not exist in >>>>> minimal/libjvm.a when DEBUG_LEVEL == release >>>>> <https://jbs.oracle.com/bugs/browse/JDK-8013461> >>>>> >>>>> Thanks. >>>>> >>>>> joe >>>>> >>>>> >>> >