New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 768516 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Sep 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug



Sign in to add a comment

CL breaking transport_security_generator

Project Member Reported by finnur@chromium.org, Sep 25 2017

Issue description

I'm having an issue with one of my CLs which is adding a dependency on a lib, which in turn causes breakage on the Win7 bots. 

An example breakage is here:
https://chromium-review.googlesource.com/c/chromium/src/+/649528/16

Essentially, there's a project (transport_security_generator) which is built early on and subsequently used during the compilation step. With my CL in place, transport_security_generator fails to load on Windows 7. I think this just needs a DLL to be delayload'ed, but the error message doesn't tell me which DLL it is.

I have been unable to repro this on my Win7 box, so I'm not sure how to proceed.
 

Comment 1 by finnur@chromium.org, Sep 25 2017

Cc: -bever...@google.com peter@chromium.org

Comment 2 by thakis@chromium.org, Sep 25 2017

Cc: scottmg@chromium.org
I don't think this is a trooper issue.

I'm away; maybe scottmg can help or knows who can.

Comment 3 by finnur@chromium.org, Sep 25 2017

Well, my thinking was it could be a trooper issue if the solution, for example, is to take a look in the event viewer of the bot that failed and find the proper error message there...? I think I recall seeing the full error added there. If someone thinks it shouldn't be a trooper issue, then feel free to remove the label.
Labels: -Infra-Troopers
Yeah, I don't think this is a trooper issue. We're certainly willing to help if there is a specific task you need assistance with. Let us know. Removing the label for now.
Discussing offline a bit.

I patched the CL in and compared imports in a debug build. Here's a before and after dump of transport_security_state_generator.exe and the dlls on which it depends base.dll, crcrypto.dll, and boringssl.txt.
before.txt
56.4 KB View Download
after.txt
66.8 KB View Download
With CL for *non*-delayloaded imports for base.dll:

    api-ms-win-core-processthreads-l1-1-2.dll
    api-ms-win-core-libraryloader-l1-2-0.dll
    api-ms-win-core-memory-l1-1-2.dll
    api-ms-win-core-debug-l1-1-1.dll
    api-ms-win-core-errorhandling-l1-1-1.dll
    api-ms-win-core-handle-l1-1-0.dll
    api-ms-win-core-rtlsupport-l1-2-0.dll
    api-ms-win-core-version-l1-1-0.dll
    api-ms-win-core-version-l1-1-1.dll
    api-ms-win-core-localization-l1-2-1.dll
    api-ms-win-core-file-l1-2-1.dll
    api-ms-win-core-file-l2-1-1.dll
    api-ms-win-core-file-l2-1-2.dll
    WS2_32.dll
    api-ms-win-core-sysinfo-l1-2-1.dll
    api-ms-win-security-base-l1-2-0.dll
    api-ms-win-core-io-l1-1-1.dll
    api-ms-win-core-libraryloader-l1-2-2.dll
    api-ms-win-core-console-l2-1-0.dll
    api-ms-win-core-console-l1-1-0.dll
    USERENV.dll
    api-ms-win-core-namedpipe-l1-2-0.dll
    CRYPTBASE.dll
    api-ms-win-core-string-l1-1-0.dll
    api-ms-win-core-synch-l1-2-1.dll
    api-ms-win-core-threadpool-l1-2-0.dll
    api-ms-win-core-com-l1-1-1.dll
    api-ms-win-eventing-provider-l1-1-0.dll
    api-ms-win-eventing-controller-l1-1-0.dll
    api-ms-win-eventing-classicprovider-l1-1-0.dll
    api-ms-win-core-registry-l1-1-0.dll
    OLEAUT32.dll
    api-ms-win-security-sddl-l1-1-0.dll
    api-ms-win-core-wow64-l1-1-0.dll
    api-ms-win-core-timezone-l1-1-0.dll
    api-ms-win-core-profile-l1-1-0.dll
    api-ms-win-core-realtime-l1-1-0.dll
    WINMM.dll
    ADVAPI32.dll
    dbghelp.dll
    GDI32.dll
    KERNEL32.dll
    PSAPI.DLL
    SHELL32.dll
    SHLWAPI.dll
    USER32.dll
    MSVCP140D.dll
    VCRUNTIME140D.dll
    ucrtbased.dll
    api-ms-win-core-interlocked-l1-2-0.dll


vs without this CL:

    USERENV.dll
    WINMM.dll
    ADVAPI32.dll
    dbghelp.dll
    GDI32.dll
    KERNEL32.dll
    ole32.dll
    OLEAUT32.dll
    PSAPI.DLL
    SHELL32.dll
    SHLWAPI.dll
    USER32.dll
    VERSION.dll
    WS2_32.dll
    MSVCP140D.dll
    VCRUNTIME140D.dll
    ucrtbased.dll

I don't entirely understand the CL, but it seems impractical to attempt to solve this via /delayload in any case.

Comment 8 by grt@chromium.org, Sep 26 2017

Microsoft seems to recommend delayloading these DLLs in https://msdn.microsoft.com/library/windows/desktop/dn933214.aspx. It's disappointing that it's turning out to be so problematic. I'm fine with the manual approach if that's the most tractable thing.
Ah, I didn't see that page. If that's recommended then I guess that's fine. The names just felt pretty internal to me and there's such a huge list if felt a bit ugly. But if  the names are stable then that seems not too bad.
Status: WontFix (was: Untriaged)
Ended up doing this differently (getprocaddr), so this is not an issue anymore.

Sign in to add a comment