[llvm-bugs] [Bug 28598] New: Assigning a gsl::span<const int> to a gsl::span<int> const causes segmentation fault during compilation.
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Jul 18 08:41:15 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=28598
Bug ID: 28598
Summary: Assigning a gsl::span<const int> to a gsl::span<int>
const causes segmentation fault during compilation.
Product: clang
Version: 3.8
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: ibbles at hotmail.com
CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
Classification: Unclassified
Created attachment 16760
--> https://llvm.org/bugs/attachment.cgi?id=16760&action=edit
Archive containing main.cpp producing the crash, output from crashed
compilation and log files created by clang.
# Overview
Using Microsoft's implementation of the Guidelines Support Library, available
at https://github.com/Microsoft/GSL.
Initializing a local variable of type `span<int> const` with the return value
of a function returning a `span<int const>` causes the compiler crash with a
segmentation fault. Notice the misplaced `const` in the declaration of the
local variable.
Attached is a reduced, i.e., with no dependence on GSL, version of span<T>
along with a use case that causes the crash, the output I get when I compile
and a pair of files that the clang error handler created.
# Steps to reproduce
Build the attached main.cpp file using
clang++-3.8 -std=c++14 -c -o main.o main.cpp
# Actual result
Crash in clang. Last few frames of stack trace is
#0 0x00007f6da13efcb8 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1+0x5a4cb8)
#1 0x00007f6da13edf56 llvm::sys::RunSignalHandlers()
(/usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1+0x5a2f56)
#2 0x00007f6da13ee0b9 (/usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1+0x5a30b9)
#3 0x00007f6da0510250 (/lib/x86_64-linux-gnu/libc.so.6+0x35250)
#4 0x00000000013b3607 (/usr/lib/llvm-3.8/bin/clang+0x13b3607)
#5 0x00000000013bb322 (/usr/lib/llvm-3.8/bin/clang+0x13bb322)
#6 0x00000000013bd729
clang::FormatASTNodeDiagnosticArgument(clang::DiagnosticsEngine::ArgumentKind,
long, llvm::StringRef, llvm::StringRef,
llvm::ArrayRef<std::pair<clang::DiagnosticsEngine::ArgumentKind, long> >,
llvm::SmallVectorImpl<char>&, void*, llvm::ArrayRef<long>)
(/usr/lib/llvm-3.8/bin/clang+0x13bd729)
#7 0x00000000006bc6b7 clang::Diagnostic::FormatDiagnostic(char const*, char
const*, llvm::SmallVectorImpl<char>&) const
(/usr/lib/llvm-3.8/bin/clang+0x6bc6b7)
Full stack trace available in the attachments.
# Expected results
Error message pointing out the invalid conversion.
# Build date and platform
Ubuntu 15.10.
clang from llvm's Ubuntu repositories:
deb http://llvm.org/apt/wily/ llvm-toolchain-wily-3.8 main.
clang version 3.8.1-svn271772-1~exp1 (branches/release_38)
Target: x86_64-unknown-linux-gnu
# Additional builds and platforms
Using clang++-3.7 I get no crash and the following expected output:
$ clang++-3.7 -std=c++14 -c -o main.o main.cpp
main.cpp:15:7: error: cannot initialize a member subobject of type
'add_pointer_t<int>' with an lvalue of type 'const add_pointer_t<const int>'
data_(other.data_)
^ ~~~~~~~~~~~
main.cpp:30:26: note: in instantiation of function template specialization
'span<int>::span<const int>' requested here
span<int> const span = getSpan();
^
1 error generated.
--
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/20160718/7a1c560e/attachment-0001.html>
More information about the llvm-bugs
mailing list