Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fatal: Error starting protocol stack #450

Closed
PaulRBerg opened this issue May 22, 2018 · 6 comments
Closed

Fatal: Error starting protocol stack #450

PaulRBerg opened this issue May 22, 2018 · 6 comments

Comments

@PaulRBerg
Copy link

PaulRBerg commented May 22, 2018

Successfully ran embark new TokenFactory but if I do embark blockchain, I get this:

Fatal: Error starting protocol stack: listen unix

Full log output here.

@iurimatias
Copy link
Collaborator

hey @PaulRBerg , can you do rm -rf .embark/development/ and retry embark blockchain, do you still get the same error?

This seems to be an issue with geth and the underlying os (see here). You seem to be on OSX though and that should work fine. Is there possible permissions issues in the folder you're dapp is at ?

@akando42
Copy link

akando42 commented May 23, 2018

I have the same issue on MacOS HighSierra - Node v10.1.0 - NPM 5.6.0 - Geth Version: 1.8.8-stable

@PaulRBerg
Copy link
Author

@iurimatias Unfortunately it didn't work, even if I ran rm -rf .embark/development/. There are no permission issues, I'm using my normal development directories where truffle works fine.

@iurimatias
Copy link
Collaborator

@PaulRBerg @troydo42

Unfortunately I'm not able to replicate this yet (nor other devs in the team), it seems to be an issue with geth in your particular system (see here), embark blockchain is a wrapper around geth, if you manually run the cmd shown in the log it will get the same result.

I'm looking for a solution, in meanwhile you can alternatively use embark simulator instead of embark blockchain

@iurimatias
Copy link
Collaborator

@PaulRBerg @troydo42

Good news I found the problem. Go-Ethereum doesn't like long paths... You'll have to put the project in a shorter path if you intend to use go-ethereum (embark blokchain), at least until the issue is fixed.

e.g:

works:

  • /Users/iurimatias/Documents/TokenFactory
  • /Users/iurimatias/Projects/tmp/TokenFactory

doesn't work:

  • /Users/iurimatias/Documents/projects/ef/dev/src/eth/embark/TokenFactory/

@iurimatias
Copy link
Collaborator

In embark 3.1 we detect this situation and show a warning to the user

michaelsbradleyjr added a commit that referenced this issue Dec 20, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that the character-length of the path to a
socket file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Use a truncated sha512 hash of the DApp's path in the
name of the temporary directory created for that purpose so that DApps won't
collide (with an acceptably low probability of collision).

Remove the `utils/utils.js` dependency from `core/env.js` and implement the
`ipcPath()` helper as a static method on the class exported from `core/ipc.js`.
michaelsbradleyjr added a commit that referenced this issue Dec 20, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
michaelsbradleyjr added a commit that referenced this issue Dec 20, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
michaelsbradleyjr added a commit that referenced this issue Dec 21, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
michaelsbradleyjr added a commit that referenced this issue Dec 21, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
iurimatias pushed a commit that referenced this issue Dec 21, 2018
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants