[Twisted-Python] trac's reliability

James Y Knight foom at fuhm.net
Wed Nov 29 14:55:07 EST 2006


On Nov 29, 2006, at 12:53 AM, James Y Knight wrote:
> Current trac status:
> more or less working.

So, two issues. Are there volunteers for following up on these with  
trac developers? I don't much feel like it, and JP says he's tired of  
doing it.

1) Trac just plain doesn't work with BDB. Pounding it with queries  
will reliably cause the process to segfault:

/usr/sbin/ab2 -t 1000 -c10 -n100 http://host/trac/browser/

Segfaults every time. Here's two backtraces. This is fixed by using  
fsfs.

Program terminated with signal 11, Segmentation fault.

#0  0xb6a994d8 in apr_pool_destroy (pool=0x1c1) at apr_pools.c:727
727         while (pool->child)
(gdb) bt
#0  0xb6a994d8 in apr_pool_destroy (pool=0x1c1) at apr_pools.c:727
#1  0xb6a994e9 in apr_pool_destroy (pool=0x8fc1500) at apr_pools.c:728
#2  0xb6c09154 in svn_error_clear (err=0x8c908b0) at subversion/ 
libsvn_subr/error.c:273
#3  0xb6a1a9a8 in svn_fs_bdb__wrap_db (fs=0x85f8a70,
     operation=0xb6a3304f "opening 'nodes' table", db_err=0)
     at subversion/libsvn_fs_base/bdb/bdb-err.c:93
#4  0xb6a23026 in open_databases (fs=0x85f8a70, create=0,
     path=0x85f8570 "/home/trac/svn/Twisted/db", pool=0x85f8270)
     at subversion/libsvn_fs_base/fs.c:559
#5  0xb6a23488 in base_open (fs=0x85f8a70, path=0x8fc1500 "\220\004",  
pool=0x85f8270)
     at subversion/libsvn_fs_base/fs.c:685
#6  0xb6d92a21 in svn_fs_open (fs_p=0x85f8530, path=0x85f8570 "/home/ 
trac/svn/Twisted/db",
     fs_config=0x0, pool=0x85f8270) at subversion/libsvn_fs/fs- 
loader.c:367
#7  0xb697435d in get_repos (repos_p=0xb763757c, path=Variable "path"  
is not available.
)
     at subversion/libsvn_repos/repos.c:1803
#8  0xb681c394 in _wrap_svn_repos_open (self=0x0, args=0x865a7ec)
     at ./subversion/bindings/swig/python/svn_repos.c:2047
#9  0x0805950c in PyObject_Call (func=0xb68f88ec, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#10 0x080afdd7 in PyEval_CallObjectWithKeywords (func=0x1c1,  
arg=0x865a7ec, kw=0x0)
     at ../Python/ceval.c:3425
#11 0x080a87ed in builtin_apply (self=0x0, args=0x1c1) at ../Python/ 
bltinmodule.c:100
#12 0x080b6911 in PyEval_EvalFrame (f=0x8aae9a4) at ../Python/ceval.c: 
3558
#13 0x080b716d in PyEval_EvalCodeEx (co=0xb68e77a0,  
globals=0xb683e02c, locals=0x0,
     args=0x89a3fe4, argcount=2, kws=0x89a3fec, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#14 0x080b5619 in PyEval_EvalFrame (f=0x89a3e7c) at ../Python/ceval.c: 
3651
#15 0x080b716d in PyEval_EvalCodeEx (co=0xb6cc6620,  
globals=0xb6cafe84, locals=0x0,
     args=0xb00d55d8, argcount=4, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
---Type <return> to continue, or q <return> to quit---
     at ../Python/ceval.c:2736
#16 0x080fb5fd in function_call (func=0xb684487c, arg=0xb00d55cc,  
kw=0x0)
     at ../Objects/funcobject.c:548
