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); }
Using Test RealTime 2002 Release 2 with the GNAT 3.11 compiler the following error occurs. TestRT-E-DEBORCASE, [tu_active_area__set_get.ptu:11] CASE overflow in add_all_derived_child_packages : bad type module
While testing template classes a compiler error on RTRT_CONCAT_MACRO occurs because the macro is passed a template type that contains a comma.
Coverage results are correct when run in "pass" mode, but not when run in "compact" mode.
Instrumentor does not declare probes for all generic instantiations. Generated code does not compile.
When instrumenting, a variable type is replaced by its general type instead of correctly using its subtype.
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 some 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.
The TestRT plugin to Rose RealTime does not generate a makefile that makes. The make program reports an error message about a circular dependency.
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"
When attempting to generate a Coverage report on HP-UX, Studio crashes when the number of .fdc files is ~>100.
In the Virtual Tester Driver Configuration (right side), the modifications of the settings are
not saved after closing the window.
The failure happens when trying to register key in the registry database.
After "Stop" for a running build process, the message "Build completed" is shown.
Clicking on build does not relaunch a build process.
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).
The second time you perform a replace activity (within the PTU editor), the search string is
remembered, but not its corresponding replacement string.
In the directory of intermediate files (with TDP Name), if you put a file which is needed for
execution (ex: a dll) and if you then make a clear all, this file will be deleted.
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
Generation of context clause of the separate unit is incorrect (specifies incorrect parent unit).
Error message TestRT-E-DEBORCASE at preprocessing.
When in separate mode (keyword BEGIN[, ]): The generated main does not contain the context clause for the code under test.
Partial initialization results in incorrect type selection for default values.
If a Stub parameter is of a class-wide type, the stub calls are not recognized correctly
Important (automatically generated) comments may be missing. Those comments could explain the failed status of a Test (because an Exception was raised during execution for example).
If .alk contains relative paths (with ".\"), the preprocessor does not accept the file.
In Ada language, a COMMENT instruction between SERVICE and TEST will be not written in the report.
When generating a stub for a function with the following prototype unsigned int func1(int length, long int array[]); the test script generator generates a STUB that does not compile.
Work-Around :
Manually edit the test script generated to change the type from _in to _no or to add a size to the array argument.
Coverage results are now ouput into the file "atlout.spt" and in create mode. The file 'attolcov.tio' is created by calling the batch tool atlsplit on the 'atlout.spt' file. The default filename 'attolcov.tio' can still be changed using the "ATC_TRACES" environment variable. The test timestamp (line DT in the tio file) is written by the atlsplit tool and not anymore by the TDP.
In System Testing for C, the instruction PRINT does not accept floating point values. Only integer values are displayed in the report.
In System Testing for C, the option -RA=ERR on the report viewer does not generate a report with only variables in error, in fact no variables are visible at all.
Work-Around :
Use the option RA=TEST which shows all the variables in test that is in error and nothing in correct tests.
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.
Windows 2000 Control Panel "Add/Remove Programs" tool tells you that Rational Test RealTime size is about 1.35 Mo. Windows 2000 explorer tells you that the Rational\TestRealTime folder is about 65 Mo.
When writing stubs of functions that have extern "C" linkage. Object Testing may produce a warning message during the compilation of the test script. This warning message indicates: TestRT attolccp: warning: math.stb:25: return type does not match the function prototype > extern "C" int assertcsd(int i)
Work-Around :
Ignore the warning.
The Component Testing for C++ Wizard does not generate appropriate stubs for static fields. If a stubbed class contains a static field, and this field is used by the test script and/or the tested source code, the linker will report an undefined reference to the static field. The workaround consists in adding manually the missing definition to the stub file (.stb), as shown in the example below: ##a_type stubbed_class::static_field;
Work-Around :
Add the line manually to the STB file.
On non-Microsoft TDP: If "Settings -> Runtime Observation -> General -> Misc. Runtime Observation Options -> C++ Analysis -> Instantiate all templates even if not used" is not checked (this is the default), AND if some methods defined within a template class are stubbed, AND if these methods are used in the code before the definition of the replacing stub is seen THEN these stubbed methods will not be instrumented by any of the PurifyLT,
QuantifyLT, Coverage or Trace features, nor by the OTC assertions. This is usually
not a problem with PurifyLT, QuantifyLT, Coverage or Trace, because most of the
time stubs are excluded from these features' instrumentation. However it is a real defect regarding OTC assertions because the stubs should be OTC-tested, since they are methods of a tested class.
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 first running the examples on a UNIX machine, the TDP selected by default is "C Visual 6". The Build stops with an error.
Work-Around :
Select the correct TDP for the given operating system.
TheXML tags is not generated in the metric file. Only the tags is generated.
When a test report, containing failed tests, is open and the failed tests only button is activated, when the report and the project are closed and then when a new test result is open, then, the failed test only button is activated but all tests (passed/failed) are displayed.
Work-Around :
click one time in the 'All test results' icon
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.
Adding the NEXT_STEP instruction in a ptu does not write it in bold.
When using the wizard to generate a test node based on a procedure only, the unit is not
shown in the dialog to select the code under test.
Work-Around :
Press cancel within the wizard, go to the project window, select the
Asset view > "By File," select the file containing the procedure to be tested,
and click on the right mouse button. Select the "Test..." field.
The wizard will reopen, and this time the Unit under test is correctly selected.
Proceed as usual.
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.
Running the GUI from a Solaris session displaying to a Exceed version 5.00 server running
on Windows 2000 causes the server to abort.
Work-Around :
Upgrade to Exceed 7.0 or later.
Limited choice of colors available for the GUI on HP-UX workstations running CDE on a 256 color display.
Work-Around :
Use the QtConfig tool to customize the color map.
It is not possible to set the -RA flag on the report generator from the settings dialog box.
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.
If the stub is defined for X calls, and X+Y calls come in, no warning and no error is generated.
Work-Around :
Correct the Stub dimension: DEFINE STUBfoo <dimension> END DEFINE
Inline function declared in .h files not recognized. PTU does not contain services for them.
Work-Around :
Write the Service by hand.
Example : int test(p1, p2) int p1; char p2[4]; { int result = p1; int value = 0; value = f1(p2); result += f2 (value); return result; } A stub will be generated for f1 but not for f2. If the prototype exists, the stub will be generated.
Stubbing a function with the following prototype: DEFINE STUB adc_close_c #adc_Result_t func(const void * _in Data_Ptr); END DEFINE produces code that does not compile. NOTE: void can be replaced with any type except char which is handled differently.
Work-Around :
In the test script, create a new type as follows: #typedef const void * atl_void_const; and then define the stub as follows: DEFINE STUB adc_close_c #adc_Result_t adc_Qadc555Init(atl_void_const _in Data_Ptr); END DEFINE
Bad code generation when you have a macro calling itself : Example : C-File: DMTL_GLOB_STATE_1 dmtl_glob_state_1; H.-File: typedef struct { struct { u32 lv_rough_leak_susp :1; }bitfield; }DMTL_GLOB_STATE_1; PTU-File: VAR lv_rough_leak_susp, int, INIT = 1, EV =INIT the preprocessor expands lv_rough_leak_susp twice if the macro is defined like that: #define lv_rough_leak_susp dmtl_glob_state_1.bitfield.lv_rough_leak_susp In generated code you obtain : dmtl_glob_state_1.bitfield.dmtl_glob_state_1.bitfield.lv_rough_leak_susp = 1;
Work-Around :
In the test script, undefine the macro and use the normal C name of the field.
When using the '&' for giving instructions spanning more than one line, the error message gives the last line of this instruction as reference.