java.nio.file.AccessDeniedException: /sys/kernel/tracing error during anlysis

  • ALM used Azure DevOps
  • CI system used Azure DevOps
  • Languages of the repository: C#, Typescript, React, terraform

Log excerpt of SonarCloudAnalyze@1


	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:57)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:51)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
Caused by: java.nio.file.AccessDeniedException: /sys/kernel/tracing
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:440)
	at java.base/java.nio.file.Files.newDirectoryStream(Files.java:482)
	at java.base/java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:301)
	at java.base/java.nio.file.FileTreeWalker.next(FileTreeWalker.java:374)
	at java.base/java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:83)
	... 47 common frames omitted

Pipeline

    steps:
      - task: UseDotNet@2
        displayName: Get DotNet SDK
        inputs:
          packageType: sdk
          useGlobalJson: true
      - task: SonarCloudPrepare@1
        displayName: "Prepare analysis configuration"
        inputs:
          SonarCloud: "SERVICE_CONNECTION_NAME"
          organization: ORGANIZATION_NAME
          projectKey: KEY
          extraProperties: |
            scm.provider=git
            sonar.typescript.tsconfigPaths=src/Client/tsconfig.json
          # sonar.log.level=DEBUG
          # sonar.javascript.node.maxspace=4096
          # sonar.sources=src,src/Client,deploy
          # sonar.exclusions=**/obj/**,**/bin/**,**/*.dll,**/node_modules/**,**/.yarn/**
          # sonar.cs.file.suffixes=.cs
          # sonar.cs.ignoreHeaderComments=True
      - task: DotNetCoreCLI@2
        displayName: Build
        inputs:
          command: build
          projects: ${{parameters.dotNetBuildProjects}}
          arguments: "--configuration ${{parameters.buildConfiguration}}"
      - task: DotNetCoreCLI@2
        displayName: Test
        inputs:
          command: test
          projects: ${{parameters.dotNetTestProjects}}
          arguments: '--configuration ${{parameters.buildConfiguration}} --collect "Code coverage"'
      - task: NodeTool@0
        inputs:
          versionSpec: "18.17.x"
      - task: Bash@3
        displayName: Yarn - Install
        inputs:
          targetType: inline
          workingDirectory: ${{parameters.clientPath}}
          script: |
            yarn set version 3.6.1
      - task: Bash@3
        displayName: Yarn - Install NPM packages
        inputs:
          targetType: inline
          workingDirectory: ${{parameters.clientPath}}
          script: |
            yarn install --immutable
      - task: Bash@3
        displayName: Yarn - Run jest
        inputs:
          targetType: inline
          workingDirectory: ${{parameters.clientPath}}
          script: |
            yarn test-ci
      - task: SonarCloudAnalyze@1
        displayName: SonarCloud - Run code analysis
      - task: SonarCloudPublish@1
        displayName: SonarCloud - Publish quality gate result

One of the .csproj files got extended as follows to include Terraform and Typescript files in analysis

  <ItemGroup>
    <Content Include="..\..\deploy\**\*.tf">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
    <Content Include="..\..\src\Client\**\*.*">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

Any ideas why this happens?

Hey there.

Is this an azure devops hosted agent or a self-hosted agent?

It’s an Azure DevOps hosted agent

Thanks.

I would suggest getting DEBUG level analysis logs and sharing them here (redacting as neccessary). You can get DEBUG level logs setting the sonar.verbose=true analysis parameter.

The pipeline step succeeds, however the error appears in the logs and TypeScript and Javascript files do not get analyzed properly (I see them in SonarCloud under Code but without any code smell which can’t be true for 12K lines)…