#17 0x0805950c in PyObject_Call (func=0xb684487c, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#18 0x0805eac5 in instancemethod_call (func=0xb684487c,  
arg=0xb00d55cc, kw=0x1c1)
     at ../Objects/classobject.c:2447
#19 0x0805950c in PyObject_Call (func=0xb4fd52fc, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#20 0x0808a965 in slot_tp_init (self=0x1c1, args=0x1c1, kwds=0x1c1)
     at ../Objects/typeobject.c:4762
#21 0x0808ca88 in type_call (type=0x84aa764, args=0xb4a654b4, kwds=0x0)
     at ../Objects/typeobject.c:435
#22 0x0805950c in PyObject_Call (func=0x84aa764, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#23 0x080b4af7 in PyEval_EvalFrame (f=0x8d293dc) at ../Python/ceval.c: 
3766
#24 0x080b570c in PyEval_EvalFrame (f=0x8f1c974) at ../Python/ceval.c: 
3640
#25 0x080b570c in PyEval_EvalFrame (f=0x84f9d4c) at ../Python/ceval.c: 
3640
#26 0x080b716d in PyEval_EvalCodeEx (co=0xb7873c60,  
globals=0xb788279c, locals=0x0,
     args=0x9130b10, argcount=2, kws=0x9130b18, kwcount=0,  
defs=0xb78991d8, defcount=1,
     closure=0x0) at ../Python/ceval.c:2736
#27 0x080b5619 in PyEval_EvalFrame (f=0x913098c) at ../Python/ceval.c: 
3651
#28 0x080b570c in PyEval_EvalFrame (f=0x936ac2c) at ../Python/ceval.c: 
3640
#29 0x080b570c in PyEval_EvalFrame (f=0x89d8d44) at ../Python/ceval.c: 
3640
#30 0x080b570c in PyEval_EvalFrame (f=0x9074f5c) at ../Python/ceval.c: 
3640
#31 0x080b570c in PyEval_EvalFrame (f=0x936d434) at ../Python/ceval.c: 
3640
#32 0x080b716d in PyEval_EvalCodeEx (co=0xb7a395e0,  
globals=0xb7991f0c, locals=0x0,
     args=0xb4a314c0, argcount=3, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
---Type <return> to continue, or q <return> to quit---
#33 0x080fb5fd in function_call (func=0xb76e056c, arg=0xb4a314b4,  
kw=0x0)
     at ../Objects/funcobject.c:548
#34 0x0805950c in PyObject_Call (func=0xb76e056c, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#35 0x0805eac5 in instancemethod_call (func=0xb76e056c,  
arg=0xb4a314b4, kw=0x1c1)
     at ../Objects/classobject.c:2447
#36 0x0805950c in PyObject_Call (func=0xb4fccb94, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#37 0x0808ac77 in slot_tp_call (self=0x1c1, args=0x1c1, kwds=0x1c1)
     at ../Objects/typeobject.c:4536
#38 0x0805950c in PyObject_Call (func=0xb765eb4c, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#39 0x080b4af7 in PyEval_EvalFrame (f=0x8f7f46c) at ../Python/ceval.c: 
3766
#40 0x080b716d in PyEval_EvalCodeEx (co=0xb77e1620,  
globals=0xb77a13e4, locals=0x0,
     args=0xb4f5f898, argcount=1, kws=0x9107388, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#41 0x080fb5fd in function_call (func=0xb76e025c, arg=0xb4f5f88c,  
kw=0xb4df3cec)
     at ../Objects/funcobject.c:548
#42 0x0805950c in PyObject_Call (func=0xb76e025c, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#43 0x080b4c37 in PyEval_EvalFrame (f=0x916f734) at ../Python/ceval.c: 
3835
#44 0x080b716d in PyEval_EvalCodeEx (co=0xb7b0b660,  
globals=0xb7b09b54, locals=0x0,
     args=0x89e41a0, argcount=3, kws=0x913b2d0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#45 0x080fb5fd in function_call (func=0xb7b21b54, arg=0x89e4194,  
kw=0x91ded74)
     at ../Objects/funcobject.c:548
#46 0x0805950c in PyObject_Call (func=0xb7b21b54, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#47 0x080b4c37 in PyEval_EvalFrame (f=0x9199a04) at ../Python/ceval.c: 
3835
---Type <return> to continue, or q <return> to quit---
#48 0x080b716d in PyEval_EvalCodeEx (co=0xb7b0b920,  
globals=0xb7b09b54, locals=0x0,
     args=0x89debc8, argcount=3, kws=0x907ad38, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#49 0x080fb5fd in function_call (func=0xb7b21c34, arg=0x89debbc,  
kw=0x91d1d74)
     at ../Objects/funcobject.c:548
#50 0x0805950c in PyObject_Call (func=0xb7b21c34, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#51 0x080b4c37 in PyEval_EvalFrame (f=0x81dbf84) at ../Python/ceval.c: 
3835
#52 0x080b716d in PyEval_EvalCodeEx (co=0xb76fb560,  
globals=0xb76fd24c, locals=0x0,
     args=0xb7aaad78, argcount=2, kws=0x837dfe8, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#53 0x080fb5fd in function_call (func=0xb77001ec, arg=0xb7aaad6c,  
kw=0xb7b1f79c)
     at ../Objects/funcobject.c:548
#54 0x0805950c in PyObject_Call (func=0xb77001ec, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#55 0x080b4c37 in PyEval_EvalFrame (f=0x8188e74) at ../Python/ceval.c: 
3835
#56 0x080b570c in PyEval_EvalFrame (f=0x81905fc) at ../Python/ceval.c: 
3640
#57 0x080b716d in PyEval_EvalCodeEx (co=0xb7b17ae0,  
globals=0xb7b09cec, locals=0x0,
     args=0xb7662278, argcount=1, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#58 0x080fb5fd in function_call (func=0xb7b1bdf4, arg=0xb766226c,  
kw=0x0)
     at ../Objects/funcobject.c:548
#59 0x0805950c in PyObject_Call (func=0xb7b1bdf4, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#60 0x0805eac5 in instancemethod_call (func=0xb7b1bdf4,  
arg=0xb766226c, kw=0x1c1)
     at ../Objects/classobject.c:2447
#61 0x0805950c in PyObject_Call (func=0xb7847144, arg=0x1c1, kw=0x1c1)
     at ../Objects/abstract.c:1756
#62 0x080afdd7 in PyEval_CallObjectWithKeywords (func=0x1c1,  
arg=0xb7e1c02c, kw=0x0)
---Type <return> to continue, or q <return> to quit---
     at ../Python/ceval.c:3425
#63 0x080e003d in t_bootstrap (boot_raw=0x83d9950) at ../Modules/ 
threadmodule.c:434
#64 0xb7fb9361 in start_thread () from /lib/tls/i686/cmov/ 
libpthread.so.0
#65 0xb7f25bde in clone () from /lib/tls/i686/cmov/libc.so.6

#0  0xb5b8114b in svn_error_clear (err=0x72) at subversion/ 
libsvn_subr/error.c:273
273           apr_pool_destroy(err->pool);
(gdb) bt
#0  0xb5b8114b in svn_error_clear (err=0x72) at subversion/ 
libsvn_subr/error.c:273
#1  0xb59929a8 in svn_fs_bdb__wrap_db (fs=0x878fb50,
     operation=0xb59ab04f "opening 'nodes' table", db_err=0)
     at subversion/libsvn_fs_base/bdb/bdb-err.c:93
#2  0xb599b026 in open_databases (fs=0x878fb50, create=0,
     path=0x878f650 "/home/trac/svn/Twisted/db", pool=0x878f350)
     at subversion/libsvn_fs_base/fs.c:559
