← Back to team overview

kicad-developers team mailing list archive

Re: pcbnew crash when pad clearance "too negative"

 

Hi Jean-Samuel,

Thank you for investigating the problem, it should be fixed in the
master branch now. I decided to attribute the patch to you, as you gave
a valid solution. I know there is a corresponding report on the bug
tracker, but I would be very grateful if we reported bugs exclusively
there. It is just much easier to browse the bug list in one place.

Regards,
Orson

On 02/08/2017 07:21 PM, Jean-Samuel Reynaud wrote:
> Hi all,
> 
> I experience a crash in pcbnew when pad clearance is "too negative"
> according to the pad shape.
> 
> To reproduce:
> - Open pcbnew (In OpenGL canvas)
> - Open footprint editor
> - Create a new footprint
> - Place a new SMD rectangular PAD of 1.5mmx1.5mm size
> - Change footprint properties and set "Pad clearance" to -1 (in mm)
> => pcbnew crash
> 
> It is crashing because at pcbnew/pcb_painter.cpp:777 a polyset is filled
> based on shape and clearance:
> 
> aPad->TransformShapeWithClearanceToPolygon ...
> 
> But in this case (parameter of clearance) the returned polyset is empty
> 
> so code at pcbnew/pcb_painter.cpp:783
> 
> m_gal->DrawPolyline( polySet.COutline( 0 ) );
> 
> always crash because polySet has an empty m_poly property (crash in
> COutline in fact...).
> 
> To fix this:
> Check polySet is not empty:
> 
>         if( polySet.OutlineCount() > 0 )
>              m_gal->DrawPolyline( polySet.COutline( 0 ) );
> 
> other solution:
> Modify SHAPE_POLY_SET::COutline(int aIndex)
> (include/geometry/shape_poly_set.h:190)
> To deny "aIndex" out of range values...
> 
> 
> An other solution:
> Perhaps it's not logical to allow negative values but in this case
> interface should deny enter a negative value (and check existing values
> from footprint/schematics...)...
> 
> 
> 
> Application: pcbnew
> Version: no-vcs-found-7613~59~ubuntu16.04.1-experimental, release build
> Libraries: wxWidgets 3.0.2
>            libcurl/7.47.0 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32 librtmp/2.3
> Platform: Linux 4.4.0-62-generic x86_64, 64 bit, Little endian, wxGTK
> - Build Info -
> wxWidgets: 3.0.2 (wchar_t,wx containers,compatible with 2.8)
> Boost: 1.58.0
> Curl: 7.47.0
> KiCad - Compiler: GCC 5.4.0 with C++ ABI 1009
>         Settings: USE_WX_GRAPHICS_CONTEXT=OFF
>                   USE_WX_OVERLAY=OFF
>                   KICAD_SCRIPTING=ON
>                   KICAD_SCRIPTING_MODULES=ON
>                   KICAD_SCRIPTING_WXPYTHON=ON
>                   KICAD_SCRIPTING_ACTION_MENU=ON
>                   BUILD_GITHUB_PLUGIN=ON
>                   KICAD_USE_SCH_IO_MANAGER=ON
>                   KICAD_USE_OCE=ON
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 


References