c++/344: Passing >1 buffer created in parm list with alloca seg faults on x86

ben.sander@amd.com ben.sander@amd.com
Fri Jun 23 08:46:00 GMT 2000


>Number:         344
>Category:       c++
>Synopsis:       Passing >1 buffer created in parm list with alloca seg faults on x86
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jun 23 08:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Ben Sander
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
Linux 2.2.14-12 #1 Tue Apr 25 13:04:07 EDT 2000 i686 unknown
>Description:
Enclosed short program calls alloca twice in the argument
list:

printf ("Tag1=%s, Tag2=%s\n", tag_str(0x256, (char*)alloca(20)), tag_str(i, (char*)alloca(30)));

a.out seg faults when printf is called.  
>From looking at the disasm, gcc pushes the pointer to the 
first alloca buffer onto the stack before the second alloca
moves the stack pointer.  (line 72 of the disam: pushl %eax)

Before the call to printf from main, the stack looks like:
    -76 : storage for first alloca
     ...
    -44   Ptr to first alloca storage
    -40   Storage for second alloca
    ...
    - 8   Ptr to second alloca storage.
    - 4   Format string ptr
  esp   ->

The pointer to the first alloca needs to be on the stack 
at esp-12.
>How-To-Repeat:
> g++ t.ii
> a.out
buff=0x   5
buff=0x 256
Segmentation fault
>Fix:
Rewrite code to manually save alloca'd ptrs?
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="t.ii.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="t.ii.gz"

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
h5fF/wOZSjoFCHkAAA==


More information about the Gcc-prs mailing list