Skip to content
This repository was archived by the owner on May 27, 2026. It is now read-only.
This repository was archived by the owner on May 27, 2026. It is now read-only.

spawn EXTBSY error #224

Description

@DanielRuf

We are getting the following error:

Using config: /__w/foundation-sites/foundation-sites/browserstack.json
internal/child_process.js:405
    throw errnoException(err, 'spawn');
    ^

Error: spawn ETXTBSY
    at ChildProcess.spawn (internal/child_process.js:405:11)
    at spawn (child_process.js:548:9)
    at execFile (child_process.js:232:17)
    at tunnelLauncher (/__w/foundation-sites/foundation-sites/node_modules/browserstack-runner/lib/local.js:23:22)
    at Timeout._onTimeout (/__w/foundation-sites/foundation-sites/node_modules/browserstack-runner/lib/local.js:191:11)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7) {
  errno: -26,
  code: 'ETXTBSY',
  syscall: 'spawn'
}

Related: browserstack/browserstack-local-nodejs#19

Activity

  1. DanielRuf commented on Aug 2, 2020

    @DanielRuf
    Author

    Still the same. It seems there is a lack of support from browserstack which is not great.

  2. DanielRuf commented on Aug 2, 2020

    @DanielRuf
    Author

    It seems the logic in Nodejs changed a bit in the latest version(s).
    This finally works for us: https://github.com/foundation/foundation-sites/blob/develop/patches/browserstack-runner%2B0.9.2.patch

  3. DanielRuf commented on Aug 2, 2020

    @DanielRuf
    Author
    diff --git a/node_modules/browserstack-runner/lib/local.js b/node_modules/browserstack-runner/lib/local.js
    index 15b147c..4f15a49 100644
    --- a/node_modules/browserstack-runner/lib/local.js
    +++ b/node_modules/browserstack-runner/lib/local.js
    @@ -180,16 +180,16 @@ var Tunnel = function Tunnel(key, port, uniqueIdentifier, config, callback) {
         }
         logger.debug('Downloading BrowserStack Local to "%s"', localBinary);
     
    -    var file = fs.createWriteStream(localBinary);
    +    var file = fs.createWriteStream(localBinary, {emitClose: true});
         https.get('https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal' + (windows ? '.exe' : '-' + process.platform + '-' + process.arch),
         function(response) {
           response.pipe(file);
     
           response.on('end', function() {
    -        fs.chmodSync(localBinary, 0700);
    -        setTimeout(function() {
    +        file.on('close', function () {
    +          fs.chmodSync(localBinary, 0700);
               tunnelLauncher();
    -        }, 100);
    +        })
           }).on('error', function(e) {
             logger.info('Got error while downloading binary: ' + e.message);
             throw new Error('Got error while downloading binary: ' + e.message);
  4. RangerMauve commented on Aug 9, 2020

    @RangerMauve

    Getting this too. 😅 Does it work with older node versions or something?

  5. RangerMauve commented on Aug 9, 2020

    @RangerMauve

    I tried applying @DanielRuf 's patch but I'm still getting the error.

    This is with node v12.16.2 and browserstack-runner 0.9.3 (with and without the patch)

    Error: ETXTBSY: text file is busy, open '/home/mauve/programming/sodium-javascript/node_modules/browserstack-runner/lib/BrowserStackLocal'
    Emitted 'error' event on WriteStream instance at:
        at internal/fs/streams.js:321:12
        at FSReqCallback.oncomplete (fs.js:155:23) {
      errno: -26,
      code: 'ETXTBSY',
      syscall: 'open',
      path: '/home/mauve/programming/sodium-javascript/node_modules/browserstack-runner/lib/BrowserStackLocal'
    }
    
  6. DanielRuf commented on Aug 9, 2020

    @DanielRuf
    Author

    For older versions you might want to try the PR which switched the end and close events (#225).

    Or this one: #217

  7. RangerMauve commented on Aug 10, 2020

    @RangerMauve

    @DanielRuf Was there a particular version that worked for you?

    I found that deleting the BrowserLocal binary before running the tests helped. (though this seems a bit inefficient).

  8. DanielRuf commented on Aug 10, 2020

    @DanielRuf
    Author

    We use browsertack-runner 0.9.2 and Node 14.7.0

  9. DanielRuf commented on Jan 16, 2021

    @DanielRuf
    Author

    Closing as there seems to be no further interest to resolve this.

  10. wati123321 commented on Jan 18, 2021

    @wati123321

    Hey, your statement on 2nd Aug mentions that the issue was resolved using the latest version of NodeJS, are you still facing any errors?

  11. DanielRuf commented on Jan 18, 2021

    @DanielRuf
    Author

    @wati123321 it works with my own patch / changes.

    that the issue was resolved using the latest version of NodeJS

    No, not in the original project without the patch by me.
    It broke on newer Node versions.

  12. MrSwitch commented on Mar 20, 2021

    @MrSwitch

    I was able to resolve this by deleting package-lock.json prior to running npm i.

    You can see it failing here with the above error.

    But then passing here when i add the run: rm package-lock.json step prior to npm i.

    I'm still curious as to why removing package-lock should work. Since browserstack-runner works on Mac locally perhaps some post install operations of the dependencies install something architecture specific.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions