Bug 728386

Summary: [abrt] bash-4.1.7-4.fc14: _int_malloc: Process /bin/bash was killed by signal 11 (SIGSEGV)
Product: [Fedora] Fedora Reporter: Nivag <gavinflower>
Component: bashAssignee: Roman Rakus <rrakus>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 14CC: gavinflower, maxamillion, rrakus, tsmetana
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard: abrt_hash:618a3e8e8e130d9043a8dba000890c76732f366c
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-08-04 22:34:01 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
File: backtrace none

Description Nivag 2011-08-04 22:15:12 UTC
abrt version: 1.1.18
architecture: x86_64
Attached file: backtrace, 162811 bytes
cmdline: /bin/bash ./sample_min.sh
component: bash
Attached file: coredump, 21307392 bytes
crash_function: _int_malloc
executable: /bin/bash
kernel: 2.6.35.13-92.fc14.x86_64
package: bash-4.1.7-4.fc14
rating: 4
reason: Process /bin/bash was killed by signal 11 (SIGSEGV)
release: Fedora release 14 (Laughlin)
time: 1312494974
uid: 500

comment
-----
I was trying to debug the following bash script (which is a reduced example from a amuch bigger script, with added diagnostics), and it cause a core dump:

#!/bin/bash
#  name_value_min.sh

function padded_name_value
{
    VAR_NAME=$1
    VAR_DOLLAR="\$$VAR_NAME"
    VAR_VAL=$(eval "echo $VAR_DOLLAR")   
echo '1001'    
echo $FUNCNAME
echo '1002'    
echo $VAR_NAME
echo '1003'    
    padded_name_value VAR_NAME    
    padded_name_value 'VAR_NAME'     
    padded_name_value $VAR_NAME    
    padded_name_value "$VAR_NAME"
echo '1004' 
echo $VAR_DOLLAR
echo '1006'    
    padded_name_value VAR_VAL    
    padded_name_value 'VAR_VAL'     
    padded_name_value $VAR_VAL    
    padded_name_value "$VAR_VAL"
echo '1007'  
    PADDING_SIZE=30
    FORMAT="%${PADDING_SIZE}s=[%s]\n"
    printf $FORMAT $VAR_NAME "$VAR_VAL"
echo '1008'  
}

function file_exists
{
    VAR_NAME="$1"
    VAR_DOLLAR="\$$VAR_NAME"
    VAR_VAL=$(eval "echo $VAR_DOLLAR")
    MODE="$2"
echo '2001'    
echo $FUNCNAME
echo '2002'    
echo $VAR_NAME
echo '2003'    
    padded_name_value VAR_NAME    
    padded_name_value 'VAR_NAME'     
    padded_name_value $VAR_NAME    
    padded_name_value "$VAR_NAME"
echo '2004' 
echo $VAR_DOLLAR
echo '2006'    
    padded_name_value VAR_VAL    
    padded_name_value 'VAR_VAL'     
    padded_name_value $VAR_VAL    
    padded_name_value "$VAR_VAL"
echo '2007'  
}

JB_FILE=$0
echo '3001'    
padded_name_value JB_FILE
echo '3002'    
file_exists 'JB_FILE' 'r'
echo '3003'    
padded_name_value JB_FILE
echo '3004'    


############## further comment
In the 'production' script, the method 'padded_name_value' is used to print out formatted diagnostics, with the '=' lined up, but the method appears to fail when called within another method with strange results.  The above reduced script was an an attempt to investigate further...

             JB_SRC_DIR_PARENT=[/home/software/updates/jboss]
                    JB_SRC_DIR=[/home/software/updates/jboss/jboss-as-7.0.0.Final]

How to reproduce
-----
1. ran bash script
2.
3.

Comment 1 Nivag 2011-08-04 22:15:17 UTC
Created attachment 516797 [details]
File: backtrace

Comment 2 Nivag 2011-08-04 22:22:14 UTC
The sample output is from the production script, not the reduced example.

However, it does show how name value pairs should be displayed - except that the '=' signs would actually be lined up.

Comment 3 Nivag 2011-08-04 22:34:01 UTC
Hmm...

Reason for core dump is obvious: infinite recursion!

(Isn't hindsight wonderful...)