[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: PCB crash

On Mon, 16 May 2011 23:10:30 +0200
Kai-Martin Knaak <kmk@xxxxxxxxxxxx> wrote:

> Colin D Bennett wrote:
> >> When I load the attached footprint to the buffer, and I say "Break
> >> buffer elements to pieces" PCB segfaults:
> > 
> > Confirmed with git HEAD 39dd5f6cd91ec9032c6d2e3ca543e3f8f6cf0e4a
> > on amd64 (Ubuntu 11.04).
> > 
> The footprint converts fine for Peters pcb+gl (dowloaded on
> 05.04.2011) and for PCB from git (on 23.02.2011)

I bisected the bug and determined it was introduced 2011-04-30 by the
following commit:

git commit: 2ce35292b9e96da38cb56878005aba20891689eb
committer: Peter Clifton <pcjc2@xxxxxxxxx>
timestamp: Sat 2011-04-30 19:19:22 +0100
  Convert board objects to GLists of g_slice allocated memory

  This enables pointers for these objects to be immutable during their
  lifetime, which is a _huge_ benefit for some operations.

  Having otherwise was becoming VERY tiresome, and was a perenial source
  of bugs tripping up novice and experts of the codebase alike.
  Due to the risks associated with modifying the structure being
iterated over, this patch makes the relevant *_LOOP macros iterate over
a shallow copy of the underlying GList. This is slight overkill for
many cases, but until we have identified which do not modify the
data-structures it is wise to keep as we are.

Thanks to pcb's action scripting it was easy to do an automated test
for my bisection script with 

src/pcb --action-string "LoadFrom(ElementToBuffer,/tmp/RES400.fp) PasteBuffer(Restore) Quit()"


geda-user mailing list