> From: Stuart Henderson <st...@openbsd.org> > Date: Wed, Oct 22, 2014 at 12:33 PM > Subject: Re: databases/pgadmin3 is crashing on amd64 > To: David Coppa <dco...@gmail.com> > Cc: Pierre-Emmanuel Andre <p...@raveland.org> > > > On 2014/10/22 10:57, David Coppa wrote: > > Please, try the attached patch. > > ok with me (it needs to go to 5.6-stable too). > > do you want to send it upstream or shall I? (they are in 1.20 release > process at the moment; problem still exists with 1.20.0beta2).
Unfortunately, this is not enough: the app still crashes when you delete/drop something (e.g. a drop database). Here's another version that works. Using a recursive mutex is hackish, but it avoids more intrusive changes: pgadmin3's design is busted. It should be safe too, in this particular case... I've also added the required bdep on textproc/py-sphinx. Ciao, David Index: Makefile =================================================================== RCS file: /cvs/ports/databases/pgadmin3/Makefile,v retrieving revision 1.29 diff -u -p -u -p -r1.29 Makefile --- Makefile 30 Apr 2014 14:20:08 -0000 1.29 +++ Makefile 23 Oct 2014 11:50:33 -0000 @@ -3,7 +3,7 @@ COMMENT= administration and development platform for PostgreSQL V= 1.18.1 -REVISION= 0 +REVISION= 1 DISTNAME= pgadmin3-$V CATEGORIES= databases devel @@ -30,7 +30,8 @@ WANTLIB += wx_base_xml wx_gtk2_html wx_base_net wx_base wx_gtk2_core \ pq>=4 xml2>=6 xslt>=3 -BUILD_DEPENDS += databases/postgresql,-server +BUILD_DEPENDS += databases/postgresql,-server \ + textproc/py-sphinx CONFIGURE_STYLE=gnu CONFIGURE_ENV= CPPFLAGS="${CXXFLAGS}" Index: patches/patch-configure =================================================================== RCS file: /cvs/ports/databases/pgadmin3/patches/patch-configure,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-configure --- patches/patch-configure 3 Nov 2011 14:27:05 -0000 1.3 +++ patches/patch-configure 23 Oct 2014 11:50:33 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-configure,v 1.3 2011/11/03 14:27:05 nigel Exp $ ---- configure.orig Thu Sep 8 17:41:11 2011 -+++ configure Sat Oct 22 13:33:27 2011 -@@ -5401,7 +5401,7 @@ if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : +--- configure.orig Mon Oct 7 17:13:12 2013 ++++ configure Wed Oct 22 16:32:48 2014 +@@ -5742,7 +5742,7 @@ if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -10,7 +10,7 @@ $OpenBSD: patch-configure,v 1.3 2011/11/ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -@@ -5868,7 +5868,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +@@ -6209,7 +6209,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$PG_SSL" = "yes" then Index: patches/patch-pgadmin_frm_events_cpp =================================================================== RCS file: patches/patch-pgadmin_frm_events_cpp diff -N patches/patch-pgadmin_frm_events_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-pgadmin_frm_events_cpp 23 Oct 2014 11:50:33 -0000 @@ -0,0 +1,52 @@ +$OpenBSD$ +--- pgadmin/frm/events.cpp.orig Fri Sep 27 16:51:46 2013 ++++ pgadmin/frm/events.cpp Thu Oct 23 12:46:41 2014 +@@ -41,7 +41,7 @@ + + // Mutex to protect the "currentObject" from race conditions. + // +-static wxMutex s_currentObjectMutex; ++static wxMutex *currentObjectMutex = new wxMutex( wxMUTEX_RECURSIVE ); + + // Event table + BEGIN_EVENT_TABLE(frmMain, pgFrame) +@@ -418,9 +418,9 @@ void frmMain::execSelChange(wxTreeItemId item, bool cu + // + // Lock the assignment to prevent the race conditions between onSelRightClick and execSelChange. + // +- s_currentObjectMutex.Lock(); +- currentObject = browser->GetObject(item); +- s_currentObjectMutex.Unlock(); ++ currentObjectMutex->Lock(); ++ currentObject = browser->GetObject(item); ++ currentObjectMutex->Unlock(); + + // If we didn't get an object, then we may have a right click, or + // invalid click, so ignore. +@@ -735,6 +735,7 @@ void frmMain::OnContextMenu(wxCommandEvent &event) + void frmMain::OnSelRightClick(wxTreeEvent &event) + { + wxTreeItemId item = event.GetItem(); ++ + if (item != browser->GetSelection()) + { + browser->SelectItem(item); +@@ -742,13 +743,16 @@ void frmMain::OnSelRightClick(wxTreeEvent &event) + // Prevent changes to "currentObject" by "execSelchange" function by another thread. + // Will hold the lock until we do popup on the respective object. + // +- s_currentObjectMutex.Lock(); ++ currentObjectMutex->Lock(); + currentObject = browser->GetObject(item); + } ++ else ++ currentObjectMutex->Lock(); + + if (currentObject) + doPopup(browser, event.GetPoint(), currentObject); +- s_currentObjectMutex.Unlock(); ++ ++ currentObjectMutex->Unlock(); + } + + Index: patches/patch-pgadmin_frm_frmQuery_cpp =================================================================== RCS file: patches/patch-pgadmin_frm_frmQuery_cpp diff -N patches/patch-pgadmin_frm_frmQuery_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-pgadmin_frm_frmQuery_cpp 23 Oct 2014 11:50:33 -0000 @@ -0,0 +1,30 @@ +$OpenBSD$ + +commit f656072300b3a2736fafff0093223793ca4dd9ad +Author: Dmitriy Olshevskiy <olshevski...@bk.ru> +Date: Sat Aug 9 17:15:45 2014 +0200 + +Prevent a crash during the update of the macro or favourite list + +--- pgadmin/frm/frmQuery.cpp.orig Wed Sep 11 14:33:57 2013 ++++ pgadmin/frm/frmQuery.cpp Thu Oct 23 09:12:29 2014 +@@ -1485,6 +1485,9 @@ void frmQuery::updateMenu(bool allowUpdateModelSize) + + void frmQuery::UpdateFavouritesList() + { ++ if (IsVisible() && menuBar->FindMenu(_("Fav&ourites")) == wxNOT_FOUND) ++ return; ++ + if (favourites) + delete favourites; + +@@ -1501,6 +1504,9 @@ void frmQuery::UpdateFavouritesList() + + void frmQuery::UpdateMacrosList() + { ++ if (IsVisible() && menuBar->FindMenu(_("&Macros")) == wxNOT_FOUND) ++ return; ++ + if (macros) + delete macros; + Index: patches/patch-pgadmin_ver_svn_sh =================================================================== RCS file: /cvs/ports/databases/pgadmin3/patches/patch-pgadmin_ver_svn_sh,v retrieving revision 1.1 diff -u -p -u -p -r1.1 patch-pgadmin_ver_svn_sh --- patches/patch-pgadmin_ver_svn_sh 5 Nov 2010 15:34:02 -0000 1.1 +++ patches/patch-pgadmin_ver_svn_sh 23 Oct 2014 11:50:33 -0000 @@ -1,9 +1,9 @@ $OpenBSD: patch-pgadmin_ver_svn_sh,v 1.1 2010/11/05 15:34:02 pea Exp $ ---- pgadmin/ver_svn.sh.orig Fri Nov 5 14:30:41 2010 -+++ pgadmin/ver_svn.sh Fri Nov 5 14:30:47 2010 +--- pgadmin/ver_svn.sh.orig Wed Sep 11 14:33:58 2013 ++++ pgadmin/ver_svn.sh Wed Oct 22 16:32:48 2014 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh - OV=unknown - if [ -d .svn -o -d ../.git ]; then + TARGET_DIR=`dirname $0` + Index: patches/patch-stringextract =================================================================== RCS file: /cvs/ports/databases/pgadmin3/patches/patch-stringextract,v retrieving revision 1.1 diff -u -p -u -p -r1.1 patch-stringextract --- patches/patch-stringextract 11 Mar 2013 20:59:05 -0000 1.1 +++ patches/patch-stringextract 23 Oct 2014 11:50:33 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-stringextract,v 1.1 2013/03/11 20:59:05 sthen Exp $ ---- stringextract.orig Mon Mar 11 20:51:36 2013 -+++ stringextract Mon Mar 11 20:51:44 2013 -@@ -56,7 +56,7 @@ xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot +--- stringextract.orig Wed Sep 11 14:33:58 2013 ++++ stringextract Wed Oct 22 16:32:48 2014 +@@ -55,7 +55,7 @@ xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/*.h xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/*.h Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/databases/pgadmin3/pkg/PLIST,v retrieving revision 1.13 diff -u -p -u -p -r1.13 PLIST --- pkg/PLIST 19 Apr 2014 21:03:58 -0000 1.13 +++ pkg/PLIST 23 Oct 2014 11:50:33 -0000 @@ -42,6 +42,185 @@ share/pgadmin3/docs/de_DE/hints/vacuum.h share/pgadmin3/docs/de_DE/hints/view-without-pk.html share/pgadmin3/docs/de_DE/pgadmin3.css share/pgadmin3/docs/en_US/ +share/pgadmin3/docs/en_US/_images/ +share/pgadmin3/docs/en_US/_images/backup-2.png +share/pgadmin3/docs/en_US/_images/backup-3.png +share/pgadmin3/docs/en_US/_images/backup-4.png +share/pgadmin3/docs/en_US/_images/backup.png +share/pgadmin3/docs/en_US/_images/debugger.png +share/pgadmin3/docs/en_US/_images/editgrid.png +share/pgadmin3/docs/en_US/_images/export.png +share/pgadmin3/docs/en_US/_images/gqb.png +share/pgadmin3/docs/en_US/_images/grantwiz.png +share/pgadmin3/docs/en_US/_images/gridopt-filter.png +share/pgadmin3/docs/en_US/_images/gridopt-sort.png +share/pgadmin3/docs/en_US/_images/guru-connect.png +share/pgadmin3/docs/en_US/_images/main.png +share/pgadmin3/docs/en_US/_images/maintenance.png +share/pgadmin3/docs/en_US/_images/manage-macros.png +share/pgadmin3/docs/en_US/_images/no-hba.png +share/pgadmin3/docs/en_US/_images/not-running.png +share/pgadmin3/docs/en_US/_images/options-binary_paths.png +share/pgadmin3/docs/en_US/_images/options-colours.png +share/pgadmin3/docs/en_US/_images/options-database_designer.png +share/pgadmin3/docs/en_US/_images/options-display.png +share/pgadmin3/docs/en_US/_images/options-favourites.png +share/pgadmin3/docs/en_US/_images/options-guru_hints.png +share/pgadmin3/docs/en_US/_images/options-help_paths.png +share/pgadmin3/docs/en_US/_images/options-history_file.png +share/pgadmin3/docs/en_US/_images/options-logging.png +share/pgadmin3/docs/en_US/_images/options-macros.png +share/pgadmin3/docs/en_US/_images/options-properties.png +share/pgadmin3/docs/en_US/_images/options-query_editor.png +share/pgadmin3/docs/en_US/_images/options-query_file.png +share/pgadmin3/docs/en_US/_images/options-results_grid.png +share/pgadmin3/docs/en_US/_images/options-server_status.png +share/pgadmin3/docs/en_US/_images/options-ui_miscellaneous.png +share/pgadmin3/docs/en_US/_images/options-user_interface.png +share/pgadmin3/docs/en_US/_images/options.png +share/pgadmin3/docs/en_US/_images/password.png +share/pgadmin3/docs/en_US/_images/pgagent-jobdetails.png +share/pgadmin3/docs/en_US/_images/pgagent-jobproperties.png +share/pgadmin3/docs/en_US/_images/pgagent-jobstats.png +share/pgadmin3/docs/en_US/_images/pgagent-scheduledetails1.png +share/pgadmin3/docs/en_US/_images/pgagent-scheduledetails2.png +share/pgadmin3/docs/en_US/_images/pgagent-scheduledetails3.png +share/pgadmin3/docs/en_US/_images/pgagent-scheduleproperties.png +share/pgadmin3/docs/en_US/_images/pgagent-stepdetails.png +share/pgadmin3/docs/en_US/_images/pgagent-stepstats.png +share/pgadmin3/docs/en_US/_images/query-analyze.png +share/pgadmin3/docs/en_US/_images/query-connect.png +share/pgadmin3/docs/en_US/_images/query.png +share/pgadmin3/docs/en_US/_images/reporttool-html.png +share/pgadmin3/docs/en_US/_images/reporttool-xml.png +share/pgadmin3/docs/en_US/_images/restore-2.png +share/pgadmin3/docs/en_US/_images/restore-3.png +share/pgadmin3/docs/en_US/_images/restore-4.png +share/pgadmin3/docs/en_US/_images/restore.png +share/pgadmin3/docs/en_US/_images/search.png +share/pgadmin3/docs/en_US/_images/server.png +share/pgadmin3/docs/en_US/_images/slony-create.png +share/pgadmin3/docs/en_US/_images/slony-execute.png +share/pgadmin3/docs/en_US/_images/slony-join.png +share/pgadmin3/docs/en_US/_images/slony-listen.png +share/pgadmin3/docs/en_US/_images/slony-overview.png +share/pgadmin3/docs/en_US/_images/slony-path.png +share/pgadmin3/docs/en_US/_images/slony-sequence.png +share/pgadmin3/docs/en_US/_images/slony-set.png +share/pgadmin3/docs/en_US/_images/slony-subscription.png +share/pgadmin3/docs/en_US/_images/slony-table.png +share/pgadmin3/docs/en_US/_images/slony-upgrade.png +share/pgadmin3/docs/en_US/_images/status.png +share/pgadmin3/docs/en_US/_static/ +share/pgadmin3/docs/en_US/_static/ajax-loader.gif +share/pgadmin3/docs/en_US/_static/backup-2.png +share/pgadmin3/docs/en_US/_static/backup-3.png +share/pgadmin3/docs/en_US/_static/backup-4.png +share/pgadmin3/docs/en_US/_static/backup.png +share/pgadmin3/docs/en_US/_static/basic.css +share/pgadmin3/docs/en_US/_static/comment-bright.png +share/pgadmin3/docs/en_US/_static/comment-close.png +share/pgadmin3/docs/en_US/_static/comment.png +share/pgadmin3/docs/en_US/_static/connect.png +share/pgadmin3/docs/en_US/_static/debugger.png +share/pgadmin3/docs/en_US/_static/default.css +share/pgadmin3/docs/en_US/_static/doctools.js +share/pgadmin3/docs/en_US/_static/down-pressed.png +share/pgadmin3/docs/en_US/_static/down.png +share/pgadmin3/docs/en_US/_static/editgrid.png +share/pgadmin3/docs/en_US/_static/export.png +share/pgadmin3/docs/en_US/_static/file.png +share/pgadmin3/docs/en_US/_static/gqb.png +share/pgadmin3/docs/en_US/_static/grantwiz.png +share/pgadmin3/docs/en_US/_static/gridopt-filter.png +share/pgadmin3/docs/en_US/_static/gridopt-sort.png +share/pgadmin3/docs/en_US/_static/guru-connect.png +share/pgadmin3/docs/en_US/_static/jquery.js +share/pgadmin3/docs/en_US/_static/locks.png +share/pgadmin3/docs/en_US/_static/logfile.png +share/pgadmin3/docs/en_US/_static/main.png +share/pgadmin3/docs/en_US/_static/maintenance.png +share/pgadmin3/docs/en_US/_static/manage-macros.png +share/pgadmin3/docs/en_US/_static/minus.png +share/pgadmin3/docs/en_US/_static/no-hba.png +share/pgadmin3/docs/en_US/_static/not-running.png +share/pgadmin3/docs/en_US/_static/options-binary_paths.png +share/pgadmin3/docs/en_US/_static/options-colours.png +share/pgadmin3/docs/en_US/_static/options-database_designer.png +share/pgadmin3/docs/en_US/_static/options-display.png +share/pgadmin3/docs/en_US/_static/options-favourites.png +share/pgadmin3/docs/en_US/_static/options-guru_hints.png +share/pgadmin3/docs/en_US/_static/options-help_paths.png +share/pgadmin3/docs/en_US/_static/options-history_file.png +share/pgadmin3/docs/en_US/_static/options-logging.png +share/pgadmin3/docs/en_US/_static/options-macros.png +share/pgadmin3/docs/en_US/_static/options-properties.png +share/pgadmin3/docs/en_US/_static/options-query_editor.png +share/pgadmin3/docs/en_US/_static/options-query_file.png +share/pgadmin3/docs/en_US/_static/options-results_grid.png +share/pgadmin3/docs/en_US/_static/options-server_status.png +share/pgadmin3/docs/en_US/_static/options-ui_miscellaneous.png +share/pgadmin3/docs/en_US/_static/options-user_interface.png +share/pgadmin3/docs/en_US/_static/options.png +share/pgadmin3/docs/en_US/_static/password.png +share/pgadmin3/docs/en_US/_static/pgagent-jobdetails.png +share/pgadmin3/docs/en_US/_static/pgagent-jobproperties.png +share/pgadmin3/docs/en_US/_static/pgagent-jobstats.png +share/pgadmin3/docs/en_US/_static/pgagent-scheduledetails1.png +share/pgadmin3/docs/en_US/_static/pgagent-scheduledetails2.png +share/pgadmin3/docs/en_US/_static/pgagent-scheduledetails3.png +share/pgadmin3/docs/en_US/_static/pgagent-scheduleproperties.png +share/pgadmin3/docs/en_US/_static/pgagent-stepdetails.png +share/pgadmin3/docs/en_US/_static/pgagent-stepstats.png +share/pgadmin3/docs/en_US/_static/plus.png +share/pgadmin3/docs/en_US/_static/pygments.css +share/pgadmin3/docs/en_US/_static/query-analyze.png +share/pgadmin3/docs/en_US/_static/query-connect.png +share/pgadmin3/docs/en_US/_static/query.png +share/pgadmin3/docs/en_US/_static/reporttool-html.png +share/pgadmin3/docs/en_US/_static/reporttool-xml.png +share/pgadmin3/docs/en_US/_static/restore-2.png +share/pgadmin3/docs/en_US/_static/restore-3.png +share/pgadmin3/docs/en_US/_static/restore-4.png +share/pgadmin3/docs/en_US/_static/restore.png +share/pgadmin3/docs/en_US/_static/search.png +share/pgadmin3/docs/en_US/_static/searchtools.js +share/pgadmin3/docs/en_US/_static/server.png +share/pgadmin3/docs/en_US/_static/sidebar.js +share/pgadmin3/docs/en_US/_static/slony-create.png +share/pgadmin3/docs/en_US/_static/slony-execute.png +share/pgadmin3/docs/en_US/_static/slony-join.png +share/pgadmin3/docs/en_US/_static/slony-listen.png +share/pgadmin3/docs/en_US/_static/slony-overview.png +share/pgadmin3/docs/en_US/_static/slony-path.png +share/pgadmin3/docs/en_US/_static/slony-sequence.png +share/pgadmin3/docs/en_US/_static/slony-set.png +share/pgadmin3/docs/en_US/_static/slony-subscription.png +share/pgadmin3/docs/en_US/_static/slony-table.png +share/pgadmin3/docs/en_US/_static/slony-upgrade.png +share/pgadmin3/docs/en_US/_static/status.png +share/pgadmin3/docs/en_US/_static/transaction.png +share/pgadmin3/docs/en_US/_static/underscore.js +share/pgadmin3/docs/en_US/_static/up-pressed.png +share/pgadmin3/docs/en_US/_static/up.png +share/pgadmin3/docs/en_US/_static/websupport.js +share/pgadmin3/docs/en_US/appendices.html +share/pgadmin3/docs/en_US/backup.html +share/pgadmin3/docs/en_US/bugreport.html +share/pgadmin3/docs/en_US/commandline.html +share/pgadmin3/docs/en_US/connect-error.html +share/pgadmin3/docs/en_US/connect.html +share/pgadmin3/docs/en_US/control-server.html +share/pgadmin3/docs/en_US/debugger.html +share/pgadmin3/docs/en_US/default-xsl.html +share/pgadmin3/docs/en_US/editgrid.html +share/pgadmin3/docs/en_US/export.html +share/pgadmin3/docs/en_US/extend.html +share/pgadmin3/docs/en_US/genindex.html +share/pgadmin3/docs/en_US/gqb.html +share/pgadmin3/docs/en_US/grantwiz.html +share/pgadmin3/docs/en_US/gridopts.html +share/pgadmin3/docs/en_US/guruhints.html share/pgadmin3/docs/en_US/hints/ share/pgadmin3/docs/en_US/hints/autovacuum.html share/pgadmin3/docs/en_US/hints/conn-hba.html @@ -60,7 +239,49 @@ share/pgadmin3/docs/en_US/hints/saving-p share/pgadmin3/docs/en_US/hints/vacuum-full.html share/pgadmin3/docs/en_US/hints/vacuum.html share/pgadmin3/docs/en_US/hints/view-without-pk.html +share/pgadmin3/docs/en_US/index.html +share/pgadmin3/docs/en_US/introduction.html +share/pgadmin3/docs/en_US/kerberos.html +share/pgadmin3/docs/en_US/licence.html +share/pgadmin3/docs/en_US/macros.html +share/pgadmin3/docs/en_US/main.html +share/pgadmin3/docs/en_US/maintenance.html +share/pgadmin3/docs/en_US/openssl.html +share/pgadmin3/docs/en_US/options-browser.html +share/pgadmin3/docs/en_US/options-database_designer.html +share/pgadmin3/docs/en_US/options-miscellaneous.html +share/pgadmin3/docs/en_US/options-query_tool.html +share/pgadmin3/docs/en_US/options-server_status.html +share/pgadmin3/docs/en_US/options.html +share/pgadmin3/docs/en_US/password.html share/pgadmin3/docs/en_US/pgadmin3.css +share/pgadmin3/docs/en_US/pgadmin3.hhc +share/pgadmin3/docs/en_US/pgadmin3.hhk +share/pgadmin3/docs/en_US/pgadmin3.hhp +share/pgadmin3/docs/en_US/pgadmin3.stp +share/pgadmin3/docs/en_US/pgagent-install.html +share/pgadmin3/docs/en_US/pgagent-jobs.html +share/pgadmin3/docs/en_US/pgagent-schedules.html +share/pgadmin3/docs/en_US/pgagent-steps.html +share/pgadmin3/docs/en_US/pgagent.html +share/pgadmin3/docs/en_US/pgscript.html +share/pgadmin3/docs/en_US/query.html +share/pgadmin3/docs/en_US/reports.html +share/pgadmin3/docs/en_US/restore.html +share/pgadmin3/docs/en_US/sample-xml.html +share/pgadmin3/docs/en_US/search_object.html +share/pgadmin3/docs/en_US/slony-example.html +share/pgadmin3/docs/en_US/slony-execute.html +share/pgadmin3/docs/en_US/slony-functions.html +share/pgadmin3/docs/en_US/slony-install.html +share/pgadmin3/docs/en_US/slony-overview.html +share/pgadmin3/docs/en_US/slony-path.html +share/pgadmin3/docs/en_US/slony-set.html +share/pgadmin3/docs/en_US/slony.html +share/pgadmin3/docs/en_US/status.html +share/pgadmin3/docs/en_US/team.html +share/pgadmin3/docs/en_US/translation_team.html +share/pgadmin3/docs/en_US/using.html share/pgadmin3/docs/es_ES/ share/pgadmin3/docs/es_ES/hints/ share/pgadmin3/docs/es_ES/hints/autovacuum.html