2023-10-02T12:27:46.7902090Z 12:27:46.755 DEBUG: the bridge server is up, no need to start.
2023-10-02T12:27:46.7902846Z 12:27:46.760 DEBUG: Files which didn't change will be part of UCFG generation only, other rules will not be executed
2023-10-02T12:27:46.7915736Z ##[error]12:27:46.748 ERROR: Failure during analysis, Node.js command to start the bridge was: node /home/vsts/work/1/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/bin/server 37251 127.0.0.1 /home/vsts/work/1/.sonarqube/out/.sonar true false /home/vsts/work/1/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/custom-rules17462751575190930663/package
java.io.UncheckedIOException: java.nio.file.AccessDeniedException: /sys/kernel/tracing
	at java.base/java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:87)
	at java.base/java.nio.file.FileTreeIterator.hasNext(FileTreeIterator.java:103)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:132)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.sonarsource.analyzer.commons.FileProvider.getMatchingFiles(FileProvider.java:45)
	at org.sonar.plugins.javascript.bridge.TsConfigProvider$PropertyTsConfigProvider.tsconfigs(TsConfigProvider.java:141)
	at org.sonar.plugins.javascript.bridge.TsConfigProvider.tsconfigs(TsConfigProvider.java:94)
	at org.sonar.plugins.javascript.bridge.TsConfigProvider.getTsConfigs(TsConfigProvider.java:89)
	at org.sonar.plugins.javascript.bridge.JsTsSensor.analyzeFiles(JsTsSensor.java:109)
	at org.sonar.plugins.javascript.bridge.AbstractBridgeSensor.execute(AbstractBridgeSensor.java:73)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:163)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:159)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:130)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.ScannerContainer.doAfterStart(ScannerContainer.java:396)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:57)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:51)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
Caused by: java.nio.file.AccessDeniedException: /sys/kernel/tracing
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:440)
	at java.base/java.nio.file.Files.newDirectoryStream(Files.java:482)
	at java.base/java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:301)
	at java.base/java.nio.file.FileTreeWalker.next(FileTreeWalker.java:374)
	at java.base/java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:83)
	... 47 common frames omitted
2023-10-02T12:27:46.7972927Z 12:27:46.748 ERROR: Failure during analysis, Node.js command to start the bridge was: node /home/vsts/work/1/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/bin/server 37251 127.0.0.1 /home/vsts/work/1/.sonarqube/out/.sonar true false /home/vsts/work/1/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/custom-rules17462751575190930663/package

Thanks. This might have something to do with a change deployed in our Javascript/Typescript analyzer recently.

Can you tell me when you started to notice this issue?

Hmm… I set the pipeline up last week and tried several things. So it happens since the beginning

A date would be really helpful here.

I first saw this error last Friday, 20:21:01. However as I said, I did a lot of tryouts until it worked and from the moment it started working, this error appreared

Hi @rufer7,

can you please provide the full logs as a file? You can write me a private message with the file attached.

Cheers,
Victor

How can I send a private message? :smiley:

Hi @rufer7,

seems your projectBaseDir is pointing to filesystem root:

2023-10-03T05:24:04.0299070Z sonar.projectBaseDir=/

Can you add that that property to point to your project directory:

          extraProperties: |
            scm.provider=git
            sonar.typescript.tsconfigPaths=src/Client/tsconfig.json
            sonar.projectBaseDir=/home/vsts/work/1/s/ #correct if wrong

Please let me know if that helps.

Cheers,
Victor

I can try. However the repository contains a .NET 7 solution. The .sln file resides in repository root folder. The Typescript code resides in /src/Client/src and terraform files in deploy/iac and deploy/iac-core. Not sure, if the other code analysis will still work

Hi @rufer7,

from the logs I don’t see any source file outside of `/home/vsts/work/1/s’, including the .NET files, so I think it should work.

The problem of using / as baseDir is that the JS/TS analyzer will look for the pattern src/Client/tsconfig.json in all root directories, that’s why it’s failing when trying to search inside /sys/kernel/tracing.

Cheers,
Victor

1 Like

Seems to work. Thanks a lot!

1 Like

Glad to know! Feel free to ask again if you need further help :slight_smile:

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.