[llvm-bugs] [Bug 49602] New: _Fract caused SegFault in clang

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Mar 15 23:57:31 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=49602

            Bug ID: 49602
           Summary: _Fract caused SegFault in clang
           Product: clang
           Version: 10.0
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C
          Assignee: unassignedclangbugs at nondot.org
          Reporter: jagenheim at gmail.com
                CC: blitzrakete at gmail.com, dgregor at apple.com,
                    erik.pilkington at gmail.com, llvm-bugs at lists.llvm.org,
                    richard-llvm at metafoo.co.uk

Created attachment 24650
  --> https://bugs.llvm.org/attachment.cgi?id=24650&action=edit
Preprocessed C file

I wanted to test converting from floats to _Fract. Clang crashed.

Clang used is 10.0.0-4ubuntu1 running Ubuntu in a WSL ubuntu environment.

========= C PROGRAM =============

#include <stdio.h>

int main() {

    float tst= 0.3f;

    // Convert float to fixed point
    tst *= 1LL  << 31;
    tst += 0.5f;
    int tst2 = (int)tst;
    _Fract fract = (_Fract)tst2;
    // Add something to fixed point
    fract += 0.5r;
    // Convert back to float again
    tst2 = (int)fract;
    tst2 /= 1LL << 31;
    tst = (float)tst2;

    printf("%f\n", tst);
}


======== STACK TRACE OUTPUT ============

Stack dump:
0.      Program arguments: /usr/lib/llvm-10/bin/clang -cc1 -triple
x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier
-discard-value-names -main-file-name test.c -mrelocation-model static
-mthread-model posix -mframe-pointer=all -fmath-errno -fno-rounding-math
-masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64
-dwarf-column-info -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir
/usr/lib/llvm-10/lib/clang/10.0.0 -internal-isystem /usr/local/include
-internal-isystem /usr/lib/llvm-10/lib/clang/10.0.0/include
-internal-externc-isystem /usr/include/x86_64-linux-gnu
-internal-externc-isystem /include -internal-externc-isystem /usr/include
-ffixed-point -fdebug-compilation-dir /home/fredde/test/fixp -ferror-limit 19
-fmessage-length 0 -fgnuc-version=4.2.1 -fobjc-runtime=gcc
-fdiagnostics-show-option -faddrsig -o /tmp/test-0b8e7e.o -x c test.c 
1.      <eof> parser at end of file
2.      test.c:3:5: LLVM IR generation of declaration 'main'
3.      test.c:3:5: Generating code for declaration 'main'
 #0 0x00007f98ecead4ff llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x9814ff)
 #1 0x00007f98eceab7b0 llvm::sys::RunSignalHandlers()
(/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x97f7b0)
 #2 0x00007f98eceadac5 (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x981ac5)
 #3 0x00007f98f367d3c0 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
 #4 0x00007f98ecf27b28 (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x9fbb28)
 #5 0x00007f98ecf1f2b9 (/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x9f32b9)
 #6 0x00007f98ecf1d370 llvm::ConstantExpr::getCast(unsigned int,
llvm::Constant*, llvm::Type*, bool)
(/lib/x86_64-linux-gnu/libLLVM-10.so.1+0x9f1370)
 #7 0x00007f98f210239f (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x154239f)
 #8 0x00007f98f21018c6 (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x15418c6)
 #9 0x00007f98f20f5bfb (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1535bfb)