#3  0xb599b488 in base_open (fs=0x878fb50, path=0x8bccd00 "",  
pool=0x878f350)
     at subversion/libsvn_fs_base/fs.c:685
#4  0xb5d0ba21 in svn_fs_open (fs_p=0x878f610, path=0x878f650 "/home/ 
trac/svn/Twisted/db",
     fs_config=0x0, pool=0x878f350) at subversion/libsvn_fs/fs- 
loader.c:367
#5  0xb58ec35d in get_repos (repos_p=0xb00fa57c, path=Variable "path"  
is not available.
)
     at subversion/libsvn_repos/repos.c:1803
#6  0xb5794394 in _wrap_svn_repos_open (self=0x0, args=0x8b03d0c)
     at ./subversion/bindings/swig/python/svn_repos.c:2047
#7  0x0805950c in PyObject_Call (func=0xb57b558c, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#8  0x080afdd7 in PyEval_CallObjectWithKeywords (func=0x72,  
arg=0x8b03d0c, kw=0x0)
     at ../Python/ceval.c:3425
#9  0x080a87ed in builtin_apply (self=0x0, args=0x72) at ../Python/ 
bltinmodule.c:100
#10 0x080b6911 in PyEval_EvalFrame (f=0x8755524) at ../Python/ceval.c: 
3558
#11 0x080b716d in PyEval_EvalCodeEx (co=0xb5862820,  
globals=0xb57b913c, locals=0x0,
     args=0x8777e94, argcount=2, kws=0x8777e9c, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#12 0x080b5619 in PyEval_EvalFrame (f=0x8777d2c) at ../Python/ceval.c: 
3651
#13 0x080b716d in PyEval_EvalCodeEx (co=0xb5c436e0,  
globals=0xb5c2e57c, locals=0x0,
     args=0x8649380, argcount=4, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#14 0x080fb5fd in function_call (func=0xb57c08ec, arg=0x8649374, kw=0x0)
---Type <return> to continue, or q <return> to quit---
     at ../Objects/funcobject.c:548
#15 0x0805950c in PyObject_Call (func=0xb57c08ec, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#16 0x0805eac5 in instancemethod_call (func=0xb57c08ec,  
arg=0x8649374, kw=0x72)
     at ../Objects/classobject.c:2447
#17 0x0805950c in PyObject_Call (func=0x863052c, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#18 0x0808a965 in slot_tp_init (self=0x72, args=0x72, kwds=0x72)
     at ../Objects/typeobject.c:4762
#19 0x0808ca88 in type_call (type=0x84b4594, args=0x8ad9144, kwds=0x0)
     at ../Objects/typeobject.c:435
#20 0x0805950c in PyObject_Call (func=0x84b4594, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#21 0x080b4af7 in PyEval_EvalFrame (f=0x886c41c) at ../Python/ceval.c: 
3766
#22 0x080b570c in PyEval_EvalFrame (f=0x88f695c) at ../Python/ceval.c: 
3640
#23 0x080b570c in PyEval_EvalFrame (f=0x88f4a9c) at ../Python/ceval.c: 
3640
#24 0x080b716d in PyEval_EvalCodeEx (co=0xb77edca0,  
globals=0xb77fc79c, locals=0x0,
     args=0x88f5548, argcount=2, kws=0x88f5550, kwcount=0,  
defs=0xb78121d8, defcount=1,
     closure=0x0) at ../Python/ceval.c:2736
