emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 4 week-old pretest bugs


From: Jan Djärv
Subject: Re: 4 week-old pretest bugs
Date: Thu, 11 Jan 2007 08:46:38 +0100
User-agent: Thunderbird 1.5.0.9 (X11/20070102)



Chris Moore skrev:
Richard Stallman <address@hidden> writes:

     * running the same build on the same debian sid machine under KDE

when you run it under KDE, is that the GTK build of Emacs?

It's the same build in all cases.  The same binary files.  I make a
".deb" package from the results of the build and install that same
package on both machines, and run that same package under the various
desktop environments.  So in all cases it's using GTK.

Unfortunately, the comparison between the two machines is not very
conclusive because so many things could be different between them.

I don't know if you saw the silly patch for the problem which I posted
earlier today, but adding a static integer variable and incrementing
it before incrementing interrupt_input_blocked in the #define for
BLOCK_INPUT fixes the bug!

I arrived at that fix through a process of trial and error, not
through any understand at all of what's going on.

It is probably very timing related. A small change changes the timing. Can you try the attachet patch?

        Jan D.


Index: alloc.c
*** alloc.c.~1.405.~    2007-01-01 19:19:05.000000000 +0100
--- alloc.c     2007-01-11 08:44:47.000000000 +0100
***************
*** 130,137 ****
  #define BLOCK_INPUT_ALLOC                       \
    do                                            \
      {                                           \
!       if (pthread_self () == main_thread)     \
!       BLOCK_INPUT;                            \
        pthread_mutex_lock (&alloc_mutex);      \
      }                                           \
    while (0)
--- 130,137 ----
  #define BLOCK_INPUT_ALLOC                               \
    do                                                    \
      {                                                   \
!       if (pthread_equal (pthread_self (), main_thread)) \
!         sigblock (sigmask (SIGIO));                     \
        pthread_mutex_lock (&alloc_mutex);                \
      }                                                   \
    while (0)
***************
*** 139,146 ****
    do                                            \
      {                                           \
        pthread_mutex_unlock (&alloc_mutex);    \
!       if (pthread_self () == main_thread)     \
!       UNBLOCK_INPUT;                          \
      }                                           \
    while (0)
  
--- 139,146 ----
    do                                                    \
      {                                                   \
        pthread_mutex_unlock (&alloc_mutex);              \
!       if (pthread_equal (pthread_self (), main_thread)) \
!         sigunblock (sigmask (SIGIO));                   \
      }                                                   \
    while (0)
  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]