New issue
Advanced search Search tips

Issue 691714 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug

Blocking:
issue 82385



Sign in to add a comment

clang win release component bots broken

Project Member Reported by thakis@chromium.org, Feb 13 2017

Issue description

with pinned too; e.g. on https://build.chromium.org/p/chromium.fyi/builders/CrWinClang%28shared%29/builds/15389 (that's the first red)

FAILED: blink_web.dll blink_web.dll.lib blink_web.dll.pdb 
C:/b/depot_tools/python276_bin/python.exe ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x86 False link.exe /nologo /IMPLIB:./blink_web.dll.lib /DLL /OUT:./blink_web.dll /PDB:./blink_web.dll.pdb @./blink_web.dll.rsp
LINK : ./blink_web.dll not found or not built by the last incremental link; performing full link

ExternalPopupMenu.obj : error LNK2019: unresolved external symbol "public: void __thiscall blink::WebCoalescedInputEvent::WebInputEventDeleter::operator()(class blink::WebInputEvent *)const " (??RWebInputEventDeleter@WebCoalescedInputEvent@blink@@QBEXPAVWebInputEvent@2@@Z) referenced in function "private: void __thiscall blink::ExternalPopupMenu::dispatchEvent(class blink::TimerBase *)" (?dispatchEvent@ExternalPopupMenu@blink@@AAEXPAVTimerBase@2@@Z)

WebViewImpl.obj : error LNK2001: unresolved external symbol "public: void __thiscall blink::WebCoalescedInputEvent::WebInputEventDeleter::operator()(class blink::WebInputEvent *)const " (??RWebInputEventDeleter@WebCoalescedInputEvent@blink@@QBEXPAVWebInputEvent@2@@Z)



Probably caused by https://codereview.chromium.org/2683043004 but we thought we had squashed all the cases where clang-cl behaves differently than cl.exe -- apparently not, or it's broken in release component builds there too and we just don't have bots for that elsewhere.
 

Comment 1 by thakis@chromium.org, Feb 13 2017

Probably cause the dtor calls operator() -- I remember that we check if the dtor calls certain types of things, and we probably just don't look for operator calls or something.

Comment 2 by thakis@chromium.org, Feb 13 2017

i.e. maybe we need something like http://llvm.org/viewvc/llvm-project?view=revision&revision=281395 for operator calls?

Comment 3 by thakis@chromium.org, Feb 13 2017

https://codereview.chromium.org/2694053003/ works around it for now
Project Member

Comment 4 by bugdroid1@chromium.org, Feb 13 2017

Comment 5 by h...@chromium.org, Feb 14 2017

Status: Started (was: Untriaged)
Turns out it's not about the operator calls, but about references to destructors not explicitly showing up in the AST.

Richard had an idea for how to do this, though.

Comment 6 by h...@chromium.org, Feb 15 2017

There's something else going on, besides the destructor thing I mentioned above (which is a bug, but might not be the cause here).

WebCoalescedInputEvent is dllimport, but it has a std::unique_ptr<WebInputEvent,WebInputEventDeleter> member, which is not a dllimport class, so WebCoalescedInputEvents destructor should not be emitted available_externally.

However, it seems something is happening because of the using declaration,

  using WebScopedInputEvent =
      std::unique_ptr<WebInputEvent, WebInputEventDeleter>;

I suspect because that's in the dllimported class dllimport rubs off on, WebScopedInputEvent and we do emit WebCoalescedInputEvent's destructor available_externally, and that's the first step towards how we end up referencing that operator() in ExternalPopupMenu::dispatchEvent.

I'll need to look at this some more tomorrow.

Comment 7 by h...@chromium.org, Feb 15 2017

Re #6, the problem seems less mysterious today: we were simply failing to look through typedefs and such.

Verifying my fix now.

Comment 8 by h...@chromium.org, Feb 15 2017

Status: Fixed (was: Started)
Clang r295257 has the fix.
Project Member

Comment 9 by bugdroid1@chromium.org, Nov 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d9c589fda01fe33a8f9a499565c7fd9ca06d539

commit 2d9c589fda01fe33a8f9a499565c7fd9ca06d539
Author: Charlie Andrews <charliea@chromium.org>
Date: Tue Nov 20 23:58:48 2018

Remove TODO about removing BLINK_PLATFORM_EXPORT on WebInputEventDeleter

BLINK_PLATFORM_EXPORT can't be safely removed without causing a linker
error on Windows and this fact isn't going away.

Bug:  691714 
Change-Id: Ie2399c50877e16fa80f9cb3ebe455c56493e6cce
Reviewed-on: https://chromium-review.googlesource.com/c/1343291
Commit-Queue: Charlie Andrews <charliea@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Hans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609857}
[modify] https://crrev.com/2d9c589fda01fe33a8f9a499565c7fd9ca06d539/third_party/blink/public/platform/web_coalesced_input_event.h

Sign in to add a comment