Skip to content

Regression in Extension Bundle 1.165.50 on Linux: kernel32.dll DllNotFoundException prevents Logic Apps execution #1529

Description

@int292

Describe the Bug

All Logic App integration tests are currently failing due to a known kernel32 platform/runtime issue during shared test host initialization. Since every integration test uses the same startup infrastructure, initialization fails before individual workflows execute, causing a full-suite failure. This is an infrastructure/runtime problem rather than a workflow logic regression.

Extension Bundle Microsoft.Azure.Functions.ExtensionBundle.Workflows version 1.165.50 appears to contain Windows-only performance counter code that is executed on Linux.
This causes System.DllNotFoundException for kernel32.dll and blocks workflow execution in Linux CI/CD.

Environment

  • Extension Bundle: Microsoft.Azure.Functions.ExtensionBundle.Workflows 1.165.50
  • OS: Ubuntu Linux (GitHub Actions ubuntu-latest and custom Ubuntu runners)
  • Azure Functions Core Tools: v4
  • First observed: between 2026-05-07 and 2026-05-20
  • Last known good: bundle 1.138.54 (and older versions in our pipeline)

Actual Behavior

Workflows fail at runtime with DllNotFoundException for kernel32.dll.

Key stack trace excerpt

System.DllNotFoundException: Unable to load shared library 'kernel32.dll' or one of its dependencies. 
In order to help diagnose loading problems, consider using a tool like strace. 
If you're using glibc, consider setting the LD_DEBUG environment variable: 

/usr/local/lib/node_modules/azure-functions-core-tools/bin/in-proc8/kernel32.dll.so: cannot open shared object file: No such file or directory
/home/runner/.azure-functions-core-tools/Functions/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle.Workflows/1.165.50/bin/kernel32.dll.so: cannot open shared object file: No such file or directory
/usr/local/lib/node_modules/azure-functions-core-tools/bin/in-proc8/libkernel32.dll.so: cannot open shared object file: No such file or directory
/home/runner/.azure-functions-core-tools/Functions/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle.Workflows/1.165.50/bin/libkernel32.dll.so: cannot open shared object file: No such file or directory
/usr/local/lib/node_modules/azure-functions-core-tools/bin/in-proc8/kernel32.dll: cannot open shared object file: No such file or directory
/home/runner/.azure-functions-core-tools/Functions/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle.Workflows/1.165.50/bin/kernel32.dll: cannot open shared object file: No such file or directory
/usr/local/lib/node_modules/azure-functions-core-tools/bin/in-proc8/libkernel32.dll: cannot open shared object file: No such file or directory
/home/runner/.azure-functions-core-tools/Functions/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle.Workflows/1.165.50/bin/libkernel32.dll: cannot open shared object file: No such file or directory

   at Microsoft.Azure.Workflows.Common.PerformanceCounters.WebAppWorkerMemoryUsageCounter.NativeMethods.GlobalMemoryStatusEx(MEMORYSTATUSEX& lpBuffer)
   at Microsoft.Azure.Workflows.Common.PerformanceCounters.WebAppWorkerMemoryUsageCounter.ReadCounter()
   at Microsoft.Azure.Workflows.Common.PerformanceCounters.FlowPerformance.get_CurrentMemoryUtilization()
   at Microsoft.Azure.Workflows.Data.Configuration.EdgeResourceGovernancePolicy.<>c.<.ctor>b__21_0()
   at Microsoft.Azure.Workflows.Data.Configuration.EdgeResourceGovernancePolicy.ShouldThrottleWorkerPulsation(JobTriggerEvent trigger, String& throttledTraceMessage)
   at Microsoft.WindowsAzure.ResourceStack.Common.BackgroundJobs.Execution.JobDispatchingWorkerRegistry.PulseNextWaitingWorker(JobTriggerEvent trigger)
   at Microsoft.WindowsAzure.ResourceStack.Common.BackgroundJobs.Execution.JobDispatchingWorkerRegistry.PulseWorkers()
   at Microsoft.WindowsAzure.ResourceStack.Common.BackgroundJobs.JobDispatcherClient.PulseDispatchingWorkers(CancellationToken cancellationToken)

Observed root cause after decompilation

  • Assembly: Microsoft.Azure.Workflows.EventSource.Common.dll
  • Namespace: Microsoft.Azure.Workflows.Common.PerformanceCounters
  • Class: WebAppWorkerMemoryUsageCounter
  • Method: ReadCounter()
  • Uses hard-coded P/Invoke to kernel32.dll GlobalMemoryStatusEx without platform check.

Plan Type

Standard

Steps to Reproduce the Bug or Issue

Steps to Reproduce

  1. Create or run a Logic App Standard project using extension bundle 1.165.50.
  2. Run on Ubuntu (local container or GitHub Actions runner).
  3. Start host / execute workflow.
  4. Observe DllNotFoundException for kernel32.dll and workflow failure.

Workflow JSON

Screenshots or Videos

No response

Additional context

Expected Behavior

Logic Apps should execute on Linux, as supported by Azure Functions/Logic Apps and as seen in prior bundle versions.

Impact

  • Severity: High
  • Blocks Linux-based CI/CD for Logic Apps
  • Forces temporary migration to Windows runners or bundle pinning

Workarounds

  • Pin bundle version to 1.138.54 in host.json
  • Use Windows runners instead of Linux
  • WEBSITE_DISABLE_PERFORMANCE_COUNTERS=1 did not prevent this failure in our tests

Suggested Fix

Use cross-platform memory usage APIs, for example:

  • GC.GetGCMemoryInfo()
  • Process.WorkingSet64
    Or guard Windows-only calls with RuntimeInformation.IsOSPlatform(OSPlatform.Windows).

This report may be a related root cause for Linux-hosted scenarios.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions