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

Not working on AWS EC2 (Linux) ? #296

Open
mxnuchim opened this issue Sep 19, 2023 · 13 comments
Open

Not working on AWS EC2 (Linux) ? #296

mxnuchim opened this issue Sep 19, 2023 · 13 comments

Comments

@mxnuchim
Copy link

mxnuchim commented Sep 19, 2023

I'm using your package to get video durationfrom a url that I am fetching from S3 Bucket. On my local computer, its working perfectly, but after releasing to my server on AWS Ec2, the whole app is crashing and I am getting the error below . Just cant understand what`s problem

Does the package not work on Linux?

Error: Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject 0|zooto-backend | at makeError (/home/ubuntu/Zooto-Backend/node_modules/execa/lib/error.js:60:11) 0|zooto-backend | at handlePromise (/home/ubuntu/Zooto-Backend/node_modules/execa/index.js:118:26) 0|zooto-backend | at runMicrotasks (<anonymous>) 0|zooto-backend | at processTicksAndRejections (node:internal/process/task_queues:96:5) { 0|zooto-backend | shortMessage: 'Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | command: '/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | escapedCommand: '"/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe" -v error -show_format -show_streams "https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject"', 0|zooto-backend | exitCode: undefined, 0|zooto-backend | signal: 'SIGSEGV', 0|zooto-backend | signalDescription: 'Segmentation fault', 0|zooto-backend | stdout: '', 0|zooto-backend | stderr: '', 0|zooto-backend | failed: true, 0|zooto-backend | timedOut: false, 0|zooto-backend | isCanceled: false, 0|zooto-backend | killed: false 0|zooto-backend | }

@mxnuchim
Copy link
Author

Hello?

@milesyang0220
Copy link

milesyang0220 commented Oct 2, 2023

@mxnuchim, we are facing the same problem. Our original setup was working with Amazon Linux 2 + xx64 + node.js 16. After we upgraded to Amazon Linux 2023 + ARM + Node.js 18, we encountered issues. and we try using al2023 + x86_64 + node.js 18, issues still occured, I think changed to Amazon Linux 2 was a workaround solution.
Please note that this is a workaround solution.
hope this can help u.

@atumas-bananamilk
Copy link

Same problem after deploying to Vercel:
Error: Could not find ffprobe executable, tried "/var/task/node_modules/get-video-duration/node_modules/@ffprobe-installer/linux-x64/ffprobe" and "/var/task/node_modules/get-video-duration/node_modules/@ffprobe-installer/ffprobe/node_modules/@ffprobe-installer/linux-x64/ffprobe"

@Sumolari
Copy link
Member

@mxnuchim @milesyang0220 Have you tried adding unsafe-perm=true to your .npmrc file?

This is a known issue in @ffprobe-installer/ffprobe, which get-video-duration depends on.

@atumas-bananamilk Let's keep this thread focused on AWS EC2 issues. I'm not familiar with Vercel but there are a few reports of ffprobe not working in that environment (1, 2).

@atumas-bananamilk
Copy link

@Sumolari Vercel runs on AWS EC2.. Look at the error..

@gTonelli
Copy link

gTonelli commented Nov 2, 2023

I have the same error as the original posters on EC2. unsafe-perm is set to true.

Error: Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/pds-backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://*********.s3-accelerate.amazonaws.com/**********.mp4 0|pds-backend | at makeError (/home/ubuntu/pds-backend/node_modules/execa/lib/error.js:60:11) 0|pds-backend | at handlePromise (/home/ubuntu/pds-backend/node_modules/execa/index.js:118:26) 0|pds-backend | at runMicrotasks (<anonymous>) 0|pds-backend | at processTicksAndRejections (internal/process/task_queues.js:95:5) { 0|pds-backend | shortMessage: 'Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/pds-backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://***********.s3-accelerate.amazonaws.com/*************.mp4', 0|pds-backend | command: '/home/ubuntu/pds-backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://***************.s3-accelerate.amazonaws.com/****************.mp4', 0|pds-backend | escapedCommand: '"/home/ubuntu/pds-backend/node_modules/@ffprobe-installer/linux-x64/ffprobe" -v error -show_format -show_streams "https://***********.s3-accelerate.amazonaws.com/*********.mp4"', 0|pds-backend | exitCode: undefined, 0|pds-backend | signal: 'SIGSEGV', 0|pds-backend | signalDescription: 'Segmentation fault', 0|pds-backend | stdout: '', 0|pds-backend | stderr: '', 0|pds-backend | failed: true, 0|pds-backend | timedOut: false, 0|pds-backend | isCanceled: false, 0|pds-backend | killed: false 0|pds-backend | }

