public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/94808] New: [ICE] [Regression] Segfault during diagnostics from concept check failure
@ 2020-04-27 20:33 eric.niebler at gmail dot com
  2020-04-28 12:12 ` [Bug c++/94808] " ppalka at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: eric.niebler at gmail dot com @ 2020-04-27 20:33 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94808

            Bug ID: 94808
           Summary: [ICE] [Regression] Segfault during diagnostics from
                    concept check failure
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eric.niebler at gmail dot com
  Target Milestone: ---

Created attachment 48385
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48385&action=edit
Unreduced, preprocessed source

This problem reproduces on trunk built today (4/27/2020). Compile the attached
preprocessed source with the attached script (flags: -std=gnu++2a).

I expect to see a diagnostic since the program should not satisfy the concept
checks. Instead, during diagnostic reporting I see the following:

/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp: In member function
‘virtual void P0443_connect_with_executor_Test::TestBody()’:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:81:53: error: no match
for call to ‘(const unifex::_connect::_fn) ({anonymous}::inline_executor,
P0443_connect_with_executor_Test::TestBody()::_receiver)’
   81 |   auto op = connect(inline_executor{}, _receiver{&i});
      |                                                     ^
In file included from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/executor_concepts.hpp:174,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:17:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:224:10:
note: candidate: ‘template<class Sender, class Receiver>  requires
(receiver<Receiver, std::__exception_ptr::exception_ptr>) && ((sender<Sender>)
&& (tag_invocable<unifex::_connect::_fn, Sender, Receiver>))
unifex::_tag_invoke::tag_invoke_result_t<unifex::_connect::_fn, Sender,
Receiver> unifex::_connect::_fn::operator()(Sender&&, Receiver&&) const’
  224 |     auto operator()(Sender&& s, Receiver&& r) const
      |          ^~~~~~~~
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:224:10:
note:   template argument deduction/substitution failed:
In file included from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/executor_concepts.hpp:20,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:17:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/tag_invoke.hpp: In
substitution of ‘template<class CPO, class ... Args> using tag_invoke_result_t
= decltype (unifex::_tag_invoke::tag_invoke(static_cast<CPO&& (*)()
noexcept>(nullptr)(), static_cast<Args&& (*)()noexcept (true)>(nullptr)()...))
[with CPO = unifex::_connect::_fn; Args = {{anonymous}::inline_executor,
P0443_connect_with_executor_Test::TestBody()::_receiver}]’:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:224:10:
  required by substitution of ‘template<class Sender, class Receiver>  requires
(receiver<Receiver, std::__exception_ptr::exception_ptr>) && ((sender<Sender>)
&& (tag_invocable<unifex::_connect::_fn, Sender, Receiver>))
unifex::_tag_invoke::tag_invoke_result_t<unifex::_connect::_fn, Sender,
Receiver> unifex::_connect::_fn::operator()(Sender&&, Receiver&&) const [with
Sender = {anonymous}::inline_executor; Receiver =
P0443_connect_with_executor_Test::TestBody()::_receiver]’
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:81:53:   required from
here
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/tag_invoke.hpp:39:19:
error: too many arguments to function ‘void unifex::_tag_invoke::tag_invoke()’
   39 |         tag_invoke(UNIFEX_DECLVAL(CPO && ), UNIFEX_DECLVAL(Args &&
)...));
      |        
~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/tag_invoke.hpp:26:10:
note: declared here
   26 |     void tag_invoke();
      |          ^~~~~~~~~~
In file included from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/executor_concepts.hpp:174,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:17:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:233:10:
note: candidate: ‘template<class Sender, class Receiver>  requires
(receiver<Receiver, std::__exception_ptr::exception_ptr>) && !((sender<Sender>)
&& (tag_invocable<unifex::_connect::_fn, Sender, Receiver>)) &&
((sender<Sender>) && (_has_member_connect<Sender, Receiver>))
unifex::_connect::_member_connect_result_t<Sender, Receiver>
unifex::_connect::_fn::operator()(Sender&&, Receiver&&) const’
  233 |     auto operator()(Sender&& s, Receiver&& r) const
      |          ^~~~~~~~
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:233:10:
note:   template argument deduction/substitution failed:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:
In substitution of ‘template<class Sender, class Receiver> using
_member_connect_result_t = decltype (static_cast<Sender&& (*)()
noexcept>(nullptr)().connect(static_cast<Receiver&& (*)()
noexcept>(nullptr)())) [with Sender = {anonymous}::inline_executor; Receiver =
P0443_connect_with_executor_Test::TestBody()::_receiver]’:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:233:10:
  required by substitution of ‘template<class Sender, class Receiver>  requires
(receiver<Receiver, std::__exception_ptr::exception_ptr>) && !((sender<Sender>)
&& (tag_invocable<unifex::_connect::_fn, Sender, Receiver>)) &&
((sender<Sender>) && (_has_member_connect<Sender, Receiver>))
unifex::_connect::_member_connect_result_t<Sender, Receiver>
unifex::_connect::_fn::operator()(Sender&&, Receiver&&) const [with Sender =
{anonymous}::inline_executor; Receiver =
P0443_connect_with_executor_Test::TestBody()::_receiver]’
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:81:53:   required from
here
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:189:64:
error: ‘struct {anonymous}::inline_executor’ has no member named ‘connect’
  189 |       decltype((UNIFEX_DECLVAL(Sender&&)).connect(
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             ^      
In file included from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/executor_concepts.hpp:174,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:17:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:243:10:
note: candidate: ‘unifex::_connect::_fn::_as_operation<Executor, Receiver>
unifex::_connect::_fn::operator()(Executor&&, Receiver&&) const [with Executor
= {anonymous}::inline_executor; Receiver =
P0443_connect_with_executor_Test::TestBody()::_receiver;
unifex::_connect::_fn::_as_operation<Executor, Receiver> =
unifex::_connect::_fn::_as_op<{anonymous}::inline_executor,
P0443_connect_with_executor_Test::TestBody()::_receiver>::type]’
  243 |     auto operator()(Executor&& e, Receiver&& r) const
      |          ^~~~~~~~
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:243:10:
note: constraints not satisfied
‘
In file included from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/sender_concepts.hpp:22,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/executor_concepts.hpp:174,
                 from /Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:17:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/receiver_concepts.hpp:
In instantiation of ‘unifex::_connect::_fn::_as_operation<Executor, Receiver>
unifex::_connect::_fn::operator()(Executor&&, Receiver&&) const [with Executor
= {anonymous}::inline_executor; Receiver =
P0443_connect_with_executor_Test::TestBody()::_receiver;
unifex::_connect::_fn::_as_operation<Executor, Receiver> =
unifex::_connect::_fn::_as_op<{anonymous}::inline_executor,
P0443_connect_with_executor_Test::TestBody()::_receiver>::type]’:
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/test/P0443_test.cpp:81:53:   required from
here
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/receiver_concepts.hpp:218:9:
  required for the satisfaction of ‘_receiver_of<R, An ...>’ [with R =
P0443_connect_with_executor_Test::TestBody::_receiver; An = {}]
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/receiver_concepts.hpp:227:3:
  required for the satisfaction of ‘receiver_of<Receiver>’ [with Receiver =
P0443_connect_with_executor_Test::TestBody::_receiver]
/Users/eniebler/Dropbox
(Facebook)/home/Code/Code/libunifex/source/../include/unifex/receiver_concepts.hpp:218:24:
  in requirements with
‘unifex::remove_cvref_t<P0443_connect_with_executor_Test::TestBody()::_receiver>&&
t’, Segmentation fault: 11
  218 | UNIFEX_CONCEPT_FRAGMENT(
      |                                                                        
      ^                           
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-04-29  2:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-27 20:33 [Bug c++/94808] New: [ICE] [Regression] Segfault during diagnostics from concept check failure eric.niebler at gmail dot com
2020-04-28 12:12 ` [Bug c++/94808] " ppalka at gcc dot gnu.org
2020-04-29  2:08 ` cvs-commit at gcc dot gnu.org
2020-04-29  2:10 ` ppalka at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).