[BASH] Floating point exception


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [BASH] Floating point exception
# 1  
Old 12-26-2014
[BASH] Floating point exception

Heyas

I have a script (vhs - video handler script, using ffmpeg) to encode videos.
It also encodes a dvd, but until now just non-copy-protected ones, so i've tried to add/implement a vobcopy wrapper to be used by my script.

At first it looked quite fine, but when changing from the first VOB to the 2nd VOB, it copies a few megabytes, and then fails, with said error message.

Here's the output:
Code:
# | vhs (1.2)                              Video Handler Script                              2014-12-27 02:07:34 | #
# | Please select which entry is the DVD:                                                                        | #
1) Avatar
2) Inside_Man
#? 1
# |                                               Encoding Avatar                                                | #
# | Mounted DVD to /run/media/sea/Avatar                                                                [  √   ] | #
# | Please select a method:                                                                                      | #
# | 1) Encode directly from DVD                                                   2) Copy largest files to local | #
# | > 2
# | /home/sea/.cache/Avatar already exists, reuse it? (y/n)                                                    n | #
# | Copy vob files to "/home/sea/.cache/Avatar", this may take a while...                                        | #

# | Copied: AVATAR1-1.vob                                                                               [  √   ] | #
# | pid:20608                               Copying: AVATAR1-2.vob (124M)                               [  /   ] | #
/home/sea/.local/bin/vhs.sh: line 658: 20608 Floating point exception(core dumped) vobcopy -o "$1" 2> "$vTMP"
# | pid:20608                               Copying: AVATAR1-2.vob (130M)                               [  -   ] | #

