Re: Crash when changing font in Preferences > Query tool

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Sandeep Thakkar <sandeep(dot)thakkar(at)enterprisedb(dot)com>
Cc: Sanket Mehta <sanket(dot)mehta(at)enterprisedb(dot)com>, Stephen Cook <sclists(at)gmail(dot)com>, Basil Bourque <basil(dot)bourque(dot)lists(at)pobox(dot)com>, pgAdmin Support <pgadmin-support(at)postgresql(dot)org>, Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
Subject: Re: Crash when changing font in Preferences > Query tool
Date: 2016-02-05 13:14:37
Message-ID: CA+OCxoz_wzftRntJp2LUdX8sXmdVWbph7zw6QGYG=C1rAmKFyQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-support

Thanks, fixed.

On Fri, Feb 5, 2016 at 7:19 AM, Sandeep Thakkar <
sandeep(dot)thakkar(at)enterprisedb(dot)com> wrote:

> Sure Dave. I will apply the patch to wxWidgets sources and rebuild on 9.5
> OS X build machine.
>
> BTW, the git show of your commit displays some Ctrl+M characters at the
> end of newly added lines in Makefile.am. Is that okay?
>
>
>
> On Thu, Feb 4, 2016 at 8:18 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> BTW - I've added the patch to the source tree under
>> xtra/wx-build/patches. Sandeep, please ensure our Mac builds of
>> wxWidgets are updated to include it.
>>
>> Thanks.
>>
>> On Thu, Feb 4, 2016 at 1:57 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>> > That seems to fix it - though changing the font for the browser
>> > doesn't seem to actually work on Mac :-(
>> >
>> > Thanks!
>> >
>> > On Thu, Feb 4, 2016 at 12:22 PM, Sanket Mehta
>> > <sanket(dot)mehta(at)enterprisedb(dot)com> wrote:
>> >> Hi Dave,
>> >>
>> >> PFA the revised patch.
>> >>
>> >>
>> >> Regards,
>> >> Sanket Mehta
>> >> Sr Software engineer
>> >> Enterprisedb
>> >>
>> >> On Thu, Feb 4, 2016 at 4:27 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>> >>>
>> >>> Can you fix the patch so it'll apply from the top-level source
>> >>> directory of the wxWidgets tarball please? It doesn't even declare
>> >>> what file it's patching as is.
>> >>>
>> >>> On Thu, Feb 4, 2016 at 9:38 AM, Sanket Mehta
>> >>> <sanket(dot)mehta(at)enterprisedb(dot)com> wrote:
>> >>> > Hi Sandeep,
>> >>> >
>> >>> > As we have talked, please find the patch for wxWidgets_2.8.12
>> attached
>> >>> > with
>> >>> > this mail.
>> >>> > Please do the needful.
>> >>> >
>> >>> >
>> >>> > Regards,
>> >>> > Sanket Mehta
>> >>> > Sr Software engineer
>> >>> > Enterprisedb
>> >>> >
>> >>> > On Thu, Feb 4, 2016 at 1:55 PM, Dave Page <dpage(at)pgadmin(dot)org>
>> wrote:
>> >>> >>
>> >>> >> Can it be back-patched relatively painlessly?
>> >>> >>
>> >>> >> --
>> >>> >> Dave Page
>> >>> >> Blog: http://pgsnake.blogspot.com
>> >>> >> Twitter: @pgsnake
>> >>> >>
>> >>> >> EnterpriseDB UK:http://www.enterprisedb.com
>> >>> >> The Enterprise PostgreSQL Company
>> >>> >>
>> >>> >> On 4 Feb 2016, at 06:53, Sanket Mehta <
>> sanket(dot)mehta(at)enterprisedb(dot)com>
>> >>> >> wrote:
>> >>> >>
>> >>> >> Hi,
>> >>> >>
>> >>> >> I have checked about the solution of this bug if exists.
>> >>> >>
>> >>> >> Below is the link to that patch for wxWidgets_3.0.2
>> >>> >>
>> >>> >> http://trac.wxwidgets.org/changeset/78070/svn-wx
>> >>> >>
>> >>> >> I have applied this patch and tried to reproduce the issue and
>> gladly
>> >>> >> it
>> >>> >> resolves it.
>> >>> >>
>> >>> >> As this patch is available only on wxWidgets_3.0.2 and we are using
>> >>> >> wxWidgets_2.8.12,
>> >>> >> how do you think we should proceed with this?
>> >>> >>
>> >>> >>
>> >>> >> Regards,
>> >>> >> Sanket Mehta
>> >>> >> Sr Software engineer
>> >>> >> Enterprisedb
>> >>> >>
>> >>> >> On Wed, Feb 3, 2016 at 7:23 PM, Dave Page <dpage(at)pgadmin(dot)org>
>> wrote:
>> >>> >>>
>> >>> >>> Hi
>> >>> >>>
>> >>> >>> So it sounds like a wxWidgets bug, if their sample app crashes
>> too.
>> >>> >>> Please log it with them.
>> >>> >>>
>> >>> >>> Thanks.
>> >>> >>>
>> >>> >>> On Wed, Feb 3, 2016 at 1:34 PM, Sanket Mehta
>> >>> >>> <sanket(dot)mehta(at)enterprisedb(dot)com> wrote:
>> >>> >>> > Hi Dave,
>> >>> >>> >
>> >>> >>> > I have tried to use a sample wxWidgets app: dialogs in its
>> sample
>> >>> >>> > directory.
>> >>> >>> > When i try to open font dialog in the same it got crashes
>> instantly.
>> >>> >>> >
>> >>> >>> > Along with that I also tried to use a 3rd party application :
>> >>> >>> > bitwize
>> >>> >>> > which
>> >>> >>> > uses wxMac-3.0.2.
>> >>> >>> > In that application it did not crash when I tried to open font
>> >>> >>> > dialog.
>> >>> >>> >
>> >>> >>> >
>> >>> >>> >
>> >>> >>> > Regards,
>> >>> >>> > Sanket Mehta
>> >>> >>> > Sr Software engineer
>> >>> >>> > Enterprisedb
>> >>> >>> >
>> >>> >>> > On Wed, Feb 3, 2016 at 5:37 PM, Dave Page <dpage(at)pgadmin(dot)org>
>> wrote:
>> >>> >>> >>
>> >>> >>> >> Hi,
>> >>> >>> >>
>> >>> >>> >> Yeah, compiling wx2.8 needs to be done on an older machine. I
>> have
>> >>> >>> >> a
>> >>> >>> >> 10.7 VM for that, then run it on a newer one.
>> >>> >>> >>
>> >>> >>> >> Can you reproduce the issue in one of the wxWidgets sample
>> apps?
>> >>> >>> >> One
>> >>> >>> >> of them will almost certainly use that font selection dialogue.
>> >>> >>> >>
>> >>> >>> >> On Wed, Feb 3, 2016 at 12:04 PM, Sanket Mehta
>> >>> >>> >> <sanket(dot)mehta(at)enterprisedb(dot)com> wrote:
>> >>> >>> >> > Hi Dave,
>> >>> >>> >> >
>> >>> >>> >> > I was not able to compile wxWidgets-2.8.12 on my mac os
>> 10.11 so
>> >>> >>> >> > I
>> >>> >>> >> > went
>> >>> >>> >> > ahead with wxWidgets-3.0.2 to reproduce this issue.
>> >>> >>> >> > While trying to reproduce this issue, when I click on Font
>> button
>> >>> >>> >> > on
>> >>> >>> >> > pgadmin->Preferences->query editor, it got crashed(before
>> >>> >>> >> > floating
>> >>> >>> >> > dialog
>> >>> >>> >> > opens) and below is the stack trace I have received.
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> > * thread #1: tid = 0x19367d, 0x00007fff8e8a44dd
>> >>> >>> >> > libobjc.A.dylib`objc_msgSend
>> >>> >>> >> > + 29, queue = 'com.apple.main-thread', stop reason =
>> >>> >>> >> > EXC_BAD_ACCESS
>> >>> >>> >> > (code=1,
>> >>> >>> >> > address=0x18)
>> >>> >>> >> >
>> >>> >>> >> > frame #0: 0x00007fff8e8a44dd libobjc.A.dylib`objc_msgSend +
>> 29
>> >>> >>> >> >
>> >>> >>> >> > libobjc.A.dylib`objc_msgSend:
>> >>> >>> >> >
>> >>> >>> >> > -> 0x7fff8e8a44dd <+29>: andl 0x18(%r11), %r10d
>> >>> >>> >> >
>> >>> >>> >> > 0x7fff8e8a44e1 <+33>: shlq $0x4, %r10
>> >>> >>> >> >
>> >>> >>> >> > 0x7fff8e8a44e5 <+37>: addq 0x10(%r11), %r10
>> >>> >>> >> >
>> >>> >>> >> > 0x7fff8e8a44e9 <+41>: cmpq (%r10), %rsi
>> >>> >>> >> >
>> >>> >>> >> > (lldb) bt
>> >>> >>> >> >
>> >>> >>> >> > * thread #1: tid = 0x19367d, 0x00007fff8e8a44dd
>> >>> >>> >> > libobjc.A.dylib`objc_msgSend
>> >>> >>> >> > + 29, queue = 'com.apple.main-thread', stop reason =
>> >>> >>> >> > EXC_BAD_ACCESS
>> >>> >>> >> > (code=1,
>> >>> >>> >> > address=0x18)
>> >>> >>> >> >
>> >>> >>> >> > * frame #0: 0x00007fff8e8a44dd
>> libobjc.A.dylib`objc_msgSend +
>> >>> >>> >> > 29
>> >>> >>> >> >
>> >>> >>> >> > frame #1: 0x00007fff929512ab AppKit`-[NSControl
>> mouseDown:] +
>> >>> >>> >> > 1260
>> >>> >>> >> >
>> >>> >>> >> > frame #2: 0x0000000101b5a10c
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_osx_cocoau_core-3.0.dylib`wxWidgetCocoaImpl::mouseEvent(this=0x000000010d658f60,
>> >>> >>> >> > event=0x0000000108500650, slf=0x000000010d5bf220,
>> >>> >>> >> > _cmd=0x00007fff93151246) +
>> >>> >>> >> > 380 at window.mm:1307
>> >>> >>> >> >
>> >>> >>> >> > frame #3: 0x0000000101b59057
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_osx_cocoau_core-3.0.dylib`wxOSX_mouseEvent(self=0x000000010d5bf220,
>> >>> >>> >> > _cmd="mouseDown:", event=0x0000000108500650) + 103 at
>> >>> >>> >> > window.mm:988
>> >>> >>> >> >
>> >>> >>> >> > frame #4: 0x00007fff92efed1d AppKit`-[NSWindow
>> >>> >>> >> > _handleMouseDownEvent:isDelayedEvent:] + 6322
>> >>> >>> >> >
>> >>> >>> >> > frame #5: 0x00007fff92efffad AppKit`-[NSWindow
>> >>> >>> >> > _reallySendEvent:isDelayedEvent:] + 212
>> >>> >>> >> >
>> >>> >>> >> > frame #6: 0x00007fff92858735 AppKit`-[NSWindow
>> sendEvent:] +
>> >>> >>> >> > 517
>> >>> >>> >> >
>> >>> >>> >> > frame #7: 0x0000000101b3b941
>> >>> >>> >> > libwx_osx_cocoau_core-3.0.dylib`-[wxNSPanel
>> >>> >>> >> > sendEvent:](self=0x000000010d595ae0, _cmd="sendEvent:",
>> >>> >>> >> > event=0x0000000108500650) + 257 at nonownedwnd.mm:272
>> >>> >>> >> >
>> >>> >>> >> > frame #8: 0x00007fff92854e49 AppKit`-[NSApplication
>> >>> >>> >> > sendEvent:]
>> >>> >>> >> > +
>> >>> >>> >> > 2540
>> >>> >>> >> >
>> >>> >>> >> > frame #9: 0x0000000101a20d3a
>> >>> >>> >> > libwx_osx_cocoau_core-3.0.dylib`-[wxNSApplication
>> >>> >>> >> > sendEvent:](self=0x0000000102ea44d0, _cmd="sendEvent:",
>> >>> >>> >> > anEvent=0x0000000108500650) + 170 at utils.mm:328
>> >>> >>> >> >
>> >>> >>> >> > frame #10: 0x00007fff9278803a AppKit`-[NSApplication
>> run] +
>> >>> >>> >> > 796
>> >>> >>> >> >
>> >>> >>> >> > frame #11: 0x0000000101b2ae76
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_osx_cocoau_core-3.0.dylib`wxGUIEventLoop::OSXDoRun(this=0x000000010d50d590)
>> >>> >>> >> > + 166 at evtloop.mm:300
>> >>> >>> >> >
>> >>> >>> >> > frame #12: 0x00000001025faed7
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_baseu-3.0.dylib`wxCFEventLoop::DoRun(this=0x000000010d50d590)
>> >>> >>> >> > + 39
>> >>> >>> >> > at
>> >>> >>> >> > evtloop_cf.cpp:340
>> >>> >>> >> >
>> >>> >>> >> > frame #13: 0x000000010250cefb
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_baseu-3.0.dylib`wxEventLoopBase::Run(this=0x000000010d50d590)
>> >>> >>> >> > +
>> >>> >>> >> > 235 at
>> >>> >>> >> > evtloopcmn.cpp:78
>> >>> >>> >> >
>> >>> >>> >> > frame #14: 0x00000001024b94d2
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_baseu-3.0.dylib`wxAppConsoleBase::MainLoop(this=0x0000000102e9d330) +
>> >>> >>> >> > 194 at appbase.cpp:334
>> >>> >>> >> >
>> >>> >>> >> > frame #15: 0x00000001024b9039
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_baseu-3.0.dylib`wxAppConsoleBase::OnRun(this=0x0000000102e9d330) +
>> >>> >>> >> > 25
>> >>> >>> >> > at appbase.cpp:259
>> >>> >>> >> >
>> >>> >>> >> > frame #16: 0x0000000101b66ffe
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_osx_cocoau_core-3.0.dylib`wxAppBase::OnRun(this=0x0000000102e9d330) +
>> >>> >>> >> > 62 at appcmn.cpp:304
>> >>> >>> >> >
>> >>> >>> >> > frame #17: 0x0000000101a98335
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> libwx_osx_cocoau_core-3.0.dylib`wxApp::OnRun(this=0x0000000102e9d330) +
>> >>> >>> >> > 37
>> >>> >>> >> > at app.cpp:915
>> >>> >>> >> >
>> >>> >>> >> > frame #18: 0x0000000102552547
>> >>> >>> >> > libwx_baseu-3.0.dylib`wxEntry(argc=0x00000001026e0f38,
>> >>> >>> >> > argv=0x0000000102e84090) + 311 at init.cpp:495
>> >>> >>> >> >
>> >>> >>> >> > frame #19: 0x00000001025526af
>> >>> >>> >> > libwx_baseu-3.0.dylib`wxEntry(argc=0x00007fff5fbffc08,
>> >>> >>> >> > argv=0x00007fff5fbffc30) + 63 at init.cpp:507
>> >>> >>> >> >
>> >>> >>> >> > frame #20: 0x0000000100007946 pgadmin3`main + 38
>> >>> >>> >> >
>> >>> >>> >> > frame #21: 0x00007fff9128a5ad libdyld.dylib`start + 1
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> > According to this stack trace, it seems that, this is
>> wxWidgets
>> >>> >>> >> > issue
>> >>> >>> >> > but I
>> >>> >>> >> > am not entirely sure as I have used different version of it.
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> >
>> >>> >>> >> > Regards,
>> >>> >>> >> > Sanket Mehta
>> >>> >>> >> > Sr Software engineer
>> >>> >>> >> > Enterprisedb
>> >>> >>> >> >
>> >>> >>> >> > On Thu, Jan 28, 2016 at 12:33 PM, Sanket Mehta
>> >>> >>> >> > <sanket(dot)mehta(at)enterprisedb(dot)com> wrote:
>> >>> >>> >> >>
>> >>> >>> >> >> Hi Dave,
>> >>> >>> >> >>
>> >>> >>> >> >> I will look into the issue.
>> >>> >>> >> >>
>> >>> >>> >> >> Note: It may take some time as I have 10.9.5 installed on my
>> >>> >>> >> >> machine so
>> >>> >>> >> >> I
>> >>> >>> >> >> need to update the OS and then I have to set up dev
>> environment
>> >>> >>> >> >> on
>> >>> >>> >> >> it.
>> >>> >>> >> >>
>> >>> >>> >> >> Regards,
>> >>> >>> >> >> Sanket Mehta
>> >>> >>> >> >> Sr Software engineer
>> >>> >>> >> >> Enterprisedb
>> >>> >>> >> >>
>> >>> >>> >> >> On Thu, Jan 28, 2016 at 12:18 PM, Dave Page <
>> dpage(at)pgadmin(dot)org>
>> >>> >>> >> >> wrote:
>> >>> >>> >> >>>
>> >>> >>> >> >>> On Thu, Jan 28, 2016 at 6:31 AM, Stephen Cook
>> >>> >>> >> >>> <sclists(at)gmail(dot)com>
>> >>> >>> >> >>> wrote:
>> >>> >>> >> >>> > -----BEGIN PGP SIGNED MESSAGE-----
>> >>> >>> >> >>> > Hash: SHA256
>> >>> >>> >> >>> >
>> >>> >>> >> >>> > On 1/27/2016 11:17 PM, basil(dot)bourque(dot)lists(at)pobox(dot)com
>> wrote:
>> >>> >>> >> >>> >> Crash happens consistently:
>> >>> >>> >> >>> >>
>> >>> >>> >> >>> >> (1) Launch pgAdmin. (2) Choose /pgAdmin/ >
>> /Preferences/ >
>> >>> >>> >> >>> >> /Query
>> >>> >>> >> >>> >> tool/ (3) Click the /Font/ button. A floating /Fonts/
>> panel
>> >>> >>> >> >>> >> appears. (4) Click any font in the list, such as
>> /Menlo/.
>> >>> >>> >> >>> >> «Crash»
>> >>> >>> >> >>> >>
>> >>> >>> >> >>> >> Postgres 9.5 pgAdmin 1.22.0 (rev: REL-1_22_0) Mac OS X
>> >>> >>> >> >>> >> 10.11.3
>> >>> >>> >> >>> >> El
>> >>> >>> >> >>> >> Capitan (running inside a Parallels virtual machine)
>> >>> >>> >> >>> >>
>> >>> >>> >> >>> >> —Basil Bourque
>> >>> >>> >> >>> >
>> >>> >>> >> >>> >
>> >>> >>> >> >>> > I have the same issue on my new MacBook Pro, same
>> versions
>> >>> >>> >> >>> > (it
>> >>> >>> >> >>> > also
>> >>> >>> >> >>> > happened with OS X 10.11.2, I just updated recently).
>> >>> >>> >> >>>
>> >>> >>> >> >>> At first glance I'd say it was a wxWidgets bug (I can
>> reproduce
>> >>> >>> >> >>> it
>> >>> >>> >> >>> too) judging by the stack trace and knowing what's
>> happening in
>> >>> >>> >> >>> the
>> >>> >>> >> >>> pgAdmin code. Unfortunately I'm travelling at the moment
>> and
>> >>> >>> >> >>> don't
>> >>> >>> >> >>> have a machine with a build environment on it to properly
>> test
>> >>> >>> >> >>> with.
>> >>> >>> >> >>>
>> >>> >>> >> >>> Sanket/Akshay - do either of you have a 10.11 machine you
>> could
>> >>> >>> >> >>> take a
>> >>> >>> >> >>> look on?
>> >>> >>> >> >>>
>> >>> >>> >> >>> --
>> >>> >>> >> >>> Dave Page
>> >>> >>> >> >>> Blog: http://pgsnake.blogspot.com
>> >>> >>> >> >>> Twitter: @pgsnake
>> >>> >>> >> >>>
>> >>> >>> >> >>> EnterpriseDB UK: http://www.enterprisedb.com
>> >>> >>> >> >>> The Enterprise PostgreSQL Company
>> >>> >>> >> >>
>> >>> >>> >> >>
>> >>> >>> >> >
>> >>> >>> >>
>> >>> >>> >>
>> >>> >>> >>
>> >>> >>> >> --
>> >>> >>> >> Dave Page
>> >>> >>> >> Blog: http://pgsnake.blogspot.com
>> >>> >>> >> Twitter: @pgsnake
>> >>> >>> >>
>> >>> >>> >> EnterpriseDB UK: http://www.enterprisedb.com
>> >>> >>> >> The Enterprise PostgreSQL Company
>> >>> >>> >
>> >>> >>> >
>> >>> >>>
>> >>> >>>
>> >>> >>>
>> >>> >>> --
>> >>> >>> Dave Page
>> >>> >>> Blog: http://pgsnake.blogspot.com
>> >>> >>> Twitter: @pgsnake
>> >>> >>>
>> >>> >>> EnterpriseDB UK: http://www.enterprisedb.com
>> >>> >>> The Enterprise PostgreSQL Company
>> >>> >>
>> >>> >>
>> >>> >
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Dave Page
>> >>> Blog: http://pgsnake.blogspot.com
>> >>> Twitter: @pgsnake
>> >>>
>> >>> EnterpriseDB UK: http://www.enterprisedb.com
>> >>> The Enterprise PostgreSQL Company
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > Dave Page
>> > Blog: http://pgsnake.blogspot.com
>> > Twitter: @pgsnake
>> >
>> > EnterpriseDB UK: http://www.enterprisedb.com
>> > The Enterprise PostgreSQL Company
>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
>
> --
> Sandeep Thakkar
> Lead Software Engineer
>
>
> Phone: +91.20.30589505
>
> Website: www.enterprisedb.com
> EnterpriseDB Blog: http://blogs.enterprisedb.com/
> Follow us on Twitter: http://www.twitter.com/enterprisedb
>
> This e-mail message (and any attachment) is intended for the use of the
> individual or entity to whom it is addressed. This message contains
> information from EnterpriseDB Corporation that may be privileged,
> confidential, or exempt from disclosure under applicable law. If you are
> not the intended recipient or authorized to receive this for the intended
> recipient, any use, dissemination, distribution, retention, archiving, or
> copying of this communication is strictly prohibited. If you have received
> this e-mail in error, please notify the sender immediately by reply e-mail
> and delete this message.
>

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgadmin-support by date

  From Date Subject
Next Message johannes graën 2016-02-07 16:36:20 Copy & paste key commands not working correctly
Previous Message Sandeep Thakkar 2016-02-05 07:19:35 Re: Crash when changing font in Preferences > Query tool