This section describes the whole set of noteworthy fixed problems in the 2002.05.21 release.
In some cases, instrumented code of ternary expressions does not compile.
A gap between comment line in fdc file causes the problem. This error appears only on Windows. Error : While analyzing, syntax error near /BRANCH [.\AMMCSCRIPTPARSER_ACTOR.fdc:10784] While analyzing, syntax error near /BRANCH [.\AMMCSCRIPTPARSER_ACTOR.fdc:10791] While analyzing, syntax error near SHORTCUT [.\AMMCSCRIPTPARSER_ACTOR.fdc:11810] While analyzing, syntax error near /COMMENT [.\AMMCSCRIPTPARSER_ACTOR.fdc:11810] While analyzing, syntax error near SHORTCUT [.\AMMCSCRIPTPARSER_ACTOR.fdc:11811
Goto labels inside switch blocks are placed inside another block by the instrumentor. The compiler cannot compile this correctly and reports a syntax error. Example: int foo::goto_error(int x, char*s, char *s1) { switch (x) { case 1: goto Where; case 2: x++; goto Where; case 3: // int y; /*as a workaround uncomment this */ Where: x+10; if (strcmp(s, s1)!=0) { cout << "we will, we will, fix this..."; } } return(x+10); }
Memory optimization often implies use of non aligned data that can create a problem when trying to detect memory leaks.
When running the base station example on RedHat Linux 7.2 2.4.7-10smp after adding the
--atl_multi_threaded=1 to the instrumentor, the program that is generated does not run
to completion. Under the debugger it stops in __sigsuspend. This is due to a nested mutex lock that provokes a deadlock.
The instrumentor attolccp terminates abnormally when the option -mempro is used.
When running an application instrumented with the option DUMPRETURNING, the application crashes during the trace dump.
With a C++ code the instrumentor generates bad C++ code which contains incorrect positioning of brackets. Error like : nrl.cpp nrl.cpp: Instrumenting... nrl.cpp: Compiling... nrl.aug.cpp C:\Clients\Elektrobit\PbCoverageCPP\nrl.cpp(24) : error C2226: syntax error : unexpected type 'std::complex' Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
When opening the coverage report, only the navigator window can be seen because it is too big.
With the -pedantic option, gcc 2.96 errors on malloc and free not having the same prototype.
They should throw exceptions but the overloaded functions provided in the Target Deployment
Port do not throw exceptions.
When a very large classpath is used, the error "Arg too large" occurs.
attolcc does not instrument the source code when the compiler option -MD is specified. Example attolcc -- gcc -MD -c toto.c
Instrumentor does not accept "friend T;" when T is a template Example: template <class T> class X : public Y { friend T; };
There is a problem in the runtime tracing feature with implicit copy constructors.
The following error message is given: ':: ' is not an immediate base class of ' :: '
With runtime tracing, copy constructors are created for unions which do not compile with GNU 2.96
as all elements of the union were copied.
Creating a 'External Command' using the Studio environment variable like $$NODENAME, $$NODEPATH,
$$TARGETDIR, $$BINDIR, ... does not work. Example : External Command = "cmd /c dir $$NODEPATH"
After "Stop" for a running build process, the message "Build completed" is shown.
This only occurs with projects referencing a big number of files. Studio is checking for intermediate files (perl.exe continues to run in the background).
When instrumenting, the following error message occurs: P+Linux attolccp: "/usr/include/asm/spinlock.h", line 168: error #20: identifier "__builtin_constant_p" is undefined "__builtin_constant_p()" is a function that is built into the compiler so it does not have a prototype, hence the error message
STATUS_ACCESS_VIOLATION raised during Runtime Analysis activity creation if ENV_PATH variable
in TDP ini files set too long.
When instrumenting source code that uses variable argument macros va_arg() etc. The following errors occur: P+Linux attolcc1 - ERROR: syntax error near int [va_arg.c,12] P+Linux attolcc1: Cannot recover from earlier errors ... P+Linux attolcc - The following command-line caused an error: attolcc1 /tmp/_atc_51_22800.i /tmp/_atc_53_22800.c atct.def -bloc -proc=ret -mempro -perfpro -trace -COMMENT= Preprocessing command: gcc va_arg.c -g -O0 -Wall -pedantic -E>tmp-file P+Linux attolcc clinuxgnu - ERROR: Error during code instrumentation
When instrumenting source code that uses variable argument macros va_arg() etc. The following errors occur: P+Linux attolccp: "va_arg.cpp", line 9: error #20: identifier "__builtin_stdarg_start" is undefined __builtin_stdarg_start((ap),numArgs); ^ P+Linux attolccp: "va_arg.cpp", line 11: error #254: type name is not allowed Total += __builtin_va_arg (ap, int); ^ P+Linux attolccp: "va_arg.cpp", line 11: error #20: identifier "__builtin_va_arg" is undefined Total += __builtin_va_arg (ap, int); ^ P+Linux attolccp: "va_arg.cpp", line 13: error #20: identifier "__builtin_va_end" is undefined __builtin_va_end (ap); ^ P+Linux attolccp - FATAL ERROR: Syntax and/or semantic errors in source file, in strumentation cancelled
The License Administration Guide document provided with the product refers to Rational Suite, but in fact also applies to Rational Test RealTime as well as other Rational Software products.
The option -g3 results in the #defines remaining in the .i file. It also causes the predefined defines "__DATE__", "__TIME__" etc to be redefined at the beginning of the file. After instrumentation the compilation of the instrumented file results in some warning of the following type: file.c:0:warning: `__DATE__' redefined The option -Werror converts the warning to an error and the compilation stops.
Work-Around :
There are 2 workarounds but both require modification of the compilation flags: 1. Don't use -g3, use -g2 or even simpler -g 2. Don't use -Werror in this case the redefinition warning is no longer an error and the compilation will continue.
When you exclude an unit from instrumentation in Java, it is necessary to add manually the package name. For example, you want to exclude from the instrumentation the UmtsServer Class: Setting / Runtime Analysis / General Runtime Analysis / Selective Instrumentation Selective Unit Instrumentation = UmtsServer is proposed automatically. You must add manually the package name. Selective Unit Instrumentation = package_name.UmtsServer So, in this case the correct setting to enter is: Selective Unit Instrumentation = baseStation.UmtsServer
Work-Around :
Set manually the package name before the class name for exclusion.
When editing a file the save icon becomes accessible. If another file is selected in the asset browser then the save icon becomes inaccessible. It is then difficult to save the modifications in the file.
Work-Around :
1. Click 'x' or right-click the file tab and select close. A dialog appears asking if the file should be saved. Obviously, the file must be re-opened to continue editing. 2. Create a second tab, either by opening another file or raising the Start page (ctrl+alt+r). Move between the tabs and the Save icon is reset.
JVMPI classes are not filtered in the runtime tracing report. This affects all runtime tracing reports other than the one that is dynamically generated during application execution.
Work-Around :
JVMPI is only used by the memory profiling feature. When memory profiling is not performed, the JVMPI classes will not appear in a runtime tracing report.
Trace C++ - 2002.05.00/1165 (2002) The by default sequence diagram printing functionality does not work correctly
On Unix and Windows, the by default UML/SD printing functionality does not work correctly (when all the pages are selected for printing, only the first page is printed). This printing defect occurs only for the UML/SD diagram.Work-Around :Select a range to print for example page 1 to 6.