Re: [RFT] llquantize for FreeBSD's dtrace
On Jun 26, 2012, at 15:06 , Fabian Keil wrote: Pedro Giffuni p...@freebsd.org wrote: --- Mar 26/6/12, Mark Peek m...@freebsd.org ha scritto: Try this, change the assert on line 1429 in file dt_cc.c from: assert(!(arg (UINT16_MAX args[i].shift))); to assert(!(arg ((uint64_t)UINT16_MAX args[i].shift))); This certainly looks correct. Thanks Mark ! I updated the patch: http://people.freebsd.org/~pfg/patches/patch-dtrace-llquantize Thanks a lot. Seems to work for me: And me as well. I tested the example from the web site. Nicely done! Best, George ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: [RFT] llquantize for FreeBSD's dtrace
On 6/23/12 11:09 AM, Pedro Giffuni wrote: --- Sab 23/6/12, Fabian Keil freebsd-lis...@fabiankeil.de ha scritto: ... My suggestion would be to instead try using the test scripts in cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ err.D_LLQUANT_FACTORSMALL.d (for example) has @ = llquantize(0, 1, 0, 10, 10); The problem appears to be unrelated to the syntax change: fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s err.D_LLQUANT_FACTORSMALL.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file It's a different assertion. Probably some difference between Solaris and BSD. this is very useful, thanks! Try this, change the assert on line 1429 in file dt_cc.c from: assert(!(arg (UINT16_MAX args[i].shift))); to assert(!(arg ((uint64_t)UINT16_MAX args[i].shift))); Mark ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: [RFT] llquantize for FreeBSD's dtrace
--- Mar 26/6/12, Mark Peek m...@freebsd.org ha scritto: It's a different assertion. Probably some difference between Solaris and BSD. this is very useful, thanks! Try this, change the assert on line 1429 in file dt_cc.c from: assert(!(arg (UINT16_MAX args[i].shift))); to assert(!(arg ((uint64_t)UINT16_MAX args[i].shift))); This certainly looks correct. Thanks Mark ! I updated the patch: http://people.freebsd.org/~pfg/patches/patch-dtrace-llquantize cheers, Pedro. ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: [RFT] llquantize for FreeBSD's dtrace
Pedro Giffuni p...@freebsd.org wrote: --- Mar 26/6/12, Mark Peek m...@freebsd.org ha scritto: Try this, change the assert on line 1429 in file dt_cc.c from: assert(!(arg (UINT16_MAX args[i].shift))); to assert(!(arg ((uint64_t)UINT16_MAX args[i].shift))); This certainly looks correct. Thanks Mark ! I updated the patch: http://people.freebsd.org/~pfg/patches/patch-dtrace-llquantize Thanks a lot. Seems to work for me: fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $for t in tst.*.d; do sudo dtrace -s $t $t.myout; diff $t.out $t.myout echo success for $t; done success for tst.bases.d success for tst.basic.d success for tst.negorder.d success for tst.negvalue.d success for tst.normal.d success for tst.range.d success for tst.steps.d success for tst.trunc.d fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $for t in err.*.d; do sudo dtrace -s $t dtrace: failed to compile script err.D_LLQUANT_FACTOREVEN.nodivide.d: line 28: llquantize( ) factor (argument #1) must evenly divide the number of steps per magnitude (argument #4), and the number of steps per magnitude must evenly divide a power of the factor dtrace: failed to compile script err.D_LLQUANT_FACTOREVEN.notfactor.d: line 28: llquantize( ) factor (argument #1) must evenly divide the number of steps per magnitude (argument #4), and the number of steps per magnitude must evenly divide a power of the factor dtrace: failed to compile script err.D_LLQUANT_FACTORMATCH.d: line 29: llquantize( ) factor (argument #1) doesn't match previous declaration: expected 10, found 3 dtrace: failed to compile script err.D_LLQUANT_FACTORNSTEPS.d: line 28: llquantize( ) factor (argument #1) must be less than or equal to the number of linear steps per magnitude (argument #4) dtrace: failed to compile script err.D_LLQUANT_FACTORSMALL.d: line 28: llquantize( ) factor (argument #1) must be two or more dtrace: failed to compile script err.D_LLQUANT_FACTORTYPE.d: line 29: llquantize( ) argument #1 (factor) must be an integer constant dtrace: failed to compile script err.D_LLQUANT_FACTORVAL.d: line 28: llquantize( ) argument #1 (factor) must be an unsigned 16-bit quantity dtrace: failed to compile script err.D_LLQUANT_HIGHMATCH.d: line 29: llquantize( ) high magnitude (argument #3) doesn't match previous declaration: expected 10, found 11 dtrace: failed to compile script err.D_LLQUANT_HIGHTYPE.d: line 29: llquantize( ) argument #3 (high magnitude) must be an integer constant dtrace: failed to compile script err.D_LLQUANT_HIGHVAL.d: line 28: llquantize( ) argument #3 (high magnitude) must be an unsigned 16-bit quantity dtrace: failed to compile script err.D_LLQUANT_LOWMATCH.d: line 29: llquantize( ) low magnitude (argument #2) doesn't match previous declaration: expected 0, found 1 dtrace: failed to compile script err.D_LLQUANT_LOWTYPE.d: line 29: llquantize( ) argument #2 (low magnitude) must be an integer constant dtrace: failed to compile script err.D_LLQUANT_LOWVAL.d: line 28: llquantize( ) argument #2 (low magnitude) must be an unsigned 16-bit quantity dtrace: failed to compile script err.D_LLQUANT_MAGRANGE.d: line 28: llquantize( ) high magnitude (argument #3) must be greater than low magnitude (argument #2) dtrace: failed to compile script err.D_LLQUANT_MAGTOOBIG.d: line 28: llquantize( ) factor (10) raised to power of high magnitude (100) overflows 64-bits dtrace: failed to compile script err.D_LLQUANT_NSTEPMATCH.d: line 29: llquantize( ) linear steps per magnitude (argument #4) doesn't match previous declaration: expected 10, found 100 dtrace: failed to compile script err.D_LLQUANT_NSTEPTYPE.d: line 29: llquantize( ) argument #4 (linear steps per magnitude) must be an integer constant dtrace: failed to compile script err.D_LLQUANT_NSTEPVAL.d: line 28: llquantize( ) argument #4 (linear steps per magnitude) must be an unsigned 16-bit quantity Fabian signature.asc Description: PGP signature
Re: [RFT] llquantize for FreeBSD's dtrace
--- Mar 26/6/12, Fabian Keil freebsd-lis...@fabiankeil.de ha scritto: Pedro Giffuni p...@freebsd.org wrote: --- Mar 26/6/12, Mark Peek m...@freebsd.org ha scritto: Try this, change the assert on line 1429 in file dt_cc.c from: assert(!(arg (UINT16_MAX args[i].shift))); to assert(!(arg ((uint64_t)UINT16_MAX args[i].shift))); This certainly looks correct. Thanks Mark ! I updated the patch: http://people.freebsd.org/~pfg/patches/patch-dtrace-llquantize Thanks a lot. Seems to work for me: Nice! I don't use Dtrace though ... so I'll ask: Any objections against committing it? :). Pedro. ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: [RFT] llquantize for FreeBSD's dtrace
Pedro Giffuni p...@freebsd.org wrote: I am not a Dtrace user (yet) but I started to port the Log/linear quantizations from Illumos: http://dtrace.org/blogs/bmc/2011/02/08/llquantize/ Apparently this patch should do it: http://people.freebsd.org/~pfg/patches/patch-llquantize-complete Unfortunately when I tried to build current with Dtrace support, my i386 Virtualbox VM got stuck in ctfmerge so this is completely untested. Testers that know how to use it are welcome :). I applied it on 10-CURRENT amd64 from /usr/src with patch -p0 without any conflicts, but it doesn't appear to be working. The example from the blog post above triggers an assertion that is still reproducible when reducing the test case: fk@r500 /tmp $sudo dtrace -n 'tick-1ms{@ = llquantize(i++, 10, 0, 6, 20);}' Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. Changing the i++ to i seems to trigger a different bug (or at least doesn't behave like I would expect): fk@r500 /tmp $sudo dtrace -n 'tick-1ms{@ = llquantize(i, 10, 0, 6, 20);}' dtrace: invalid probe specifier tick-1ms{@ = llquantize(i, 10, 0, 6, 20);}: in action list: failed to resolve i: Unknown variable name Replacing the i with a zero behaves similar to the version that uses i++ again: fk@r500 /tmp $sudo dtrace -n 'tick-1ms{ i = 0; @ = llquantize(0, 10, 0, 6, 20);}' Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. fk@r500 /tmp $gdb741 $(which dtrace) dtrace.core [GDB will not be able to debug user-mode threads: Undefined symbol td_thr_getxmmregs] GNU gdb (GDB) 7.4.1 [GDB v7.4.1 for FreeBSD] Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type show copying and show warranty for details. This GDB was configured as x86_64-portbld-freebsd10.0. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/... Reading symbols from /usr/sbin/dtrace...done. [New process 100454] Core was generated by `dtrace'. Program terminated with signal 6, Aborted. #0 0x0008019a26ac in thr_kill () at thr_kill.S:3 3 RSYSCALL(thr_kill) (gdb) where #0 0x0008019a26ac in thr_kill () at thr_kill.S:3 #1 0x00080082ff5c in _thr_send_sig (thread=optimized out, sig=6) at /usr/src/lib/libthr/thread/thr_sig.c:113 #2 0x0008008305b6 in _raise (sig=0) at /usr/src/lib/libthr/thread/thr_sig.c:505 #3 0x000801a517d3 in abort () at /usr/src/lib/libc/stdlib/abort.c:65 #4 0x000800a91c60 in __assert (line=optimized out, file=optimized out, expr=optimized out) at /usr/src/cddl/lib/libdtrace/../../../cddl/compat/opensolaris/include/assert.h:56 #5 dt_compile_agg (dtp=0x80243f000, dnp=0x803e223e0, sdp=0x803e17140) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:1366 #6 0x000800a9257f in dt_compile_one_clause (pnp=optimized out, cnp=optimized out, dtp=optimized out) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:1597 #7 dt_compile_clause (dtp=0x80243f000, cnp=0x803e23040) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:1628 #8 0x000800a94441 in dt_compile (dtp=0x80243f000, context=362, pspec=DTRACE_PROBESPEC_NAME, arg=0x0, cflags=128, argc=1, argv=0x802417040, fp=0x0, s=0x7fffd9ca tick-1ms{ i = 0; @ = llquantize(i, 10, 0, 6, 20);}) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:2396 #9 0x000800a948bc in dtrace_program_strcompile (dtp=0x18866, s=optimized out, spec=DTRACE_PROBESPEC_PROVIDER, cflags=0, argc=-2123430480, argv=optimized out) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:2460 #10 0x00405ae4 in compile_str (dcp=0x802418e00) at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:766 #11 0x00403b41 in main (argc=optimized out, argv=0x7fffd668) at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:1632 Fabian signature.asc Description: PGP signature
Re: [RFT] llquantize for FreeBSD's dtrace
Hello Fabian; --- Sab 23/6/12, Fabian Keil ha scritto: Pedro Giffuni p...@freebsd.org wrote: I am not a Dtrace user (yet) but I started to port the Log/linear quantizations from Illumos: http://dtrace.org/blogs/bmc/2011/02/08/llquantize/ Apparently this patch should do it: http://people.freebsd.org/~pfg/patches/patch-llquantize-complete Unfortunately when I tried to build current with Dtrace support, my i386 Virtualbox VM got stuck in ctfmerge so this is completely untested. Testers that know how to use it are welcome :). I applied it on 10-CURRENT amd64 from /usr/src with patch -p0 without any conflicts, but it doesn't appear to be working. The example from the blog post above triggers an assertion that is still reproducible when reducing the test case: fk@r500 /tmp $sudo dtrace -n 'tick-1ms{@ = llquantize(i++, 10, 0, 6, 20);}' Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. Thanks for testing! It seems like the syntax has changed from the time the example from the blog was made. The code says: /* * For log/linear quantizations, we have between one and five * arguments in addition to the expression: * *arg1 = Factor *arg2 = Low magnitude *arg3 = High magnitude *arg4 = Number of steps per magnitude *arg5 = Quantization increment value (defaults to 1) */ My suggestion would be to instead try using the test scripts in cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ err.D_LLQUANT_FACTORSMALL.d (for example) has @ = llquantize(0, 1, 0, 10, 10); hope that helps! Pedro. ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: [RFT] llquantize for FreeBSD's dtrace
Pedro Giffuni p...@freebsd.org wrote: Hello Fabian; --- Sab 23/6/12, Fabian Keil ha scritto: Pedro Giffuni p...@freebsd.org wrote: I am not a Dtrace user (yet) but I started to port the Log/linear quantizations from Illumos: http://dtrace.org/blogs/bmc/2011/02/08/llquantize/ Apparently this patch should do it: http://people.freebsd.org/~pfg/patches/patch-llquantize-complete Unfortunately when I tried to build current with Dtrace support, my i386 Virtualbox VM got stuck in ctfmerge so this is completely untested. Testers that know how to use it are welcome :). I applied it on 10-CURRENT amd64 from /usr/src with patch -p0 without any conflicts, but it doesn't appear to be working. The example from the blog post above triggers an assertion that is still reproducible when reducing the test case: fk@r500 /tmp $sudo dtrace -n 'tick-1ms{@ = llquantize(i++, 10, 0, 6, 20);}' Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. Thanks for testing! It seems like the syntax has changed from the time the example from the blog was made. The code says: /* * For log/linear quantizations, we have between one and five * arguments in addition to the expression: * *arg1 = Factor *arg2 = Low magnitude *arg3 = High magnitude *arg4 = Number of steps per magnitude *arg5 = Quantization increment value (defaults to 1) */ My suggestion would be to instead try using the test scripts in cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ err.D_LLQUANT_FACTORSMALL.d (for example) has @ = llquantize(0, 1, 0, 10, 10); The problem appears to be unrelated to the syntax change: fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s err.D_LLQUANT_FACTORSMALL.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s tst.bases.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s tst.negvalue.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s tst.steps.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. root@r500:/root # dtrace -s /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/tst.steps.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c, line 1429. Abort (core dumped) Fabian signature.asc Description: PGP signature
Re: [RFT] llquantize for FreeBSD's dtrace
--- Sab 23/6/12, Fabian Keil freebsd-lis...@fabiankeil.de ha scritto: ... My suggestion would be to instead try using the test scripts in cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ err.D_LLQUANT_FACTORSMALL.d (for example) has @ = llquantize(0, 1, 0, 10, 10); The problem appears to be unrelated to the syntax change: fk@r500 /usr/src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize $sudo dtrace -s err.D_LLQUANT_FACTORSMALL.d Assertion failed: (!(arg (UINT16_MAX args[i].shift))), file It's a different assertion. Probably some difference between Solaris and BSD. this is very useful, thanks! Pedro. ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
[RFT] llquantize for FreeBSD's dtrace
Hello; I am not a Dtrace user (yet) but I started to port the Log/linear quantizations from Illumos: http://dtrace.org/blogs/bmc/2011/02/08/llquantize/ Apparently this patch should do it: http://people.freebsd.org/~pfg/patches/patch-llquantize-complete Unfortunately when I tried to build current with Dtrace support, my i386 Virtualbox VM got stuck in ctfmerge so this is completely untested. Testers that know how to use it are welcome :). best regards, Pedro. ps. just for reference, the original code was taken from here: https://hg.openindiana.org/upstream/illumos/illumos-gate/rev/15b74a2a9a9d ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org