#25 0x080b5619 in PyEval_EvalFrame (f=0x88f53c4) at ../Python/ceval.c: 
3651
#26 0x080b570c in PyEval_EvalFrame (f=0x88f4e8c) at ../Python/ceval.c: 
3640
#27 0x080b570c in PyEval_EvalFrame (f=0x85c49fc) at ../Python/ceval.c: 
3640
#28 0x080b570c in PyEval_EvalFrame (f=0x88f345c) at ../Python/ceval.c: 
3640
#29 0x080b570c in PyEval_EvalFrame (f=0x8bdf084) at ../Python/ceval.c: 
3640
#30 0x080b716d in PyEval_EvalCodeEx (co=0xb79b3620,  
globals=0xb790bf0c, locals=0x0,
     args=0xb12db358, argcount=3, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#31 0x080fb5fd in function_call (func=0xb765a56c, arg=0xb12db34c,  
kw=0x0)
     at ../Objects/funcobject.c:548
---Type <return> to continue, or q <return> to quit---
#32 0x0805950c in PyObject_Call (func=0xb765a56c, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#33 0x0805eac5 in instancemethod_call (func=0xb765a56c,  
arg=0xb12db34c, kw=0x72)
     at ../Objects/classobject.c:2447
#34 0x0805950c in PyObject_Call (func=0x8650dec, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#35 0x0808ac77 in slot_tp_call (self=0x72, args=0x72, kwds=0x72)
     at ../Objects/typeobject.c:4536
#36 0x0805950c in PyObject_Call (func=0xb75d8b4c, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#37 0x080b4af7 in PyEval_EvalFrame (f=0x88f475c) at ../Python/ceval.c: 
3766
#38 0x080b716d in PyEval_EvalCodeEx (co=0xb775b660,  
globals=0xb771b3e4, locals=0x0,
     args=0xaa0b6b18, argcount=1, kws=0x85b0940, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#39 0x080fb5fd in function_call (func=0xb765a25c, arg=0xaa0b6b0c,  
kw=0x8c988ac)
     at ../Objects/funcobject.c:548
#40 0x0805950c in PyObject_Call (func=0xb765a25c, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#41 0x080b4c37 in PyEval_EvalFrame (f=0x898a6b4) at ../Python/ceval.c: 
3835
#42 0x080b716d in PyEval_EvalCodeEx (co=0xb7a856a0,  
globals=0xb7a83b54, locals=0x0,
     args=0x86d6588, argcount=3, kws=0x85896c8, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#43 0x080fb5fd in function_call (func=0xb7a9bb54, arg=0x86d657c,  
kw=0x8c9a35c)
     at ../Objects/funcobject.c:548
#44 0x0805950c in PyObject_Call (func=0xb7a9bb54, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#45 0x080b4c37 in PyEval_EvalFrame (f=0x85dbcfc) at ../Python/ceval.c: 
3835
#46 0x080b716d in PyEval_EvalCodeEx (co=0xb7a85960,  
globals=0xb7a83b54, locals=0x0,
     args=0xaa0c1e20, argcount=3, kws=0x88efb88, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
---Type <return> to continue, or q <return> to quit---
     at ../Python/ceval.c:2736
#47 0x080fb5fd in function_call (func=0xb7a9bc34, arg=0xaa0c1e14,  
kw=0x8c9acec)
     at ../Objects/funcobject.c:548
#48 0x0805950c in PyObject_Call (func=0xb7a9bc34, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#49 0x080b4c37 in PyEval_EvalFrame (f=0x875ec14) at ../Python/ceval.c: 
3835
#50 0x080b716d in PyEval_EvalCodeEx (co=0xb76755a0,  
globals=0xb767724c, locals=0x0,
     args=0x8a1e358, argcount=2, kws=0x86a9a00, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#51 0x080fb5fd in function_call (func=0xb767a1ec, arg=0x8a1e34c,  
kw=0xb7a9979c)
     at ../Objects/funcobject.c:548
#52 0x0805950c in PyObject_Call (func=0xb767a1ec, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#53 0x080b4c37 in PyEval_EvalFrame (f=0x876f884) at ../Python/ceval.c: 
3835
#54 0x080b570c in PyEval_EvalFrame (f=0x829ee2c) at ../Python/ceval.c: 
3640
#55 0x080b716d in PyEval_EvalCodeEx (co=0xb7a91b20,  
globals=0xb7a83cec, locals=0x0,
     args=0x8a48658, argcount=1, kws=0x0, kwcount=0, defs=0x0,  
