Hi Henrik,
I'm working on port COSS on WIN32.
I'have just found a fatal BUG in COSS:
In the function a_file_callback() in async_io.c, the structure aqe is 
cleared before the call to cbdataReferenceValidDone(), so the cbdata 
pointer is invalid.
The following can be a possible fix:
Index: async_io.c
===================================================================
RCS file: /cvsroot/squid/squid/src/fs/coss/async_io.c,v
retrieving revision 1.3.26.1
diff -u -p -r1.3.26.1 async_io.c
--- async_io.c  17 Apr 2002 18:58:23 -0000      1.3.26.1
+++ async_io.c  19 May 2002 11:53:07 -0000
@@ -159,6 +159,7 @@ a_file_callback(async_queue_t * q)
      DWCB *wc;
      FREE *freefunc;
      void *cbdata;
+    void *callback_data;
      void *buf;
      int fd;
      async_queue_entry_t *aqe;
@@ -186,6 +187,7 @@ a_file_callback(async_queue_t * q)
                 buf = aqe->aq_e_buf;
                 fd = aqe->aq_e_fd;
                 type = aqe->aq_e_type;
+               callback_data = aqe->aq_e_callback_data;
                 /* Free slot */
                 bzero(aqe, sizeof(async_queue_entry_t));
@@ -193,7 +195,7 @@ a_file_callback(async_queue_t * q)
                 q->aq_numpending--;
                 /* Callback */
-               if (cbdataReferenceValidDone(aqe->aq_e_callback_data, 
&cbdata)) {
+               if (cbdataReferenceValidDone(callback_data, &cbdata)) {
                     if (type == AQ_ENTRY_READ)
                         rc(fd, buf, retval, reterr, cbdata);
                     if (type == AQ_ENTRY_WRITE)
Regards
Guido
-
=======================================================
Serassio Guido
Via Albenga, 11/4                                       10134 - Torino - ITALY
E-mail: guido.serassio@serassio.it
WWW: http://www.serassio.it
Received on Sun May 19 2002 - 05:54:49 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:15:28 MST