Edgewall Software
Modify

Opened 16 years ago

Closed 16 years ago

#8161 closed defect (worksforme)

Bug in svn_fs.py : apr_pool_clear(self._pool) call (wrong argument count!?)

Reported by: michael.lindig@… Owned by:
Priority: high Milestone:
Component: version control Version: 0.11rc1
Severity: critical Keywords: needinfo
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christian Boos)

Hi,

I got following exception on svn_fs.py clear function call:

trac/versioncontrol/svn_fs.py", line 184, in clear self.apr_pool_clear(self._pool) TypeError: apr_terminate() takes exactly 0 arguments (1 given) 

Traceback:

".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/web/main.py", line 435, in _dispatch_request
      Code fragment:
       430. try:
       431. if not env and env_error:
       432. raise HTTPInternalError(env_error)
       433. try:
       434. dispatcher = RequestDispatcher(env)
       435. dispatcher.dispatch(req)
       436. except RequestDone:
       437. pass
       438. resp = req._response or []
       439.  
       440. except HTTPException, e:
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/web/main.py", line 248, in dispatch
      Code fragment:
       243. raise
       244. except Exception, e:
       245. self.log.error("Exception caught while post-processing"
       246. " request: %s",
       247. exception_to_unicode(e, traceback=True))
       248. raise err[0], err[1], err[2]
       249. except PermissionError, e:
       250. raise HTTPForbidden(to_unicode(e))
       251. except ResourceNotFound, e:
       252. raise HTTPNotFound(e)
       253. except TracError, e:
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/web/main.py", line 175, in dispatch
      Code fragment:
       170. if not req.path_info or req.path_info == '/':
       171. chosen_handler = self.default_handler
       172. # pre-process any incoming request, whether a handler
       173. # was found or not
       174. chosen_handler = self._pre_process_request(req,
       175. chosen_handler)
       176. except TracError, e:
       177. raise HTTPInternalError(e)
       178. if not chosen_handler:
       179. if req.path_info.endswith('/'):
       180. # Strip trailing / and redirect
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/web/main.py", line 298, in _pre_process_request
      Code fragment:
       293. req.outcookie['trac_form_token']['secure'] = True
       294. return req.outcookie['trac_form_token'].value
       295.  
       296. def _pre_process_request(self, req, chosen_handler):
       297. for filter_ in self.filters:
       298. chosen_handler = filter_.pre_process_request(req,
chosen_handler)
       299. return chosen_handler
       300.  
       301. def _post_process_request(self, req, *args):
       302. nbargs = len(args)
       303. resp = args
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/versioncontrol/api.py", line 86, in pre_process_request
      Code fragment:
        81.  
        82. def pre_process_request(self, req, handler):
        83. from trac.web.chrome import Chrome, add_warning
        84. if handler is not Chrome(self.env):
        85. try:
        86. self.get_repository(req.authname).sync()
        87. except TracError, e:
        88. add_warning(req, _("Can't synchronize with the repository "
        89. "(%(error)s). Look in the Trac log for more "
        90. "information.", error=to_unicode(e.message)))
        91.
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/versioncontrol/cache.py", line 140, in sync
      Code fragment:
       135. # -- compare them and try to resync if different
       136. if self.youngest != repos_youngest:
       137. self.log.info("repos rev [%s] != cached rev [%s]" %
       138. (repos_youngest, self.youngest))
       139. if self.youngest:
       140. next_youngest = self.repos.next_rev(self.youngest)
       141. else:
       142. next_youngest = None
       143. try:
       144. next_youngest = self.repos.oldest_rev
       145. # Ugly hack needed because doing that everytime in
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/versioncontrol/svn_fs.py", line 592, in next_rev
      Code fragment:
       587. rev = self.normalize_rev(rev)
       588. next = rev + 1
       589. youngest = self.youngest_rev
       590. subpool = Pool(self.pool)
       591. while next <= youngest:
       592. subpool.clear()
       593. try:
       594. for _, next in self._history(path, rev+1, next, subpool):
       595. return next
       596. except (SystemError, # "null arg to internal routine" in 1.2.x
       597. core.SubversionException): # in 1.3.x
    * File
".../eggs/Trac-0.11.4rc1-py2.5.egg/trac/versioncontrol/svn_fs.py", line 184, in clear
      Code fragment:
       179. """Assert that this memory_pool is still valid."""
       180. assert self.valid();
       181.  
       182. def clear(self):
       183. """Clear embedded memory pool. Invalidate all subpools."""
       184. self.apr_pool_clear(self._pool)
       185. self._mark_valid()
       186.  
       187. def destroy(self):
       188. """Destroy embedded memory pool. If you do not destroy
       189. the memory pool manually, Python will destroy it

Here are the version informations:

Trac: 	        0.11.4rc1
Python: 	2.5.4 (r254:67916, Mar 19 2009, 14:58:42) [GCC 4.1.2 20070626 (Red Hat 4.1.2-14)]
setuptools: 	0.6c9
SQLite: 	3.6.11
pysqlite: 	2.5.5
Genshi: 	0.5.1
Pygments: 	1.0
Subversion: 	1.5.6 (r36142)
jQuery:	        1.2.6
apr:            1.3.3
apr-util:       1.3.4

Attachments (0)

Change History (5)

comment:1 by Christian Boos, 16 years ago

Description: modified (diff)
Keywords: needinfo added
Milestone: 0.11.4
apr_terminate() takes exactly 0 arguments (1 given)

Looks like this is a new one, though it's probably only a duplicate of #2611 / #3455.

Are you running Trac in the main Python interpreter? For mod_python, this requires using the directive PythonInterpreter main_interpreter and for mod_wsgi, the directive WSGIApplicationGroup %{GLOBAL).

comment:2 by anonymous, 16 years ago

I running Trac in own Python-2.5.4 installation enclosed by virtualenv. mod_python is a own compilation with this Python interpreter.

comment:3 by Christian Boos, 16 years ago

Well, the question was if inside the Apache configuration of your mod_python interpreter, you are using the:

PythonInterpreter main_interpreter

as explained in TracModPython.

in reply to:  3 ; comment:4 by michael.lindig@…, 16 years ago

OK, YES and NO! The bug does not occured in a mod_python environment! The bug occured in ClueMapper wrapped Trac project. Which has a own web server build on repoze.who.

But as I now detected there may be possible that this problems occured while using psyco and Trac. I disabled the psyco and the error does not occured until now!?

in reply to:  4 comment:5 by Remy Blank, 16 years ago

Resolution: worksforme
Status: newclosed

Replying to michael.lindig@…:

I disabled the psyco and the error does not occured until now!?

Ok, I'm closing this ticket. Please reopen if you can reproduce the error without Psyco.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The ticket will remain with no owner.
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from (none) to the specified user.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.