Subject: bug#3208: 23.0.93; Memory full / crash when displaying lots of characters from a large font (like Arial Unicode or Code2000) which is not explicitly selected (on Win32)

From: Kenichi Handa <[email-masked]>
Date: Fri, 26 Jun 2009 22:12:38 +0900

In article <[email-masked]>, Jason Rumney <[email-masked]> writes:

> Kenichi Handa wrote:
> > If no GC happens while displaying all characters of that
> > long line, those temporarily created Lisp vectors accumulate
> > in memory without reused, which may lead to memory full.
> >   

> While I was profiling to try to identify a possible cause, there were 6 
> GCs in the 25 seconds that Emacs was running (taking up 22% of the 
> time). So GC does seem to happen, though maybe it was after the first 
> warning was thrown.

I added a static variable `vconcat_size' that accumulates
the size of vectors created by Fvconcat at the end of
font_list_entities.  After (insert-char #x2203 10000), GC is
called once while update_menu_bar is called.  After that,
until memory_full is called (in the Fvconcat above), no GC
is called, and vconcat_size increases by about 100M which
means at least 400M bytes is consumued by dead vectors.

So, I think the above hypothesis is correct.

---
Kenichi Handa
[email-masked]