package w3m tag 352585 patch thanks Package: w3m Version: 0.5.1-4 Followup-For: Bug #352585
The patch removes a deadlock from wrap_GC_warn_proc. This function maybe called while GC has a lock on its internals, so calls to GC from within wrap_GC_warn_proc can (will?) lead to a deadlock. The messages will now be displayed where the cursor currently is but it could be regarded as a bug in w3m if any such message appears. In this case the message is: "Repeated allocation of very large block (appr. size %ld): May lead to memory leak and poor performance." I do not know how to avoid it though. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (990, 'testing'), (500, 'unstable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.15 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Regards, -- Karsten Schölzel | Email: [EMAIL PROTECTED] Väderleden 9 4:98 | Jabber: [EMAIL PROTECTED] 97633 Luleå | VoIP: sip:[EMAIL PROTECTED] Sweden | sip:[EMAIL PROTECTED] | Tel: +4918015855857712 | Mobile: +46706725974
Many functions can NOT be used in wrap_GC_warn_proc because of possible lock in GC. Warnings from GC should only appear in development and otherwise regarded as bugs. --- commit 488d2a9493ff726f5c23ec8cf8ac7148469dc23b tree 2b9d97bad64a75fc22d11628254509e71f3b8ef4 parent 2c59d593b7d9a36d9c69e44d10741c2bde9252b3 author Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 12:46:18 +0200 committer Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 12:46:18 +0200 main.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index ab0732a..0d709ef 100644 --- a/main.c +++ b/main.c @@ -293,10 +293,9 @@ wrap_GC_warn_proc(char *msg, GC_word arg for (; n > 0; --n, ++i) { i %= sizeof(msg_ring) / sizeof(msg_ring[0]); - disp_message_nsec(Sprintf - (msg_ring[i].msg, - (unsigned long)msg_ring[i].arg)->ptr, FALSE, - 1, TRUE, FALSE); + + printf(msg_ring[i].msg, (unsigned long)msg_ring[i].arg); + sleep_till_anykey(1, 1); } lock = 0;