defcount=0, closure=0x0)
     at ../Python/ceval.c:2736
#56 0x080fb5fd in function_call (func=0xb7a95df4, arg=0x8a4864c, kw=0x0)
     at ../Objects/funcobject.c:548
#57 0x0805950c in PyObject_Call (func=0xb7a95df4, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#58 0x0805eac5 in instancemethod_call (func=0xb7a95df4,  
arg=0x8a4864c, kw=0x72)
     at ../Objects/classobject.c:2447
#59 0x0805950c in PyObject_Call (func=0x8a386bc, arg=0x72, kw=0x72)
     at ../Objects/abstract.c:1756
#60 0x080afdd7 in PyEval_CallObjectWithKeywords (func=0x72,  
arg=0xb7d9602c, kw=0x0)
     at ../Python/ceval.c:3425
#61 0x080e003d in t_bootstrap (boot_raw=0x875e6d8) at ../Modules/ 
threadmodule.c:434
---Type <return> to continue, or q <return> to quit---
#62 0xb7f33361 in start_thread () from /lib/tls/i686/cmov/ 
libpthread.so.0
#63 0xb7e9fbde in clone () from /lib/tls/i686/cmov/libc.so.6



2) Horrible horrible locking (?) issues on the /trac/browser page.  
Hitting it with concurrency > 2 makes it handle about one request  
every 2 seconds, probably database lock contention or something. But  
also, it starts giving error pages like this. This is an traceback  
when trying to generate an error page. Yay.

Traceback (most recent call last):
   File "/home/trac/Projects/trac/trunk/trac/web/api.py", line 382,  
in send_error
     'text/html')
   File "/home/trac/Projects/trac/trunk/trac/web/chrome.py", line  
475, in render_template
     return stream.render(method, doctype=doctype)
   File "/home/trac/Projects/genshi/trunk/genshi/core.py", line 146,  
in render
     output = u''.join(list(generator))
   File "/home/trac/Projects/genshi/trunk/genshi/output.py", line  
200, in __call__
     for kind, data, pos in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/output.py", line  
486, in __call__
     for kind, data, pos in chain(stream, [(None, None, None)]):
   File "/home/trac/Projects/genshi/trunk/genshi/output.py", line  
436, in __call__
     for kind, data, pos in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/core.py", line 207,  
in _ensure
     for event in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/core.py", line 207,  
in _ensure
     for event in stream:
   File "/home/trac/Projects/trac/trunk/trac/web/chrome.py", line  
478, in _strip_accesskeys
     for kind, data, pos in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/filters.py", line  
313, in __call__
     for kind, data, pos in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
1145, in _match
     content = list(content)
   File "/home/trac/Projects/genshi/trunk/genshi/filters.py", line  
313, in __call__
     for kind, data, pos in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
1120, in _match
     for event in stream:
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
1109, in _strip
     event = stream.next()
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
941, in _eval
     for event in substream:
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
920, in _eval
     ctxt):
   File "/home/trac/Projects/genshi/trunk/genshi/template.py", line  
930, in _eval
     result = data.evaluate(ctxt)
   File "/home/trac/Projects/genshi/trunk/genshi/eval.py", line 101,  
in evaluate
     {'data': data})
   File "/home/trac/Projects/trac/trunk/templates/error.html", line  
36, in <Expression u"get_reporter_id(req)">
     <input type="hidden" name="reporter" value="${get_reporter_id 
(req)}" />
   File "/home/trac/Projects/trac/trunk/trac/util/__init__.py", line  
50, in get_reporter_id
     name = req.session.get('name', None)
AttributeError: 'NoneType' object has no attribute 'get'


James




More information about the Twisted-Python mailing list