[Soot-list] CFG: RuntimeException: Attempting to push a non-constant cp entry

John Jorgensen jorgnsn at lcd.uregina.ca
Mon Oct 4 00:57:35 EDT 2004


>>>>> "arudys" == Algis Rudys <arudys at gmail.com> writes:
    arudys> I'm currently running into the same problem.
    arudys> Unfortunately, JDK 1.4.x seg faults on me (as in
    arudys> "signal 11; go tell Sun their JDK is broken" seg
    arudys> faults); I'm wondering how far you've gotten on this
    arudys> (or if you've even started); I'm going to need this
    arudys> soon, and will implement it myself if it doesn't yet
    arudys> exist.

I haven't started, other than to establish that the problem may
be more involved than I thought.  Rather than just a localized
change to soot.coffi.CFG, handling loads of class literals may
also require adding a ClassConstant class to the intermediate
representations, and likely requires modifying jasmin so it
can generate code for "ldc* /some/class/name". 

I'm sure the Sable lab would welcome the contribution of your
code if you implement support for class literals.  Tomorrow
night, I'll send a message to soot-list providing the few details
I know, in case others are interested as well.  It will still be
at least a week and a half before I will be able to spend much
time on the issue (I'm a former McGill student who still dabbles
in soot, but I can only steal so much time from my day job :-)).

If org.omg.CORBA.IDLType happens to be the only class in the
1.5.0 rt.jar which triggers the problem, and you don't need that
particular class for your application, there may be ways to
finesse the problem (i.e. cheat).  The one which occurs to me is
extracting the class file for org.omg.CORBA.IDLType from the
1.4.2 jar into some directory, which you then place ahead of
rt.jar in your soot-class-path, so that Soot analyzes the old,
unproblematic class file.  If you need the new JDK to run your
analysis, but don't care if the analyzed library code comes from
an old JDK, then I think you could just put the old JDK's rt.jar
into your soot-class-path, so that it is analyzed by soot, even
though soot is running under the 1.5.0 VM.



More information about the Soot-list mailing list