SAD部屋 - Ticket-17 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! SAD is crashed by evaluating Show[]

:Priority:Normal:Priority:Low
:Reporter:Akio Morita
:Status:Assigned
:Assigned to:Akio Morita
:Version:2195
:Milestone:2877
:Created:2008-07-15

!! Description

Show[]に、ListPlot[]等の結果を渡す際に誤ってシンボルを渡すと
segmentation faultする。ランタイムエラーでは有るが、
無効アドレス参照が発生するのは欠陥である。


In[1]:= Clear[g0,g1]
In[1]:= g0 = ListPlot[Range[10]]
In[2]:= Show[g0,g1]

*Clear[g]; Show[g]では SEGVは発生しない。
*Clear[g0,g1]; Show[g0,g1]は、構文解析に失敗している?

  In[1]:= Clear[g0,g1]; Show[g0,g1]
???General::index:  Index 1 out of range in {}[[1,2]]
???General::wrongtype:  Argument must be List, Rule, Symbol, String, Real in Override[{g0,g1},{}[[1,2]],{(PlotRange->Default), (PlotRegion->{ {0,1},{0,1} }),(DataRange->{ {1E38,-1E38},{1E38,-1E38} })}]
???General::index:  Index 1 out of range in {}[[1,2]]
???General::wrongtype:  Argument must be List, Rule, Symbol, String, Real in Override[{g0,g1},{}[[1,2]],{(PlotRange->Default), (PlotRegion->{ {0,1},{0,1} }),(DataRange->{ {1E38,-1E38},{1E38,-1E38} })}]
???General::index:  Index 1 out of range in {}[[1,2]]
???General::wrongtype:  Argument must be List, Rule, Symbol, String, Real in Override[{g0,g1},{}[[1,2]],{(PlotRange->Default), (PlotRegion->{ {0,1},{0,1} }),(DataRange->{ {1E38,-1E38},{1E38,-1E38} })}]
???General::wrongtype:  Argument must be Rule or List of rules in ({PlotRange,PlotRegion}/.Override[{g0,g1},{}[[1,2]], {(PlotRange->Default),(PlotRegion->{ {0,1},{0,1} }),(DataRange->{ {1E38,-1E38},{1E38,-1E38} })}])
???General::index:  Index 1 out of range in {}[[1]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Min[{}[[1]]]
???General::index:  Index 2 out of range in {}[[2]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Max[{}[[2]]]
???General::index:  Index 3 out of range in {}[[3]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Min[{}[[3]]]
???General::index:  Index 4 out of range in {}[[4]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Max[{}[[4]]]
???General::index:  Index 1 out of range in {}[[1]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Min[{}[[1]]]
???General::index:  Index 2 out of range in {}[[2]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Max[{}[[2]]]
???General::index:  Index 3 out of range in {}[[3]]
???General::wrongtype:  Argument must be Real, Complex, or List of them in Min[{}[[3]]]
???General::index:  Index 4 out of range in {}[[4]]
???General::wrongtype:  Further output of this message will be suppressed.
???General::index:  Further output of this message will be suppressed.
???General::abort:  Aborted:
Clear[g0,g1]; Show[g0,g1]
                         ^
...]

!! Attachement files
{{attach_map('Ticket-17')}}
{{attach_form('','')}}

!! Changelog
!!!Akio Morita (2009-07-08 (水) 13:20:27)
Show1\$[ini_, rect_, g__] @ Packages/ListPlot.nにて、
{gl,df,init,opt}=SwitchCases[Flatten[{g}],
      {_Graphics,(Rule|RuleDelayed)[DisplayFunction,_],
        (Rule|RuleDelayed)[Initialize,_],
        _}]
により、optに束縛されるリストにRule/RuleDelayed以外のS式が
含まれるのが、動作不良のトリガーとなっている。

Segmentation Faultは、CanvasSymbolDirect[]の内部実装不良が原因と思われる
!!!Akio Morita (2009-07-08 (水) 13:38:34)
Revision. 2877にて、Show1\$[] @ Packages/ListPlot.nを修正

CanvasSymbolDirect[]は、調査中
!!!Akio Morita (2009-07-13 (月) 11:29:33)
CVS MAIN trunk Packages/ListPlot.n@1.152へBackport
!!!Akio Morita (2009-07-13 (月) 11:31:48)
CanvasSymbolDirect[]でのSegmentation Faultは、リスト構造へのアクセス前に、型チェックを行っていないため発生している

Canvasの内部実装用支援関数なので、修正自体の緊急度は低い?


{{its_edit_ticket_form}}