Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: SIGFPE crash



On Sat, May 7, 2011 at 3:27 PM, Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
> On 8 May 2011 00:19, Jon Mayo <jon.mayo@xxxxxxxxx> wrote:
>> On Sat, May 7, 2011 at 3:17 PM, Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
>>> On 7 May 2011 23:56, Jon Mayo <jon.mayo@xxxxxxxxx> wrote:
>>>> echo $[-9223372036854775808/-1]
>>>>
>>>> this causes zsh to exit immediately with an FPE. Does anyone have a
>>>> patch to fix this?
>>>
>>> diff --git a/Src/math.c b/Src/math.c
>>> index 35b362d..3c08052 100644
>>> --- a/Src/math.c
>>> +++ b/Src/math.c
>>> @@ -1053,8 +1053,12 @@ op(int what)
>>>                    return;
>>>                if (c.type == MN_FLOAT)
>>>                    c.u.d = a.u.d / b.u.d;
>>> -               else
>>> -                   c.u.l = a.u.l / b.u.l;
>>> +               else {
>>> +                    if (a.u.l == LONG_MIN && b.u.l == -1)
>>
>> should be LLONG_MIN
>>
>>> +                        c.u.l = 0;
>>
>> LLONG_MAX would be the closest answer, but 1 off. I would switch it
>> from integer to double type in this case, but that might be difficult.
>
> It should probably be neither, zsh does some weird stuff to find a
> suitably long type for .l, which may or may not be a long long.
>
>>> +                    else
>>> +                       c.u.l = a.u.l / b.u.l;
>>> +                }
>>>                break;
>>>            case MOD:
>>>            case MODEQ:
>>>
>>>
>>> Do we want to print a warning and/or use another value than 0 in this case?
>
> This is assuming we want to do this at all, I am told that only
> division will generate an exception on x86, but presumably other
> arches behave differently, and bash behaves the same way too
> (exception + die). Does some sort of standard have anything to say on
> the matter? I'm guessing someone has thought of it before and clearly
> nobody ever did anything about it.
>

perhaps scripts that care can just use a trap? and all my worrying was
for nothing?
mostly I ran into the issue while I dropped out of vi to do some
calculations, and ended up having zsh crash and had to recover my
editing session. minor annoyance really.



Messages sorted by: Reverse Date, Date, Thread, Author