Shell编码遇到分段错误



我有一段shell代码run.sh如下所示:

#!/bin/sh
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
export LD_LIBRARY_PATH="../../lib"

mp3proc=mp3proc
if [ ! -f "$mp3proc" ]; then
        ln -s mp3decode $mp3proc
fi
inputsonglist="$1"
intputflag="$2
cat $inputsonglist | while read line
do
    echo "$line"
    ./"mp3proc" ${line} $inputflag
done

,其中inputsonglist是一个txt文件,存放mp3文件的全路径列表,处理方式如下:

/home/user_01/music/wcbz.mp3
/home/user_01/music/wf_hh.mp3
/home/user_01/music/zj_lw.mp3
/home/user_01/music/zj_jjdzf.mp3
/home/user_01/music/zj_jsqsjywwd.mp3
/home/user_01/music/zj_sh.mp3
/home/user_01/music/zj_tbaw.mp3

mp3proc是我的可执行程序,接受两个参数:

  1. mp3文件的完整路径

  2. 标志,0或1

但是,当我像这样运行这个shell脚本时:

./run.sh list.txt 0

我遇到以下错误:

/home/user_01/music/wcbz.mp3
./run.sh: line 27: 21068 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/wf_hh.mp3
./run.sh: line 27: 21069 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_lw.mp3
./run.sh: line 27: 21070 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_jjdzf.mp3
./run.sh: line 27: 21071 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_jsqsjywwd.mp3
./run.sh: line 27: 21072 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_sh.mp3
./run.sh: line 27: 21073 Segmentation fault      ./"mp3proc" ${line} $inputflag

我不知道为什么会有"分割错误"发生在这里??

有人帮助吗?很多谢谢!

1)尝试直接调用mp3proc,看看是否出现segfault。然后使用:strace -f mp3proc并查看其输出

2)检查LD_IBRARY_PATH:替换为绝对路径,或者修改它

最新更新