[lldb-dev] Process::SyncIOHandler(), everyone please try out the following patch
Zachary Turner
zturner at google.com
Mon Apr 6 15:34:08 PDT 2015
By the way, the original one-liner patch doesn't seem to fix the double
prompt for me, and it also doesn't fix the case of printing a stack trace
after stopping at a breakpoint through a .lldbinit file. In other words,
this is an interactive session:
d:\src\llvmbuild\ninja\bin>lldb
(lldb) command source -s 1 'd:\src\llvmbuild\ninja\bin\.\.lldbinit'
(lldb) file d:\testexe\simple_step.exe
Current executable set to 'd:\testexe\simple_step.exe' (i686).
(lldb) break set -f simple_step.cpp -l 11
Breakpoint 1: where = simple_step.exe`main + 54 at simple_step.cpp:11,
address = 0x00416096
(lldb) run
Process 11400 launching
(lldb) Process 11400 launched: 'd:\testexe\simple_step.exe' (i686)
(lldb) Process 11400 stopped
* thread #1: tid = 0x376c, 0x00cd6096 simple_step.exe`main(argc=1,
argv=0x01149028) + 54 at simple_step.cpp:11, stop reason = breakpoint 1.1
frame #0: 0x00cd6096 simple_step.exe`main(argc=1, argv=0x01149028) + 54
at simple_step.cpp:11
8
9 int main(int argc, char **argv) {
10 int fib7 = fib(7);
-> 11 printf("The value of fib(7) is %u\n", fib7);
12 return 0;
13 }
(lldb)
If I make a .lldbinit file with the exact same set of commands and start
lldb, I get this output.
d:\src\llvmbuild\ninja\bin>lldb
(lldb) command source -s 1 'd:\src\llvmbuild\ninja\bin\.\.lldbinit'
Process 5288 launching
(lldb) (lldb)
The one-liner patch doesn't change anything for me, so it seems it doesn't
fix everything? I haven't tried the second patch though because of the
ANSI escape codes.
On Mon, Apr 6, 2015 at 3:28 PM Zachary Turner <zturner at google.com> wrote:
> Hi Greg,
>
> This latest patch appears to have ANSI escape codes in it. Any chance you
> can re-upload?
>
> On Mon, Apr 6, 2015 at 2:41 PM Greg Clayton <gclayton at apple.com> wrote:
>
>> So do you still have problems with the prompt coming out at the wrong
>> time or getting interspersed on FreeBSD with top of tree? It is just made
>> worse by this patch?
>>
>> Try this patch:
>>
>>
>>
>> It changes the Predicate to use a uint32_t instead and it increments the
>> predicate when the process resumes. Clients must first get the current
>> IOHandler ID, then call something that resumes the process (continue or
>> step) and then call Process::SyncIOHandler(iohandler_id, <timeout>).
>>
>> Let me know if this makes anything better or worse?
>>
>> > On Apr 6, 2015, at 2:03 PM, Ed Maste <emaste at freebsd.org> wrote:
>> >
>> > On 6 April 2015 at 16:37, Greg Clayton <gclayton at apple.com> wrote:
>> >> Can everyone try and apply the following patch and run your test suite
>> and also use LLDB for a while?
>> >
>> > Test run looks equivalent on FreeBSD - I had two failures on my desktop:
>> >
>> > FAIL: LLDB (suite) :: TestEvents.py (FreeBSD feynman 10.1-STABLE
>> > FreeBSD 10.1-STABLE #28 r280427+86df2de(stable-10): Thu Mar 26
>> > 16:07:47 EDT 2015
>> > emaste at feynman:/tank/emaste/obj/tank/emaste/src/git-stable-
>> 10/sys/GENERIC
>> > amd64 amd64)
>> > FAIL: LLDB (suite) :: TestSendSignal.py (FreeBSD feynman 10.1-STABLE
>> > FreeBSD 10.1-STABLE #28 r280427+86df2de(stable-10): Thu Mar 26
>> > 16:07:47 EDT 2015
>> > emaste at feynman:/tank/emaste/obj/tank/emaste/src/git-stable-
>> 10/sys/GENERIC
>> > amd64 amd64)
>> >
>> > The first fails intermittently for me under load, while the second has
>> > been failing for a while.
>> >
>> > The change seems to make the lldb-prompt-at-the-wrong-time problem
>> > worse (or at least, no better) during interactive single stepping
>> > though. For example:
>> >
>> > % bin/lldb /bin/ls
>> > (lldb) target create "/bin/ls"
>> > Current executable set to '/bin/ls' (x86_64).
>> > (lldb) b main
>> > Breakpoint 1: where = ls`main + 33 at ls.c:163, address =
>> 0x00000000004023f1
>> > (lldb) run
>> > Process 58244 launching
>> > Process 58244 launched: '/bin/ls' (x86_64)
>> > (lldb) Process 58244 stopped
>> > * thread #1: tid = 103132, 0x00000000004023f1 ls`main(argc=1,
>> > argv=0x00007fffffffe598) + 33 at ls.c:163, stop reason = breakpoint
>> > 1.1
>> > frame #0: 0x00000000004023f1 ls`main(argc=1,
>> > argv=0x00007fffffffe598) + 33 at ls.c:163
>> > 160 #ifdef COLORLS
>> > 161 char termcapbuf[1024]; /* termcap definition buffer */
>> > 162 char tcapbuf[512]; /* capability buffer */
>> > -> 163 char *bp = tcapbuf;
>> > 164 #endif
>> > 165
>> > 166 (void)setlocale(LC_ALL, "");
>> > step
>> > Process 58244 stopped
>> > * thread #1: tid = 103132, 0x00000000004023fa ls`main(argc=1,
>> > argv=0x00007fffffffe598) + 42 at ls.c:166, stop reason = step in
>> > frame #0: 0x00000000004023fa ls`main(argc=1,
>> > argv=0x00007fffffffe598) + 42 at ls.c:166
>> > 163 char *bp = tcapbuf;
>> > 164 #endif
>> > 165
>> > -> 166 (void)setlocale(LC_ALL, "");
>> > 167
>> > 168 /* Terminal defaults to -Cq, non-terminal defaults to
>> -1. */
>> > 169 if (isatty(STDOUT_FILENO)) {
>> > (lldb) step
>> > Process 58244 stopped
>> > * thread #1: tid = 103132, 0x0000000800dab011
>> > libc.so.7`setlocale(category=0, locale=0x0000000000406373) + 33 at
>> > setlocale.c:113, stop reason = step in
>> > frame #0: 0x0000000800dab011 libc.so.7`setlocale(category=0,
>> > locale=0x0000000000406373) + 33 at setlocale.c:113
>> > 110 return (NULL);
>> > 111 }
>> > 112
>> > -> 113 if (locale == NULL)
>> > 114 return (category != LC_ALL ?
>> > 115 current_categories[category] :
>> currentlocale());
>> > 116
>> > (lldb) step
>> > (lldb) Process 58244 stopped
>> > * thread #1: tid = 103132, 0x0000000800dab01a
>> > libc.so.7`setlocale(category=0, locale=0x0000000000406373) + 42 at
>> > setlocale.c:121, stop reason = step in
>> > frame #0: 0x0000000800dab01a libc.so.7`setlocale(category=0,
>> > locale=0x0000000000406373) + 42 at setlocale.c:121
>> > 118 * Default to the current locale for everything.
>> > 119 */
>> > 120 for (i = 1; i < _LC_LAST; ++i)
>> > -> 121 (void)strcpy(new_categories[i],
>> current_categories[i]);
>> > 122
>> > 123 /*
>> > 124 * Now go fill up new_categories from the locale argument
>>
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20150406/04b4ade3/attachment.html>
More information about the lldb-dev
mailing list