Codebase list swi-prolog / 160b06c
Removed patches (fixed upstream): * Removed patches (fixed upstream): - new-readline.diff - mt-crash-fix.diff Євгеній Мещеряков 10 years ago
4 changed file(s) with 5 addition(s) and 63 deletion(s). Raw diff Collapse all Expand all
00 swi-prolog (6.6.3-1) unstable; urgency=medium
11
22 * New upstream release
3
4 -- Євгеній Мещеряков <eugen@debian.org> Wed, 19 Mar 2014 22:59:27 +0100
3 * Removed patches (fixed upstream):
4 - new-readline.diff
5 - mt-crash-fix.diff
6
7 -- Євгеній Мещеряков <eugen@debian.org> Wed, 19 Mar 2014 23:03:32 +0100
58
69 swi-prolog (6.6.2-3) unstable; urgency=medium
710
+0
-49
debian/patches/mt-crash-fix.diff less more
0 diff --git a/src/pl-thread.c b/src/pl-thread.c
1 index 19c2484..9feaf0b 100644
2 --- a/src/pl-thread.c
3 +++ b/src/pl-thread.c
4 @@ -2773,9 +2773,11 @@ running. The thread may pick a message containing an atom from the
5 queue, which now has not been marked and is no longer part of the
6 queue, so it isn't marked in the queue either.
7
8 -Note that we only need this for queues that are not associated to
9 -threads. Those associated with a thread mark both the stacks and the
10 -queue in one pass, marking the atoms in either.
11 +Originally, I thought we only need this for queues that are not
12 +associated to threads. Those associated with a thread mark both the
13 +stacks and the queue in one pass, marking the atoms in either. However,
14 +we also need to lock to avoid get_message() destroying the record while
15 +markAtomsMessageQueue() scans it. This fixes the reopened Bug#142.
16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17
18 static int
19 @@ -2827,13 +2829,10 @@ get_message(message_queue *queue, term_t msg, struct timespec *deadline ARG_LD)
20 if ( rc )
21 { DEBUG(MSG_QUEUE, Sdprintf("%d: match\n", PL_thread_self()));
22
23 - if (GD->atoms.gc_active)
24 - markAtomsRecord(msgp->message);
25 + if (GD->atoms.gc_active)
26 + markAtomsRecord(msgp->message);
27
28 -#ifdef O_ATOMGC
29 - if ( queue->type == QTYPE_QUEUE )
30 - simpleMutexLock(&queue->gc_mutex);
31 -#endif
32 + simpleMutexLock(&queue->gc_mutex); /* see (*) */
33 if ( prev )
34 { if ( !(prev->next = msgp->next) )
35 queue->tail = prev;
36 @@ -2841,10 +2840,8 @@ get_message(message_queue *queue, term_t msg, struct timespec *deadline ARG_LD)
37 { if ( !(queue->head = msgp->next) )
38 queue->tail = NULL;
39 }
40 -#ifdef O_ATOMGC
41 - if ( queue->type == QTYPE_QUEUE )
42 - simpleMutexUnlock(&queue->gc_mutex);
43 -#endif
44 + simpleMutexUnlock(&queue->gc_mutex);
45 +
46 free_thread_message(msgp);
47 queue->size--;
48 if ( queue->wait_for_drain )
+0
-10
debian/patches/new-readline.diff less more
0 --- a/src/os/pl-rl.c
1 +++ b/src/os/pl-rl.c
2 @@ -96,7 +96,6 @@
3 /* readline.h versions */
4 extern int rl_begin_undo_group(void); /* delete when conflict arrises! */
5 extern int rl_end_undo_group(void);
6 -extern Function *rl_event_hook;
7 #ifndef HAVE_RL_FILENAME_COMPLETION_FUNCTION
8 #define rl_filename_completion_function filename_completion_function
9 extern char *filename_completion_function(const char *, int);
44 no-rpath.diff
55 add-pthread.diff
66 override-PLLIBDIR.diff
7 new-readline.diff
8 mt-crash-fix.diff