kernel BUG at gzip.c:3334! (2.4.23-ck1 etc)

Jorge Nerin <[email protected]>
Newsgroups gmane.network.tux
Message-ID <[email protected]>
Hello, I was testing the value of "2" in /proc/sys/net/tux/compression 
when I found that:

feb 24 15:04:32 head tux: Tux version: 3/0/0
Feb 24 15:04:32 head kernel: TUX: logger thread started.
Feb 24 15:04:32 head kernel: TUX: thread 0 listens on http://0.0.0.0:80.
feb 24 15:04:32 head tux: tux startup succeeded
Feb 24 15:17:56 head kernel: deflate in loop returned -5
Feb 24 15:17:56 head kernel: kernel BUG at gzip.c:3334!
Feb 24 15:17:56 head kernel: invalid operand: 0000
Feb 24 15:17:56 head kernel: CPU:    0
Feb 24 15:17:57 head kernel: EIP:    
0010:[lockd:nlmsvc_ops_Rc18947fa+160968/58190201]    Not tainted
Feb 24 15:17:57 head kernel: EFLAGS: 00010286
Feb 24 15:17:57 head kernel: eax: 0000001c   ebx: c291eee0   ecx: 
00000000   edx: c705e000
Feb 24 15:17:57 head kernel: esi: c1243e00   edi: c1243e04   ebp: 
00000ce8   esp: c1243db8
Feb 24 15:17:57 head kernel: ds: 0018   es: 0018   ss: 0018
Feb 24 15:17:57 head kernel: Process tux (pid: 30101, stackpage=c1243000)
Feb 24 15:17:57 head kernel: Stack: c89c9136 fffffffb c1242000 00004040 
c6873f20 c89b452d c291eee0 c32ec000
Feb 24 15:17:57 head kernel:        c368600b c1243e00 c1243e04 c32ec000 
c3686000 c0eb6000 00000000 c1243e80
Feb 24 15:17:57 head kernel:        c3c5e000 00000808 00000cb1 00000cdd 
c0eb620c 0000e000 c0d1b740 000001f0
Feb 24 15:17:57 head kernel: Call Trace:    
[lockd:nlmsvc_ops_Rc18947fa+173830/58177339] 
[lockd:nlmsvc_ops_Rc18947fa+88829/58262340] [alloc_skb+214/416] 
[do_generic_file_read+544/1312] [lockd:nlmsvc_ops_Rc18947fa+89644/58261525]
Feb 24 15:17:57 head kernel:   
[lockd:nlmsvc_ops_Rc18947fa+88464/58262705] 
[lockd:nlmsvc_ops_Rc18947fa+188528/58162641] 
[lockd:nlmsvc_ops_Rc18947fa+109604/58241565] 
[lockd:nlmsvc_ops_Rc18947fa+83464/58267705] 
[lockd:nlmsvc_ops_Rc18947fa+86884/58264285] 
[lockd:nlmsvc_ops_Rc18947fa+188852/58162317]
Feb 24 15:17:57 head kernel:   
[lockd:nlmsvc_ops_Rc18947fa+188528/58162641] 
[lockd:nlmsvc_ops_Rc18947fa+130232/58220937] 
[lockd:nlmsvc_ops_Rc18947fa+188528/58162641] 
[lockd:nlmsvc_ops_Rc18947fa+137866/58213303] 
[lockd:nlmsvc_ops_Rc18947fa+188528/58162641] 
[lockd:nlmsvc_ops_Rc18947fa+188528/58162641]
Feb 24 15:17:57 head kernel:   [path_release+15/48] [sys_chdir+156/176] 
[sys_tux+34/97] [system_call+51/64]
Feb 24 15:17:57 head kernel:
Feb 24 15:17:57 head kernel: Code: 0f 0b 06 0d 2f 91 9c c8 59 58 8b 43 
04 89 46 00 8b 43 10 89
Feb 24 15:17:57 head kernel:  <5>TUX: thread 0 stopping ...

The partition type is reiserfs, just in case it does matter, the kernel 
is plain 2.4.23 with bits of the Con Kolivas patchset (O1 scheduler, 
lowlatency) a patch to disable ECN after a number of retries and a patch 
to correct the content-length in tux when compression is in use.

It worked ok during some time, but then it stopped with this bug, I had 
to reboot. So far so good the value of "1" in compression works ok for 
me (precompressed files) with a patch (that I can't remember the autor) 
needed to send the correct Content-length, the compressed one instead of 
the original one.

I resend the patch here, because the last time I sent it I did it with 
the wrong subject and it's needed in order to enable and use compression 
correctly (mozilla waits until timeout for the rest of the Content-length).

--- linux-2.4.20-ck2-tux2/net/tux/proto_http.c    Wed Jan  8 08:55:07 2003
+++ linux/net/tux/proto_http.c    Wed Nov 20 14:34:59 2002
@@ -1958,9 +1958,25 @@
         if (partial)
             curr += sprintf(curr, "%Ld", req->output_len);
         else {
+            /*
             // "%d" req->total_file_len
             memcpy(curr, &req->etag, req->lendigits);
             curr += req->lendigits;
+            */
+            /* The ETag was generated with an uncompressed file's
+             *  info.  I've left the ETag as it is, but the size
+             *  needs to be from req->total_file_len.  In other
+             *  words, needs to be from the compressed image if
+             *  we're sending gzip versions.
+             *  - [email protected] -- 2002-11-13
+             */
+            if (req->content_gzipped)
+                curr += sprintf(curr, "%Ld", req->total_file_len);
+            else {
+                memcpy(curr, &req->etag, req->lendigits);
+                curr += req->lendigits;
+            }
+
         }
         if (tux_generate_etags && (req->status != 404))
         {


-- 
Jorge Nerin
<[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.