I suppose this is an issue with ff-probe though, so maybe we should report it there?

@UnderscoreNorth
Copy link

I don't know if this helps, but I ran into a similar issue on a Debian VPS, and seemed to have resolved it by installing ffmpeg package on the OS, and then calling that ffprobe instead of the one that's installed by @ffprobe-installer

getVideoDurationInSeconds(mediaURL) -> getVideoDurationInSeconds(mediaURL, "ffprobe")

@Sumolari
Copy link
Member

Sumolari commented Dec 5, 2023

I think this might be related to ffprobe having glibc statically linked and not being able to do DNS resolution. Could you try installing nscd through your package manager and check if the issue persist?

@Spectrumsun
Copy link

I don't know if this helps, but I ran into a similar issue on a Debian VPS, and seemed to have resolved it by installing ffmpeg package on the OS, and then calling that ffprobe instead of the one that's installed by @ffprobe-installer

getVideoDurationInSeconds(mediaURL) -> getVideoDurationInSeconds(mediaURL, "ffprobe")

Worked for me Thanks

@rmahtoa
Copy link

rmahtoa commented May 17, 2024

same issue on aws ECS
Error: ffprobe was killed with signal SIGSEGV\nffprobe version 4.0.2-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2018 the FFmpeg developers\n built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516\n configuration: --enable-gpl \

@danny-does-stuff
Copy link

We also ran into this issue when upgrading our docker image from node 16 to node 20. Our Dockerfile was as follows

#####################################################################################
# Step 1 : Builder image
# use node image
FROM node:20-alpine AS builder

# change directory
WORKDIR /usr/src/app

# copy and install requirements
COPY package.json yarn.lock ./
RUN yarn safe-install-lock

# copy and build source
COPY . .
RUN yarn build

#####################################################################################
# Step 2 : Run image

FROM node:20

# change directory
WORKDIR /usr/src/app

# copy and install requirements
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production

# copy and build source
COPY --from=builder /usr/src/app/build ./build

# expose needed ports
EXPOSE 8000

# start app
CMD ["yarn", "start-production"]

We solved it by following @UnderscoreNorth 's comment, i.e. adding RUN apt-get update && apt-get install -y ffmpeg to our Run image and passing "ffprobe" as the second argument to getVideoDurationInSeconds. We needed to do the same for getAudioDurationInSeconds from the get-audio-duration package.

@danny-does-stuff
Copy link

@Sumolari Do you have any idea why this would only be happening on newer images? In our case, it fails on node:20 but worked on node:16

@Sumolari
Copy link
Member

@danny-does-stuff No idea why Node 20 image would break ffmpeg. It's hard to tell because node:20 and node:16 are both ambiguous versions: those tags point to the latest release in the 20.x and 16.x versions, so you might run into situations where today's node:16 works but next week you build "the same image" and it fails because now node:16 points to some different base image

If you compare 2 recent versions of node:16 and node:20 you can see that they have a different amount of packages (node:20 has 4 fewer packages)

Maybe it's one of those missing packages, or some package that was updated, it's hard to tell

If manually installing ffmpeg solves the issue that's a useful patch. However, I think the issue should be forwarded to https://github.com/SavageCore/node-ffprobe-installer, although seems to be the same issue as SavageCore/node-ffprobe-installer#121

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

9 participants