Hi
Yes, it looks like you have encountered a different problem. In the first line of the function:
final Set<String> result = new TreeSet<String>(MODULE_NAME_COMPARATOR);
MODULE_NAME_COMPARATOR is a case-insensitive function for comparing module names. This is good for sorting names, but it treats names that differ only by case as equivalent. In a set, equivalent names are not allowed.
I think the solution is to modify this function to not treat names that differ only by case as equivalent. (The function is defined in the superclass AbstractEnvManager).
John On Tuesday, November 06, 2012 10:28:42 John Eblen <jeblen@xxxxxxx> wrote
Hi
I have also noticed missing modules. Environment management filters module names with "special" characters. This is done to filter extra output lines that are not module names, but it seems to be too strict in some cases. In my case, C++ modules are missing because the + character is special. I'll file a bug report for this.
Hi John,
good to see that this is a known issue - in principle. In my case, however, I don't think it is related to special characters. See detailed analysis below.
The relevant code is in file org.eclipse.ptp.ems.core.ModulesEnvManager in function "collectModuleNamesFrom" "MODULE_NAME_PATTERN" is the guilty regular _expression_. In the console view of your development environment, you should see an error message for each line that is filtered.
John
I started debugging by setting several breakpoints in ModuleEventManager.java, method "private Set<String> collectModuleNamesFrom(List<String> output)". The variable "output" has the following value at method entry.
(java.util.ArrayList<E>) [/sw/aix61/modules-3.2.7b/Modules/versions:, /sw/aix61/modules-3.2.7b/Modules/3.2.7/modulefiles:, /sw/aix61/Modules:, FERRET/6.1, GAMS/23.7, GAMS/default, GCC/gcc-4.3.3, GCC/gcc-4.3.3-1, GCC/gcc-4.4.0-1, GCC/gcc-4.4.2, GCC/gcc-4.5.1, GLOBUS/4.2.1, GLOBUS/default, GNU/autoconf/2.69, GNU/autoconf-2.64, GNU/autoconf-2.68, GNU/automake/1.11.5, GNU/automake/1.11.6, GNU/automake-1.11, GNU/automake-1.11.1, GNU/libtool/2.4.2, GNU/libtool-2.4, IBM/hpct5.1.0.2, IBM/xlC10.1.0.0, IBM/xlC10.1.0.10, IBM/xlC10.1.0.13, IBM/xlC10.1.0.3, IBM/xlC10.1.0.4, IBM/xlC10.1.0.5, IBM/xlC10.1.0.6, IBM/xlC10.1.0.7, IBM/xlC11.1.0.10, IBM/xlC11.1.0.11, IBM/xlC11.1.0.2, IBM/xlC11.1.0.3, IBM/xlC11.1.0.4, IBM/xlC11.1.0.5, IBM/xlC11.1.0.7, IBM/xlC11.1.0.8, IBM/xlC12.1.0.0, IBM/xlC12.1.0.1, IBM/xlc10.1.0.10, IBM/xlc10.1.0.13, IBM/xlc10.1.0.2, IBM/xlc10.1.0.3, IBM/xlc10.1.0.4, IBM/xlc10.1.0.5, IBM/xlc10.1.0.6, IBM/xlc10.1.0.7, IBM/xlc11.1.0.10, IBM/xlc11.1.0.11, IBM/xlc11.1.0.2, IBM/xlc11.1.0.3, IBM/xlc11.1.0.4, IBM/xlc11.1.0.5, IBM/xlc11.1.0.6, IBM/xlc11.1.0.7, IBM/xlc11.1.0.8, IBM/xlc12.1.0.0, IBM/xlc12.1.0.1, IBM/xlf12.1.0.0, IBM/xlf12.1.0.11, IBM/xlf12.1.0.3, IBM/xlf12.1.0.4, IBM/xlf12.1.0.5, IBM/xlf12.1.0.6, IBM/xlf12.1.0.7, IBM/xlf12.1.0.8, IBM/xlf13.1.0.0, IBM/xlf13.1.0.10, IBM/xlf13.1.0.11, IBM/xlf13.1.0.2, IBM/xlf13.1.0.3, IBM/xlf13.1.0.4, IBM/xlf13.1.0.5, IBM/xlf13.1.0.6, IBM/xlf13.1.0.7, IBM/xlf13.1.0.8, IBM/xlf14.0.0.1_BETA, IBM/xlf14.1.0.0, IBM/xlf14.1.0.1, IGES/grads2.0.a6, NAG/5.1.340, NCAR/ncarg5.1.0, NCAR/ncarg5.1.1, NCAR/ncarg5.2.0, NCAR/ncarg6.0.0, NCL/6.0.0-beta, NCO/3.9.9, NCO/4.0.8, NCVIEW/1.93g, NCVIEW/2.0beta4, NCVIEW/default, NETCDF/4.2, NETCDF/4.2.1, NETCDF/4.2.1.1, PYTHON/2.6.4, PYTHON/2.6.4-buildbot-0.8.2, PYTHON/2.7.1, SVN/1.6.16, SVN/1.7.5, TAU/2.18.3, TAU/2.19, TEX/default, UNITE/1.0, afterburner/4.4.0, afterburner/4.5.1, afterburner/4.6.0, afterburner/4.6.1, afterburner/4.6.2, afterburner/4.6.3, afterburner/default, cdo/1.4.0.1, cdo/1.4.1, cdo/1.4.3, cdo/1.4.4, cdo/1.4.5, cdo/1.4.5.1, cdo/1.4.6, cdo/1.4.7, cdo/1.5.0, cdo/1.5.1, cdo/1.5.2, cdo/1.5.3, cdo/1.5.4, cdo/1.5.5, cdo/1.5.6, cdo/1.5.8, cdo/default, default, /sw/aix61/unite/modulefiles/tools:, ddt/2.6.13711-aixpoe-ibm, ddt/3.0.17813- aixpoe-ibm, ddt/3.1.20638-aixpoe-ibm(default), ddt/3.2.24924-aixpoe-ibm, marmot/2.4.0-aixpoe-ibm, scalasca/1.3.3-aixpoe-ibm, scalasca/1.4.1-aixpoe-ibm, scalasca/1.4.2-aixpoe-ibm(default), vampirserver/vampirserver-7.5.0(default), vampirtrace/5.11-aixpoe-ibm, vampirtrace/5.12.2-aixpoe-ibm, vampirtrace/5.13.1-aixpoe-ibm(default)]
At least the "IBM/xlc<some_version_number>" that I was missing previously, are still in this list. Please note the list entries of the form "IBM/xlC<same_version_number>". For xl Compilers, C and C++ share much of the product development, so IBM/xlc and IBM/xlC pretty much always come in pairs, and so do the modules generated from them.
The first entry after all "IBM/xlCxxx" entries is "IBM/xlc10.1.0.10". For this entry I am seeing the following. * "shouldIgnore(line)" == false * MODULE_NAME_PATTERN.matcher(moduleName).matches() == true * method "add" evaluates to "return m.put(e, PRESENT)==null;" * In TreeMap.class, method "public V put(K key, V value)", the following loop iterates until t == IBM/xlC10.1.0.10
do { parent = t; cmp = cpr.compare(key, t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null);
If t == IBM/xlC10.1.0.10, we get cmp == 0, and the method exits with "return t.setValue(value)".
This means that the put method (and hence the calling add method) consider "IBM/xlc10.1.0.10" and "IBM/xlC10.1.0.10" as identical. This is wrong, because one module means xlC ( == C++) and the other means xlc (== C).
Consequently, the module list in Eclipse PTP contains only those versions of the xlc Compiler that doesn't have a matching module for the C++ compiler with identical version number.
Hope that was clear enough to demonstrate the bug. Unfortunately, I can't propose a cure. I just don't know enough of the code. If possible, one cure would be to turn cpr.compare case sensitive. --
Mit freundlichen Grüßen / Kind regards
Dr. Christoph Pospiech High Performance & Parallel Computing Phone: +49-351 86269826 Mobile: +49-171-765 5871 E-Mail: christoph.pospiech@xxxxxxxxxx ------------------------------------------------------------------------------------------------------------------------------------------- IBM Deutschland GmbH / Vorsitzender des Aufsichtsrats: Martin Jetter Geschäftsführung: Martina Koederitz (Vorsitzende), Reinhard Reschke, Dieter Scholz, Gregor Pillen, Joachim Heel, Christian Noll Sitz der Gesellschaft: Ehningen / Registergericht: Amtsgericht Stuttgart, HRB 14562 / WEEE-Reg.-Nr. DE 99369940
_______________________________________________ ptp-user mailing list ptp-user@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/ptp-user
|