#10 0x00007f98f20fa1b8 (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x153a1b8)
#11 0x00007f98f20f135f
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x153135f)
#12 0x00007f98f20b0948 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr
const*, clang::CodeGen::AggValueSlot, bool)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x14f0948)
#13 0x00007f98f20b08f9
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x14f08f9)
#14 0x00007f98f21e45c4 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt
const*, llvm::ArrayRef<clang::Attr const*>)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x16245c4)
#15 0x00007f98f21ee2fc
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x162e2fc)
#16 0x00007f98f222fc62
clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x166fc62)
#17 0x00007f98f22304bf
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x16704bf)
#18 0x00007f98f2247cfd
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl,
llvm::GlobalValue*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1687cfd)
#19 0x00007f98f2241e52
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*) (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1681e52)
#20 0x00007f98f224a662
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x168a662)
#21 0x00007f98f22b9dbf (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x16f9dbf)
#22 0x00007f98f22279c2 (/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x16679c2)
#23 0x00007f98f1415ba4 clang::ParseAST(clang::Sema&, bool, bool)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x855ba4)
#24 0x00007f98f288be58 clang::FrontendAction::Execute()
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1ccbe58)
#25 0x00007f98f28448a1
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1c848a1)
#26 0x00007f98f28efdaf
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/lib/x86_64-linux-gnu/libclang-cpp.so.10+0x1d2fdaf)
#27 0x000000000041229d cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/usr/lib/llvm-10/bin/clang+0x41229d)
#28 0x00000000004105b1 (/usr/lib/llvm-10/bin/clang+0x4105b1)
#29 0x000000000041036d main (/usr/lib/llvm-10/bin/clang+0x41036d)
#30 0x00007f98ec0140b3 __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x270b3)
#31 0x000000000040d7ce _start (/usr/lib/llvm-10/bin/clang+0x40d7ce)
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 10.0.0-4ubuntu1 
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg: PLEASE submit a bug report to
https://bugs.llvm.org/ and include the crash backtrace, preprocessed source,
and associated run script.
clang: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-4fec80.c
clang: note: diagnostic msg: /tmp/test-4fec80.sh
clang: note: diagnostic msg: 

********************


======== Diagnostic msg C ==========

<attached due to filesize>

======== Diagnostic msg SH ==========

# Crash reproducer for clang version 10.0.0-4ubuntu1 
# Driver args: "-ffixed-point" "-o" "test" "test.c"
# Original command:  "/usr/lib/llvm-10/bin/clang" "-cc1" "-triple"
"x86_64-pc-linux-gnu" "-emit-obj" "-mrelax-all" "-disable-free"
"-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "test.c"
"-mrelocation-model" "static" "-mthread-model" "posix" "-mframe-pointer=all"
"-fmath-errno" "-fno-rounding-math" "-masm-verbose" "-mconstructor-aliases"
"-munwind-tables" "-target-cpu" "x86-64" "-dwarf-column-info"
"-fno-split-dwarf-inlining" "-debugger-tuning=gdb" "-resource-dir"
"/usr/lib/llvm-10/lib/clang/10.0.0" "-internal-isystem" "/usr/local/include"
"-internal-isystem" "/usr/lib/llvm-10/lib/clang/10.0.0/include"
"-internal-externc-isystem" "/usr/include/x86_64-linux-gnu"
"-internal-externc-isystem" "/include" "-internal-externc-isystem"
"/usr/include" "-ffixed-point" "-fdebug-compilation-dir"
"/home/fredde/test/fixp" "-ferror-limit" "19" "-fmessage-length" "0"
"-fgnuc-version=4.2.1" "-fobjc-runtime=gcc" "-fdiagnostics-show-option"
"-faddrsig" "-o" "/tmp/test-0b8e7e.o" "-x" "c" "test.c"
 "/usr/lib/llvm-10/bin/clang" "-cc1" "-triple" "x86_64-pc-linux-gnu"
"-emit-obj" "-mrelax-all" "-disable-free" "-disable-llvm-verifier"
"-discard-value-names" "-main-file-name" "test.c" "-mrelocation-model" "static"
"-mthread-model" "posix" "-mframe-pointer=all" "-fmath-errno"
"-fno-rounding-math" "-masm-verbose" "-mconstructor-aliases" "-munwind-tables"
"-target-cpu" "x86-64" "-dwarf-column-info" "-fno-split-dwarf-inlining"
"-debugger-tuning=gdb" "-ffixed-point" "-ferror-limit" "19" "-fmessage-length"
"0" "-fgnuc-version=4.2.1" "-fobjc-runtime=gcc" "-fdiagnostics-show-option"
"-faddrsig" "-x" "c" "test-4fec80.c"

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210316/8e45eeaa/attachment-0001.html>


More information about the llvm-bugs mailing list