Ticket #226 (closed: fixed)
Bundling exception request for byteman
|Reported by:||goldmann||Owned by:|
|Priority:||normal||Component:||Bundled Library Exception|
It seems that one of my packages requires bundled software. Explanation and reasoning you can find below. This package is currently available in Fedora in unbundled state to meet Fedora packaging guidelines. Sadly this process removed the core functionality of this tool which made it unusable.
This project is very valuable when testing/debugging application running on JVM. Please consider granting exception for this package.
The project leader of Byteman is added to CC.
Byteman provides functionality akin to Systemtap but for Java deployments, enabling dynamic modification of Java code belonging bothto application programs and to the Java runtime itself. Like Systemtap,Byteman can be used simply for tracing or performance measurement but italso supports injection of code during unit and integration testingwhich side effects the application or runtime state to generate andpropagate faults, making it simple to engineer complex test scenarios.
Byteman hooks into a capability provided by the Java virtual machinewhich allows it to modify Java bytecode as the virtual machine isexecuting. It can dynamically redefine and relink bytecode to addbehaviour not included in the original source code. It can also removeinjected behaviours later on -- in fact it can retransform the bytecodeas often as you ask it to.
In order to perform this redefinition and relinking Byteman potentiallyneeds to make its own code and the library code it depends on visible inevery executable scope (in practice the only dependency is the ASMlibrary -- a bytecode rewriting tool). In particular, this means thatByteman and its libraries need to be visible in system scope (i.e. theyneed to be able to be linked into virtual machine runtime code). If anapplication wants to use the ASM library (and many applications,including our own JBoss applications, do need to) then when Bytemanmakes the code visible in system scope it is very likely to break theapplication when it tries to link against the code in its ownapplication scope. Invariably this will lead to the code being linkedpartially against one copy of the library and partially against anothercopy. This will happen even if these are two copies of the same library.
In order to avoid this link-time clash Byteman needs to be bundled witha modified version of its dependent libraries (i.e. ASM) transformed sothat the symbols in the bundled code are exported and then referencedfrom Byteman using names belonging to the (private) Byteman namespace.