Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/TMS320C6746: Segmentation Fault

Part Number: TMS320C6746

Tool/software: TI C/C++ Compiler

I'm a segmentation fault when trying to compile a file.

Preprocessed file attached with build console output below:

*** Build of configuration QualTest for project Test ****

"C:\\ti\\ccsv7\\utils\\bin\\gmake" -k -j 8 tests/QualTest2/QualTest2.obj -O
'Building file: ../tests/QualTest2/QualTest2.cpp'
'Invoking: C6000 Compiler'
"C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.3/bin/cl6x" -mv6740 -Ooff -ms0 --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.3/include" --include_path="C:/p4clients/palmtree/Development/project/VHF_2.0/SW/platform/Avidyne/Radio" --include_path="C:/p4clients/palmtree/Development/project/VHF_2.0/SW/platform/Avidyne/Radio/Messages" --include_path="C:/p4clients/palmtree/Development/project/VHF_2.0/SW/Test/avitest/include" -g --define=c6746 --diag_warning=225 --diag_wrap=off --mem_model:data=far --preproc_with_compile --preproc_dependency="tests/QualTest2/QualTest2.d" --obj_directory="tests/QualTest2" "../tests/QualTest2/QualTest2.cpp"

>> Compilation failure
tests/QualTest2/subdir_rules.mk:9: recipe for target 'tests/QualTest2/QualTest2.obj' failed

INTERNAL ERROR: C:\ti\ccsv7\tools\compiler\ti-cgt-c6000_8.1.3\bin\acpia6x.exe experienced a segmentation fault
while processing function (unknown or file scope) file (unknown) line 0

This is caused by a defect in the compiler itself. TI Customer
Support may be able to suggest a workaround to avoid this.

Upgrading to the newest version of the compiler may fix this problem.

Contact TI in the E2E support forums at http://e2e.ti.com under
"Development Tools", "TI C/C++ Compiler". See the link titled
"Submitting an issue". Include this ENTIRE error message and a
copy of the .pp file created when option --preproc_with_comment
(-ppc) is used.

gmake: *** [tests/QualTest2/QualTest2.obj] Error 1

**** Build Finished ****

QualTest2.tar

  • Thank you for notifying us of this problem, and submitting a concise test case.  I can reproduce the same diagnostic.  I filed CODEGEN-4942 in the SDOWP system to have this investigated.  You are welcome to follow it with the SDOWP link below in my signature.

    Thanks and regards,

    -George

  • Thanks for your quick response. I tried to look at SDOWP with the link you provided, but cannot. I get a popup that says, "ClearQuest login of user: This login is forbidden: CRMMD1881E Invalid Creditials: Either the login name or the password is incorrect.

    I also tried to manually login in with my TI userid/password, and readonly/readonly. Neither of those worked either.
  • The problem with SDOWP is resolved.  Please try again.

    Thanks and regards,

    -George

  • SDOWP is working now. Thanks

  • Hi Steven,

    We recently started looking at this bug and have posted a workaround.  I wanted to make sure that you saw it.  If you are still experiencing this bug, please try the workaround and see if it works for your code.  This bug relates to a relatively obscure source feature so we are not yet sure what a fix will entail and whether one will be forthcoming.

    This bug occurs when a conditional clause includes a function call, and that function call has a GCC statement as an argument. 
    For example: 
    if (func(arg1, ..., ({gcc statement}))) { ... }

    Moving the function call out of the conditional clause and saving its result to a temporary, then using that temporary in the conditional should prevent the bug. 
    For example: 
    bool temp = func(arg1, ..., ({gcc statement})); 
    if (temp) { ... }

    Please try this and see if it works for you.  In the version of the test case I have, the error occurred in the following pre-processed source line:

    if ( (AviTest::AssertEqualComparator(1, 0, "1", "0", ({ const char *orig = "../tests/QualTest2/QualTest2.cpp"; char *ret = strrchr(const_cast<char* >(orig), '/'); if( ret != 0 ) ret = ret + 1; else ret = const_cast<char* >(orig); (const char*)ret; }), 7, AviTest::TestBattery::Get(). GetCurrentTest())) ) {...}

    Thanks,

    Anna