#10126 closed defect (fixed)
TracError: Genshi UnicodeEncodeError error while rendering template (fresh Trac install)
Reported by: | Owned by: | Christian Boos | |
---|---|---|---|
Priority: | normal | Milestone: | 0.12.3 |
Component: | general | Version: | |
Severity: | critical | Keywords: | genshi unicode |
Cc: | Thijs Triemstra | Branch: | |
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description (last modified by )
I have installed Trac like I have several times before, using 0.11 and 0.12, under Ubuntu 8.04 and Ubuntu 10.04. Today I installed 0.12.2 fresh, using this command:
sudo easy_install Trac
But when I visit my Trac site, I get this error in my web page:
Traceback (most recent call last): File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/api.py", line 440, in send_error data, 'text/html') File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/chrome.py", line 885, in render_template location=location)) TracError: Genshi UnicodeEncodeError error while rendering template '/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/templates/layout.html', line 12, char -1
I have several plugins installed, but the exception seems to be coming from the core Trac code, not one of the plugins. (Again, this all worked before.)
How do I troubleshoot this issue? There is no additional information in the Apache logs (I'm using mod_python).
A possibly related problem: When I visit my "/projects" URL, I get an internal server error and this Unicode error is in my Apache error.log:
[Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] mod_python (pid=4934, interpreter='main_interpreter', phase='PythonHandler', handler='trac.web.modpython_frontend'): Application error [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] ServerName: 'derek.example.com' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] DocumentRoot: '/var/www' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] URI: '/projects/' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] Location: '/projects' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] Directory: None [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] Filename: '/var/www/projects' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] PathInfo: '/' [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] Traceback (most recent call last): [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch\n default=default_handler, arg=req, silent=hlist.silent) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1229, in _process_target\n result = _execute_target(config, req, object, arg) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1128, in _execute_target\n result = object(arg) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/modpython_frontend.py", line 149, in handler\n gateway.run(dispatch_request) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/wsgi.py", line 89, in run\n response = application(self.environ, self._start_response) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/main.py", line 411, in dispatch_request\n env_paths) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/main.py", line 703, in send_project_index\n req.send(output, 'text/html') [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/api.py", line 416, in send\n self.write(content) [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/api.py", line 534, in write\n raise ValueError("Can't send unicode content") [Sun Apr 10 23:58:58 2011] [error] [client 192.168.2.10] ValueError: Can't send unicode content
Attachments (0)
Change History (29)
comment:1 by , 14 years ago
Description: | modified (diff) |
---|
follow-up: 3 comment:2 by , 14 years ago
Thank you for your help!
I have exactly one (brand new, empty) project. It is called "My Project"… all ASCII chars. In trac.ini under [project], it says
[project] name = My Project
I've used this exact project name before on other installs, so I don't think that's it.
I tried disabling all plugins in the [components] section of my trac.ini. The behaviour is unchanged. (I only had a few basic plugins configured:.)
[components] #webadmin.* = enabled #wikiprint.* = enabled #tracfullblog.* = enabled #privatewiki.api.privatewikisystem = enabled
I have no project-specific plugins installed at /var/lib/trac/projects/myproject/plugins/.
If I go to the template file and line number given in the traceback, I see there is a template variable there. If I remove it, then the error goes away, but instead I get a different Genshi UnicodeEncodeError on a different (core, default) template. It's like Genshi is broken.
I've played around with Unicode using the Python command prompt. I can encode Unicode utf-8 and ascii just fine using simple Python statements, so I don't think my Python install is broken.
This is on a virtual server (an LXC container). I'd be happy to give you full root on this box if you'd like to investigate… it is a fresh Ubuntu 10.04 with Trac, and nothing else. Feel free to post a throwaway public SSH key here… I will stick it into authorized_keys and post the login info.
Let me know if there is anything else I should post…
follow-up: 4 comment:3 by , 14 years ago
Cc: | added |
---|
Replying to anonymous:
If I remove it, then the error goes away, but instead I get a different Genshi UnicodeEncodeError on a different (core, default) template. It's like Genshi is broken.
What version of Genshi are you using? Can you try different versions, and see if that makes a a difference?
comment:4 by , 14 years ago
Replying to thijstriemstra:
Replying to anonymous:
If I remove it, then the error goes away, but instead I get a different Genshi UnicodeEncodeError on a different (core, default) template. It's like Genshi is broken.
What version of Genshi are you using? Can you try different versions, and see if that makes a a difference?
I also thought about this, but as he's using Trac 0.12, the only option is Genshi 0.6. Well, unless he got his version directly from the Genshi repository, 0.6 branch or trunk, in which case, sure, that information (which rev?) is very important.
What is that variable, title
or project.name
?
What do you seen when you replace that var
with ${repr(var)}
?
comment:5 by , 14 years ago
I got Trac to work by re-installing on a new server, but without installing the plugins. I believe the problem is caused by an old plugin or a plugin dependency.
Although I installed a few plugins on the broken server, I had none of them activated. But one of them seems to break Trac, even when not activated. I don't know which one.
There is a list of stuff I did not install this time (on the working server), but which I did install this on the broken server. Many of these are old .10 or .11 plugins (because there were no .12 versions available), but I confirmed them working on a Trac .12 release many months ago.
The list of candidate-problem-plugins can be found on the mailing list archive, here:
I don't understand how simply having a plugin on my hard drive can cause Genshi to fail. (I've seen plenty of broken Trac plugins before, but they cause an error w.r.t. the plugin, not a core Genshi template.)
—Derek
P.S.> I tried to post the list of plugins here on the ticket, but it was rejected as spam. (It gave me a Captcha, which I answered, but then rejected it as spam anyway. It said there were too many URLs in it.)
follow-up: 7 comment:6 by , 14 years ago
Resolution: | → cantfix |
---|---|
Status: | new → closed |
Thanks for the feedback. So we can close this as an InstallationIssue.
comment:7 by , 14 years ago
Replying to rblank:
Thanks for the feedback. So we can close this as an InstallationIssue.
How is this not an open bug? I get the cantfix bit. But, it seems there is a difference between can't fix and not a problem.
comment:8 by , 14 years ago
cantfix means that unless proven otherwise, it's not something the Trac developers can fix, which doesn't mean it's not a real problem, of course, just beyond our reach.
follow-ups: 10 12 comment:9 by , 14 years ago
Hi,
got the same problem after fresh installed version of trac 0.11.7. Everything worked fine until I installed Genshi plugin using easy_install http://svn.edgewall.org/repos/genshi/trunk.
I downgraded it using easy_install http://svn.edgewall.org/repos/genshi/tags/0.6.0 and trac worked like it did before. Regards Sven
comment:10 by , 14 years ago
Replying to anonymous:
Hi,
got the same problem after fresh installed version of trac 0.11.7. Everything worked fine until I installed Genshi plugin using easy_install http://svn.edgewall.org/repos/genshi/trunk.
I downgraded it using easy_install http://svn.edgewall.org/repos/genshi/tags/0.6.0 and trac worked like it did before. Regards Sven
VERY GOOD MAN! NOW IT WORKS!!! THANKS A LOT!!'''
comment:11 by , 14 years ago
Keywords: | genshi added |
---|---|
Resolution: | cantfix |
Status: | closed → reopened |
Hm, did we document somewhere that Genshi trunk may not work anymore with 0.11.x and 0.12.x?
comment:13 by , 13 years ago
Milestone: | → 0.12.3 |
---|---|
Severity: | normal → critical |
Hm, verify this again.
It's probably not a big deal if 0.12.x doesn't support Genshi 0.7dev, but of course Trac 0.13dev must.
If indeed Genshi versions > 0.6 won't work with Trac, then we should at least make a more precise version requirement. Tentatively still for 0.12.3.
comment:14 by , 13 years ago
Running the Trac unit tests for current 0.12.3dev with current Genshi trunk results in 23 tests failing - all with the same error:
... UnicodeError: source returned bytes, but no encoding specified ... Ran 1179 tests in 17.932s FAILED (errors=23)
comment:15 by , 13 years ago
Ok, so Genshi trunk (0.7dev) won't work with 0.12-stable (now I remember we did some changes on Trac trunk to cope with the py3k related changes that happened there).
The remaining point to verify is whether 0.6dev (genshi:source:/branches/stable/0.6.x) also works or not. I hope it will, as there's at least a bugfix which I'm interested in ;-) (#G429).
Depending on the tests, we'll need to change the requirements from Genshi>=0.6
to either Genshi==0.6
or Genshi>=0.6,<0.7dev
.
Ok, so the tests pass (Windows x86 with Python 2.5.4, 2.6.5 and 2.7.1, the latter with svn) and superficial testing with tracd seem to show that everything's fine with 0.6.1dev…
Would be nice to repeat with 2.4.x and also on Linux, just to be sure.
comment:16 by , 13 years ago
I'm always running latest Genshi 0.6-stable. No particular issues with it. I'm comfortable using Genshi>=0.6,<0.7dev
for requirements.
follow-up: 19 comment:17 by , 13 years ago
Had a quick chat with Hodgestar on IRC, and we agreed that restricting the version is the best solution.
No doubt the Trac trunk fix can be backported to 0.12-stable, but there is no telling what various plugins may do or need - there are just too many ways plugins can fail with the unicode
requirement of Genshi trunk.
follow-up: 20 comment:18 by , 13 years ago
Keywords: | unicode added |
---|---|
Resolution: | → fixed |
Status: | reopened → closed |
Ok then! Done in r10921.
comment:19 by , 13 years ago
Replying to osimons:
[…] there is no telling what various plugins may do or need - there are just too many ways plugins can fail with the
unicode
requirement of Genshi trunk.
A cautionary note in TracDev/ReleaseNotes/0.13#ModifiedDependencies might be useful then.
comment:20 by , 13 years ago
follow-up: 22 comment:21 by , 13 years ago
Oops, sorry, I messed up the reference, I wanted to point to the TracDev/ApiChanges instead. Will fix.
comment:22 by , 13 years ago
Replying to cboos:
Oops, sorry, I messed up the reference, I wanted to point to the TracDev/ApiChanges instead. Will fix.
Well, both would be correct - I wrote my text as simple as possible to adress the needs of sysadmins installing Trac and plugins, and making them aware of this at the time where they actually decide which version of Genshi to install.
Anyway, I'll leave you to organize the docs - I have no strong feelings either way.
comment:23 by , 13 years ago
There are indeed different audiences we need to address. The part for plugin authors and the details about str
/unicode
fit better with the TracDev/ApiChanges, where we already had a part about the other dependencies. We could also leave a note for people who simply install Trac, but then 0.13/TracInstall#MandatoryDependencies and 0.13/TracUpgrade would be also/more appropriate.
comment:24 by , 13 years ago
Owner: | set to |
---|
comment:25 by , 12 years ago
On Ubuntu 10.4 installations with Trac 0.12, I got same error. Fixed like this:
easy_install --prefix=/usr --force-installation-into-system-dir --install-dir /usr/lib/python2.6/dist-packages http://svn.edgewall.org/repos/genshi/tags/0.6.0
comment:27 by , 11 years ago
I had the same problem with a fresh install of 1.0.1. and MySQL-DB. Like above, everything worked again after downgrading to genshi 0.6.0: easy_install http://svn.edgewall.org/repos/genshi/0.6.0
comment:28 by , 11 years ago
I had the same problem after adding a comment to an existing ticket.
I solved it by executing:
pip install --upgrade genshi==0.6
It's not clear what triggered the error. There where no special characters in the text.
comment:29 by , 11 years ago
see http://trac.edgewall.org/changeset/11683 - there appears to be an issue with text that contains e.g. URL: <http://trac.edgewall.org/> with the angle brackets like that.
Does the name of one of your projects have any non-ASCII characters? Or possibly the content of the
[project] name
entry intrac.ini
?Can you please try again with all plugins disabled, just to make sure there's no influence?