hello Robert. Given this code fragment and the discussion you raise about it, allow me to ask what perhaps is a naive question. If the sample you quote is incorrect, what is the correct way to accomplish the same task? -thanks -Brian
On Mar 13, 6:27pm, Robert Elz wrote: } Subject: Re: zsh crash in recent -current } Date: Wed, 13 Mar 2019 10:06:42 +0000 } From: Chavdar Ivanov <ci4...@gmail.com> } Message-ID: <cag0ouxheb4lzriuoz_jmovezet8beccmdep3pgzryauusjr...@mail.gmail.com> } } | I saw the one with the trashed history as well. } | } | I don't think it is zsh's problem, though. As I mentioned above, I've } | used v5.7 since it came out without any problems until perhaps 3-4 } | days ago. } } I would guess that maybe there is code like this } } for (list_ptr = list_head; list_ptr != NULL; list_ptr = list_ptr->nxt) } { } /* do stuff on list */ } if (element_should_be_deleted) { } /* with testing for NULLs added but not shown here */ } list_ptr->prev->nxt = list_ptr->nxt; } list_ptr->nxt->prev = list_ptr->prev; } free(list_ptr); } } } } } } which will "work" perfectly wih most versions of malloc, as } that free does not change anything in the memory that has been } freed, but will collapse in a giant heap if free() scribbles } over the memory as part of deleting things, which some of the } dumps that various people have shown on this (and similar) issues } looks to be what is happening (the scribbling - it is deliberate } to expose bugs like this one). } } Code like the above is easy to write, and most of the time works fine } (and would have worked with the previous malloc) but will die } big time when the arena is scrambled (not just zeroed, usually). } } Someone should look for something like this in the areas of zsh } that are crashing, and other programs. } } This is far more likely than the new malloc being broken, and just } only happening to hit a few programs, and is more likely than some } random memory corruption that simply has never been noticed until } now. } } kre } } >-- End of excerpt from Robert Elz