Hello All,
Please someone from Google to comment this issue!
My colleagues has found a bug in the java.lang.ClassLoader
implementation of the cupcake tag of the Android platform. Here is a
short descriptions:
We try to invoke ClassLoader.getSystemClassLoader() in one of our OSGi
implementation classes and afterwards we have endless loop. Here are the
bodies of the methods:
public static ClassLoader getSystemClassLoader() {
SecurityManager smgr = System.getSecurityManager();
if (smgr != null) {
ClassLoader caller = VMStack.getCallingClassLoader();
if (caller != null && !caller.isAncestorOf(SystemClassLoader.loader)) {
smgr.checkPermission(new RuntimePermission("getClassLoader"));
}
}
return SystemClassLoader.loader;
}
...
and in isAncestorOf method we have:
final boolean isAncestorOf(ClassLoader child) {
for (ClassLoader current = child; current != null; current =
child.parent) {
if (current == this) {
return true;
}
}
return false;
}
In a dynamic environment like an OSGi implementation with set security
manager the isAncestorOf(...) follows to an endless loop. As you can see
- if the child is a custom class loader, which has another class loader
as a parent. The problem is that current is always is set to
child.parent but the child is never changed. The following code fixes
the problem:
final boolean isAncestorOf(ClassLoader child) {
for (ClassLoader current = child; current != null; current =
current.parent) {
if (current == this) {
return true;
}
}
return false;
}
I hope that you will be able to fix this as soon as possible and to
update the cupcake branch too. Please notify me when this is ready.
Thanks in advance!!
--
Best Regards,
Daniel
---------------------------------------------------------------
Daniel Janev · Department Manager/Core Platform and Smart Home
ProSyst Software GmbH
1606 Sofia, Bulgaria · Vladajska Str. 48
Tel. +359 (0)2 952 35 81/109 · Fax +359 (0)2 953 26 17
Mobile Phone +359 (0)888 678 670
http://www.prosyst.com · [email protected]
---------------------------------------------------------------
stay in touch with your product.
---------------------------------------------------------------
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---