✘ ~/data/tmp $  cat -n ~/.local/bin/vhs.sh | grep -A44 \ 635
   635		doVobCopy() { # "OUTDIR"
   636		# Uses vobcopy to copy the vobs to OUTDIR
   637		#
   638			[[ -z "$1" ]] && exit 1
   639			declare files
   640			unset files
   641			count=0
   642			
   643			if $showFFMPEG
   644			then	vobcopy -o "$1"
   645			else	# Do the job in the background
   646				vTMP="${TMP}.vobcopy"	# File to 'get' all the output
   647				[[ -f "$vTMP" ]] && rm -f "$vTMP"
   648				touch "$vTMP"
   649	
   650				vobcopy -o "$1" 2>"$vTMP" &
   651				PID=$!
   652				sleep 0.3
   653				
   654				while ps | grep -q $PID
   655				do	# Retrieve the filename and print its filesize to user
   656					FILE=$(tail -n 2 "$vTMP"|grep Outputting|awk '{print $4}')
   657					if [[ ! -z "$FILE" ]] 
   658					then	FILE=$(basename "$FILE")
   659						msg="Copying: $FILE"
   660						msg_P="pid:$PID"
   661	
   662						if echo "${files[@]}" | grep -q "$FILE" 
   663						then	tui-printf "$msg_P" \
   664								"$msg ($(ls -lh $1/$FILE*|awk '{print $5}'))" \
   665								"[  $(tui-indi)   ]"
   666						else	files[${#files[@]}]="$FILE"
   667							[[ $count -gt 0 ]] && \
   668								tui-status 0 "Copied: ${files[ $[ $count - 1 ] ]}"
   669							count=$(($count + 1))
   670							tui-printf "$msg_P" \
   671								"$msg" \
   672								"[  $(tui-indi)   ]"
   673						fi
   674					fi
   675					sleep 0.7
   676				done
   677			fi
   678			rm -f "$vTMP"
   679		}
:) ~/data/tmp $

I've never beofre had a floating point issue., so i'd rather think its a vobcopy issue than mine..
Anyhow, i do not know how to identify a floating point issue, with the above code, there is no math done (but adding 1 to 'c' which was set to 0). but subtracting 1 from ${#files[@]}, but this just happens when its 1 or higher.

Any advice or ideas?
Thank you in advance and happy holidays.

Last edited by sea; 12-26-2014 at 11:28 PM.. Reason: Updated code, strokethrough the vobcopy is cause
# 2  
Old 12-26-2014
What does the core dump tell you?
# 3  
Old 12-26-2014
Any idea where i can find this 'core dump'?

No such indication in output dir:
Code:
ls dvd-out/
AVATAR1-1.vob  AVATAR1-2.vob.partial

Also nothing in the logs:
Code:
sudo find /var/log/|grep -i vobcopy

Not even in /var/log/messages* Smilie
Last entrires are from 16th december.

---------- Post updated at 03:59 ---------- Previous update was at 02:01 ----------

When i dont run vobcopy in background (showFFMPEG=true), it copies the files just fine.
It just so happens when running in background...

But i fail to see any 'float point' operation within the function.

Last edited by sea; 12-26-2014 at 11:21 PM.. Reason: Searched more
# 4  
Old 12-27-2014
Just a wild guess?
Maybe it's this test for a zero length file?
657 if [[ ! -z "$FILE" ]]
# 5  
Old 12-27-2014
From the output you posted:
Code:
# | pid:20608                               Copying: AVATAR1-2.vob (124M)                               [  /   ] | #
/home/sea/.local/bin/vhs.sh: line 658: 20608 Floating point exception(core dumped) vobcopy -o "$1" 2> "$vTMP"
# | pid:20608                               Copying: AVATAR1-2.vob (130M)                               [  -   ] | #

we can see that vobcopy dropped a core file due to a floating point exception. Where that core file is placed varies from system to system. Start by looking at the man page for core and gdb or adb or sdb on your system to see if they give you an indication of where the core file is located.

ongoto:
No, the core didn't come from test. The diagnostic output repeated above clearly states that vobcopy received a floating point exception and a core file was produced.
This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 12-27-2014
Ok, so i am on:
Code:
uname -ro
3.17.6-300.fc21.x86_64 GNU/Linux

According to man core this Fedora release saves the core dumps either as 'core' or 'core.pid'.
So i used locate, but it didnt find a 'core.pid' and looking for just core, brought just one 'reasonable' result (same as when i look - for 'fun' - for coredump:
Code:
locate coredump | grep -v mock
/etc/systemd/coredump.conf
/usr/bin/coredumpctl
/usr/lib/sysctl.d/50-coredump.conf
/usr/lib/systemd/systemd-coredump
/usr/lib64/libunwind-coredump.so.0
/usr/lib64/libunwind-coredump.so.0.0.0
/usr/share/bash-completion/completions/coredumpctl
/usr/share/man/man1/coredumpctl.1.gz
/usr/share/man/man5/coredump.conf.5.gz
/usr/share/man/man8/systemd-coredump.8.gz
/usr/share/zsh/site-functions/_coredumpctl
/usr/src/kernels/3.17.6-300.fc21.x86_64+debug/include/config/coredump.h
/usr/src/kernels/3.17.6-300.fc21.x86_64+debug/include/linux/coredump.h
/var/lib/systemd/coredump

Coredumps config:
Code:
cat /etc/systemd/coredump.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See coredump.conf(5) for details

[Coredump]
#Storage=external
#Compress=yes
#ProcessSizeMax=2G
#ExternalSizeMax=2G
#JournalSizeMax=767M
#MaxUse=
#KeepFree=

cat /usr/lib/sysctl.d/50-coredump.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See sysctl.d(5) for the description of the files in this directory,
# and systemd-coredump(8) and core(5) for the explanation of the
# setting below.

kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e

Code:
✔ /var/lib/systemd $ ll
total 24K
drwxr-xr-x. 2 root root 4.0K Dec 14 00:20 backlight
drwxr-xr-x. 2 root root 4.0K Dec 14 15:20 catalog
drwxr-xr-x. 2 root root 4.0K Nov 10 16:18 coredump
drwxr-xr-x. 2 root root 4.0K Dec 14 15:35 rfkill
drwxr-xr-x. 2 root root 4.0K Dec 14 15:04 timers
-rw-------. 1 root root  512 Dec 26 22:47 random-seed
+ /var/lib/systemd $ ll coredump/
total 0

So it seems it didnt procude a coredump Smilie
As there are no files within the 'coredump' directory.
Code:
coredumpctl list 
No coredumps found.

This seems to verify this...

I'm going to try this again as root, and hope it creates a dump file then..

Last edited by sea; 12-27-2014 at 11:42 AM..
# 7  
Old 12-27-2014
Is this apropos:

coredumpctl

So systemd also hijacks core files?

Image
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparison of floating point numbers in bash

I have the following code snippet in bash if ]; then minm=`echo "$diff" | bc` fi It works well for most of the cases. However lets say diff is -0.17 and minm is -0.0017. In such a case the comparison seems to fail. Is the correct way to compare a mixture of positive and... (12 Replies)
Discussion started by: ngabrani
12 Replies

2. Shell Programming and Scripting

Bash script to print the smallest floating point number in a row that is not 0

Hello, I have often found bash to be difficult when it comes to floating point numbers. I have data with rows of tab delimited floating point numbers. I need to find the smallest number in each row that is not 0.0. Numbers can be negative and they do not come in any particular order for a given... (9 Replies)
Discussion started by: LMHmedchem
9 Replies

3. Shell Programming and Scripting

Bash Floating point math with bc

Hello Everyone, I am currently working on a script to calculate optimal tcp window size the formula that I am following is 2 x (bandwith speed /8 * Round Trip Time ) = x This is what I have so far #!/bin/bash echo "Enter connection speed" << Get the speed of the Connection from... (3 Replies)
Discussion started by: bmfmancini
3 Replies

4. Shell Programming and Scripting

[BASH] Regex for floating point number

Hey again, I have a basic regex that tests if a number is a float. Thank you. (5 Replies)
Discussion started by: whyte_rhyno
5 Replies

5. Programming

Floating Point

Anyone help me i cant found the error of floating point if needed, i added the code complete #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> typedef struct { int hh; int mm; int ss; char nom; int punt; }cancion; typedef struct... (9 Replies)
Discussion started by: Slasho
9 Replies

6. Shell Programming and Scripting

floating point not recognized by printf in bash

Dear all, I have the following question. Let's say that I have the following script #!/bin/bash value=0.4987865 a=` printf "%6.2f" $value ` b=`echo $value + $value | bc -l` echo $a echo $b exit And the exit is: 0,00 .9975730 Thus, the problem is that the printf order does not... (2 Replies)
Discussion started by: josegr
2 Replies

7. Linux

Floating Point Exception

Hi, I am compiling "HelloWorld" C progam on 32-bit CentOS and i want to execute it on 64-bit CentOS architecture. For that i copied the a.out file from 32-bit to 64-bit machine, but while executing a.out file on 64bit machine I am getting "Floating point exception error". But we can run... (3 Replies)
Discussion started by: Mandar123
3 Replies

8. Linux

Floating point exception !!!

Hi, I have linux fedora 4 ver., 2.6 kernal. And qmail & mysql & samba servers are already configured on this server. When I try to install any package like squidguard ,dansguardian,webmin,rsnapshots with command rpm -ivh . It is giving error as “Floating point exception" Snap View is... (3 Replies)
Discussion started by: ssk01
3 Replies

9. Shell Programming and Scripting

BASH: floating point exception

Hi, guys, today, I have copied a simple script which runs correctly on a computer to another one. But, the latter informs me: Floating point exception! @ ./command_module a b c where command_module is the module compiled by myself. So, I have fixed it by following steps: 1.... (5 Replies)
Discussion started by: mapleleaves
5 Replies

10. Shell Programming and Scripting

Floating point numeric comparisions in bash

Hi, I am trying to compare 2 floating point numbers 0.8 and 0.15 using bash and get the largest of the two. Can anyone advise. (2 Replies)
Discussion started by: borncrazy
2 Replies
Login or Register to Ask a Question