Troubleshooting

Home ] What's New ] Overview ] Registration ] Download ADIC ] Getting Started ] [ Troubleshooting ] FAQ ] Suggestions ] Discussion ] People ]

If you're experiencing a problem with ADIC software, please submit your bug report to our Bugzilla-based bug-tracking system. You may also want to check out our list of known problems.

If what you want to tell us is really more of a suggestion or a request for enhancement, please use our suggestion form instead.

Known Problems

The following is a list of some known problems with ADIC versions 1.1 and 1.2; we are working to correct them for the next release.

Problem Workaround

ADIC 1.1 crashes when processing files that include certain system headers (stdarg.h, vararg.h, libio.h) and gcc versions 2.96 or 3.x are used for the preprocessing step (the preprocessor command is in the $ADIC/adic.init.$ADIC_ARCH file).

Make sure that files processed by ADIC do not include the non-portable gcc system headers (i.e., headers that contain __builtin directives) or other headers that include them.
ADIC locks up when two or more files are being processed simultaneously (including files specified in a control script); for example: adiC -vd gradient func1.c func2.c Run ADIC with one file at a time; do not specify sources in a control script; for example: adiC -vd gradient func1.c; adiC -vd gradient func2.c
Perl error messages when running adiC (e.g., included packages not found). If $ADIC/bin/$ADIC_ARCH/perl exists, delete it or move it to a directory that is not on the path.
ADIC crashes when a program uses drand48 or similar system calls that return doubles. Please email adic@mcs.anl.gov for suggestions on workarounds for your specific problem.
An implicit typecast from an int to a float or double after a mod (%) operation causes ADIC to crash (e.g., d = i % 2 where i is an int and d is a double).  Use an explicit typecast, e.g., d = (double)(i % 2).
ADIC crashes when the source code includes a struct containing a comma-separated list of function pointers (example). Use explicit return types for each function pointer declaration (example).
On some platforms (Linux, RS6000), ADIC 1.1 crashes with a segmentation fault or an "illegal instruction" error message on exit. This does not affect the correctness of the differentiated code. Make sure the value of the ADIC environment variable is longer than 20 characters. If necessary, use symbolic links to shorten the path. On linux, use ADIC 1.2 or later.
Certain C++ features are not working. No workaraound at present.
Back to Top