profile
viewpoint
Timothy J Fontaine tjfontaine Ataraxia Consulting San Francisco, CA http://www.atxconsulting.com

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha d365d1ce209fb02552f1d6864b6c3c4d67a8ab93

fix

view details

push time in 12 hours

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha b865f03ecea7e0a900106c36a54c1b528ecb2ef1

fix

view details

push time in 12 hours

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha 3d8e364d7e4d5d38d4dfb3030f5904d3cf6472d4

2019-kubecon-europe

view details

Timothy J Fontaine

commit sha 31f646f683c3ad490ec482b7a72408bf7947cfce

update path to kubecon 19 eu

view details

Timothy J Fontaine

commit sha 7a90fe104ffa6fa5dcc8c48a152cc94a1ae2e5d2

kubecon 19 update speaker images

view details

Timothy J Fontaine

commit sha f63d6903a763433cf5b588fbe2885b44d9c34115

kubecon 19 eu change speaker image

view details

Timothy J Fontaine

commit sha dcbcd83d5234f4250e42e77e9d85b074d98a3a38

kubecon19 eu update keynote date

view details

Aaron Rice

commit sha 1c820111c1e92b2521593057a5e2eefc41396a75

Oracle Streaming Services Solution - Quickstart

view details

Timothy J Fontaine

commit sha 07e9d703e88991e205c1a25f2592a70ce10d6bd9

add kubecon19-eu lightning talks

view details

push time in 12 hours

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha b727bc65ec4b157a21bd07b3829febd2c6732960

fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha 230ae806ada8d0741695adf195e8f97b6d2a9274

fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha 38ddb087b70610e0f1b13dda4032ac85ad166582

fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha 7140d21bb064b4d0344440df0786afc9e721e729

fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha c0bb8e7b4e564623184ae5db87974e0c6d0bf314

fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha fe95dcc656225bade2220973b2ccb9a864eb15ad

2019-kubecon-europe fix

view details

push time in 20 days

push eventtjfontaine/cloudnative

Timothy J Fontaine

commit sha ed12a4b2d607030f6d57fa294152399dcac79de5

kubecon18-na: add summit videos

view details

Timothy J Fontaine

commit sha a20a35cc9967308b61071c5262b428618eca7c4e

kubecon18-na: fix manifest

view details

Mickey Boxell

commit sha 43ffe28b7ba61b001d2be29f8e7a2f20d7823da9

Helidon labs

view details

Victoria Domalik

commit sha 7356fad5d9ac19137e86f77fcbdb0db05f69683e

Fluent d fix

view details

Mickey Boxell

commit sha 39c73c195aa4363874838609bf578f3289dff5f6

Helidon app update

view details

Victoria Domalik

commit sha 57f4dfdcdd2d2fe36bdd463c9a13f2980f372855

Grpc part one and two

view details

Aaron Rice

commit sha 4c907986c235522b00e68d5cb447fac68484a84a

Zipkin Part 2

view details

Karthik Gaekwad

commit sha 5ac948fb71c2ba94e03fa790b73072fe8079c558

Fixes spinnaker paths.

view details

Victoria Domalik

commit sha ba8a04abfd6e5c20e19733adcf3e398924ddb9b6

Replace jenkinsx_course_pg.png

view details

Victoria Domalik

commit sha 8b6c1531bb29850d8ef1b9fd7435146c5ac62751

Grpc solution.json and images update

view details

Karthik Gaekwad

commit sha c6e8d6b8b8797799abecbcb0a8667cffc4d0b684

Updates the solution.json for helidon

view details

Karthik Gaekwad

commit sha f69d4c33ff8ecb671455feda788c375b9ca3494e

Updated URL's to raw urls

view details

Kaslin Fields

commit sha ea72f51863cd7e72174bf3d8d2457f2d6c965fce

Updating the terraform installation tutorial

view details

Mickey Boxell

commit sha 2f31118690ae8d07f6c0894ff9fcb712a3ddd80d

added grafana solution docs

view details

Karthik Gaekwad

commit sha 31ea1d1c9d42cb5cdde39c4f90ee88a49511ee1a

manifest updates for grafana and grpc

view details

Karthik Gaekwad

commit sha c4ac33be4c495e4adf6f959fa4c52e358264c5e6

fixes link

view details

Karthik Gaekwad

commit sha d1a058de39d85ecdcdbc199161efcc4946cf566d

updates solution.json for k8s

view details

Aaron Rice

commit sha f993b7a15e8e3ca47384b50a8afe0ae876763016

Infrastructure/message queues/Kafka Solution

view details

Karthik Gaekwad

commit sha 1fa3f72e550dd016f3951c3ec12810c427c1f617

Manifest updates for kafka

view details

Karthik Gaekwad

commit sha 65a36046d67cfa93658b55ccff238957e824e5e7

Queuing text updates

view details

push time in 20 days

issue commentlinuxkit/linuxkit

make kconfig doesn't work as per manual

I can confirm this happens, the local workaround I use is to mkdir kernel/sources, I'm not sure what if anything is supposed to be there (presumably some form of caching of the source balls) but the rest of the builds for the kernel work (kconfig and build_) once that directory is there.

alekslitvinenk

comment created time in a month

push eventtjfontaine/dtrace-utils

Timothy J Fontaine

commit sha 1bd5b3825ca0dd641694f795734b9bbbfd3f2ebb

use /proc/<pid>/root relative paths

view details

push time in 2 months

push eventtjfontaine/dtrace-utils

Timothy J Fontaine

commit sha 3e49124ea8c1f386f9079345fb8d47800a73d27d

skip dtrace_kernels translators?

view details

push time in 2 months

push eventtjfontaine/dtrace-utils

Timothy J Fontaine

commit sha 1879fc85a2e6e88e3f1cdc47a4445f6c222d7eb3

bump version for rpm building

view details

push time in 2 months

push eventtjfontaine/dtrace-utils

Timothy J Fontaine

commit sha a2fc77244d8128609d95cd7f496cd890cf0e808a

libproc: use mount namespace for symbol resolution

view details

push time in 2 months

push eventtjfontaine/dtrace-utils

Nick Alcock

commit sha f97512f9acbb77d0882ba17cc0c0ea8f6bdfd531

Add ctf_gzwrite(). Without this function, libctf can read in compressed CTF files, but cannot write them out.

view details

Nick Alcock

commit sha 88359408843ee91de7daec9f1c3b72ba3a250eea

Allow addition of members to structures with a specified offset. The ctf_add_member() function lets you add a member with a specified name and type to the end of a structure -- but it always uses the natural alignment of the machine to do so, which is not sufficient when re-encoding DWARF, as not all structures need be laid out that way. So we allow the user to explicitly specify the offset of the new member (in bits) from the start of the structure via the new API function ctf_add_member_offset().

view details

Nick Alcock

commit sha 741315765ede4862c358644ec92bff9672a89ec4

Make error return codes public. The libctf API functions return error codes but do not export the symbolic constants corresponding to those error codes. This makes CTF error-handling more complex than printing the string representation of the error difficult to impossible. Exporting them is a simple matter of moving them from one header to another.

view details

Nick Alcock

commit sha 6fdf7b741c80b59036ab771778632c824faf5deb

Clarify the nature of parent/child relations between CTF files. I just spent far more time than can be sensibly imagined attempting to fix what appeared to be broken code inside libctf for tracking parent/child relations and automatically importing parent types into their children. It turns out that this code has nothing whatsoever to do with parent/child relations, but is instead tracking parent/child relations among a graph of *labels*. These partition the types in a single CTF container, and are used when merging type graphs when doing multithreaded CTF file construction. So, let's update the comments in ctf.h to prevent anyone else from getting so terminally confused.

view details

Nick Alcock

commit sha 80e17e97dd3b92437011ee5b0e03b694975a330a

Clean up a trigger-related mess. We were long excluding build directories from git, but a build includes the creation of symlinks in test/triggers to the compiled triggers in the build dir. These were not being ignored, and some time ago got mistakenly checked in. This commit removes them again, and tells git to ignore every file in the test/triggers directory other than C files, the Build file, and one or two explicitly-named shell-script triggers. This should prevent this mess from reoccurring.

view details

Nick Alcock

commit sha f1d2c12fd2498ddbd7cbe006396c3b152b4bf68e

Split libctf into a new repository. This was done, and libctf relicensed under the GPLv2 and the proprietary DTrace userspace license, to make it possible to use the DTrace libctf implementation in the Linux kernel build process (specifically, so that dwarf2ctf can link against it). So libctf has migrated into a new git repository so as not to mix up code under multiple licenses, and been renamed to libdtrace-ctf to avoid conflicting with the existing Common Trace Format Linux library and to make it doubly clear that the API can and will vary at the convenience of DTrace: we will bump soname whenever we see fit. However, we do not wish to sacrifice the ability to conveniently build (and test) libctf along with dtrace. libctf doesn't change very often, so git submodules are quite well-suited for this -- but they are also annoying to use, because everyone checking out dtrace needs to do a 'git submodule update' to get the submodule, and people often forget. So libdtrace-ctf is an *optional* submodule of dtrace. If you don't do a 'git submodule update', the libdtrace-ctf directory in the dtrace checkout remains empty: the makefile detects a nonempty libdtrace-ctf directory and adds libdtrace-ctf/include to the CPPFLAGS in that situation only. Further, the two projects share one build system, and there is a Build file at the root of the libdtrace-ctf repository which pulls in libctf/Build and include/Build. Both of these consult $(PROJECT) and only provide install rules if the project is 'libdtrace-ctf'. The net effect of all this is that if you don't initialize submodules in your working tree, dtrace will use your installed libdtrace-ctf headers and link against your installed libdtrace-ctf.so: if you do initialise submodules, dtrace will build a new copy of libdtrace-ctf.so from the submodule, guaranteed to be the right version for this checkout: if test coverage analysis is enabled, it will extend over libdtrace-ctf as well. However, that submodular copy of libdtrace-ctf is never installed: you need an installed copy of libdtrace-ctf (perhaps generated via 'make && make install' in the libdtrace-ctf subdirectory, or via an RPM package installation) for dtrace to run once installed. The only failure mode now is if libdtrace-ctf grows a new interface and you have a newer libctf in the submodule that has that interface, but an older one installed that lacks it. You can expect an installed dtrace to fail with unresolved symbols in such a situation. Don't do that. (This is never a problem when building RPMs, only when developing.) This involved a bit of tweaking of include paths in various places: DTrace was including an include file in libctf that did nothing other than include <ctf_api.h> and that was not installed: this is no longer visible in a non-submodular build, so everything had to change to include <ctf_api.h> directly instead. Finally, we dropped a few preprocessor conditionals and include files that were only needed when building libctf or which were never used at all.

view details

Nick Alcock

commit sha 5c83822e420cd9cb72e463ac2948256b808478cd

GNU GLOBAL support. This is a rather nice tagging system. This adds a 'gtags' makefile target for it. Also, there's a new 'realclean' target that deletes all the tags files too.

view details

Nick Alcock

commit sha bfa26c0a7ab0c381f208eee598469fb4499c4e43

Tiny specfile cleanups. Pearly's not working here anymore and neither her nor I are the authors of DTrace. At best we could be regarded as maintainers. Add Kris, adjust the %description accordingly. Change %files to claim all of /usr/lib/dtrace, not just every file that happens to be in it right now. Declare /usr/share/doc/dtrace-*/* to be documentation.

view details

Nick Alcock

commit sha 54571c267486b403c56e58bd59b0b9032df44e54

Silent build bugfixes. The silent build work had a few cosmetic bugs. Notably, $(describe-install-target ...), which is run to print a description of things being installed, wasn't stripping the directory part from filenames being installed, leading to ridiculous output like INSTALL: buildroot/usr/include/sys/uts/common/sys/dtrace.h which should be INSTALL: buildroot/usr/include/sys/dtrace.h Finally, when linking static libraries the libraries were always being reported as something like AR: lib_TARGET.a rather than AR: libport.a which is clearly wrong.

view details

Nick Alcock

commit sha 3d4d83473f77dff3770973332e969ddd9159093d

libdtrace-ctf is a build-time requirement as well as a runtime requirement.

view details

Nick Alcock

commit sha 886b737144a1ffa915ff6463c2c41c0f1eb2d04d

Migrate some types to <sys/ctf_types.h> in the submodule. Also include that file from <sys/dtrace_types.h>.

view details

Nick Alcock

commit sha 649aa3a70fedc70fdf83a94e65945b5f76907978

Trivial warning fixes in triggers. Missing headers and missing prototypes.

view details

Nick Alcock

commit sha d1a28fb877d2612727d7f8ef7662c4adfb9b77ad

Submodule update to fix a lethal specfile bug breaking snapshot builds.

view details

Nick Alcock

commit sha 65b6d7d16c2434360cd2367ed6e0acdcdfb9f94a

Add back a #define necessary on OEL5. The snapshot build host runs OEL5, so even though this #define is present on OEL6 we still need to provide it.

view details

Nick Alcock

commit sha 38c562315397b7bf276bebc90fd94fa840714d88

File-presence fixes. Specifically, do not specify that the CTF headers are installed in the specfile, since they are not; pull in a new version of libdtrace-ctf that installs ctf_types.h.

view details

Nick Alcock

commit sha 90202ea7ef1426f63bbdac78fac948b2a95df9fa

Eliminate duplicate code for ELF symbol lookup. The near-identically-named macros and types for 32-bit and 64-bit code in <elf.h> had spawned an invasion of hundreds of lines of duplicated near-identical code in dt_module.c. This was annoying, pointlessly repetitive, and hid those few significant places where differing code was necessary for 32- versus 64-bit: so, split that code out into a header file using token pasting to produce the appropriate type and macro names, and include that header repeatedly to generate the ELF symbol table manipulation functions.

view details

Nick Alcock

commit sha ad165a0db6999be724f26a9479a130b265f096e1

Purge the last remaining signs of dm_modid and dto_id.

view details

Nick Alcock

commit sha 99a465d729e306cdc62b522110f704e3530367fe

Eliminate the concept of 'primary objects'. This Solaris concept has no meaning in Linux. Dropping it means we lose a bunch of complexity from dt_module.c as well as libdtrace API to track it, and even a linkmode option. While we're at it, drop most mentions of the kernel's runtime loader (which has no API in the same sense in Linux) and yet more references to tasks, zones, projects, and contracts. Finally, update INCOMPATIBILITIES to note some of this. (Just because trying to do anything with tasks, projects, zones, contracts, and primary objects would never have worked before this change doesn't mean their absence is not an incompatibility.)

view details

Nick Alcock

commit sha 10a6091baba049b1fd8692485cbe0036c5d1ea2c

Add a crude symbol-checking infrastructure, like Autoconf's AC_CHECK_LIB. This lets you check for the presence of a symbol on the build system by calling $(eval $(call check-symbol-rule,NAME,symbol,library)) which automatically does a link test for this symbol and emits a line into $(objdir)/config.h #defining HAVE_$(NAME) to 1 if that symbol is present. To force config.h to be built whenever needed, it is forcibly added to the dependency list of every C file. (Because it is often indirectly included, we cannot reasonably ask users to add the dependency themselves. It never changes after initial creation, so this somewhat extreme solution is acceptable.)

view details

Nick Alcock

commit sha 8993b957f9af7c7f482a88f620a948878b9de2d3

Adapt to the absence of elf_getshdrstrndx() and elf_getshdrnum(). These symbols were introduced in elfutils 0.142 as aliases for the deprecated elf_getshstrndx() and elf_getshnum(). Unfortunately our snapshot build system has an older elfutils than that, and we have repeatedly fallen victim to the absence of these symbols on that system. So use the new autoconf-like symbol-checking machinery to #define the new names to the old ones where necessary, and use the new names everywhere, rather than trying to use the old symbols and frequently forgetting a few, leading to snapshot build failures later on.

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 035204c24cf6b75608f4e968232fe854f563cead

no cdefs needed?

view details

Timothy J Fontaine

commit sha 6841637ccdaf11aec6f75ce06fdd4fe082e06be6

no libintl

view details

Timothy J Fontaine

commit sha b0fac8b6f7e72fb8b291f6c6375eb8d7d92e90b4

no error.h

view details

Timothy J Fontaine

commit sha d248a03f16ed324ef2861c507dbd533335a595b6

add -lfts

view details

Timothy J Fontaine

commit sha 4ca29e14339916bf42d6d139ff6d5acb12fb0e67

musl: explicitly link against obstack

view details

Timothy J Fontaine

commit sha ff428cc76aeb775600c31aa3762d4d40751d22aa

alpine: musl-qsort_r.patch

view details

Timothy J Fontaine

commit sha afb0c346dc7642c34d8c5747ddae39d2b8de942c

alpine: musl-cdefs.patch

view details

Timothy J Fontaine

commit sha a4a4d583a7ae22a632f794d9fbf65afda7f10e54

alpine: musl-strerror_r.patch

view details

Timothy J Fontaine

commit sha 451bf4eeb45a47d16c0352b9d5683fa2e01f5806

alpine: no-werror.patch

view details

Timothy J Fontaine

commit sha dde7a8c8c7b2cbb0f95a53082296d5b59b2e4178

alpine: musl-macros.patch

view details

Timothy J Fontaine

commit sha 8d476132c69f360effe156e43dcd7683bcdc3bb3

alpine: musl-accessperms

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha bc6b7d7a713a10c2ba903f01dc3f8ba5a1a64ee6

musl: explicitly link against obstack

view details

Timothy J Fontaine

commit sha 34ee595f6c920d9dbd25f0eb06e34903b4e8e8fb

alpine: musl-qsort_r.patch

view details

Timothy J Fontaine

commit sha 5fa5a95656d164baada6cf327771350fc6bc8dc1

alpine: musl-cdefs.patch

view details

Timothy J Fontaine

commit sha 862d5fc46656dbf7194f4627c39c029ac3555898

alpine: musl-strerror_r.patch

view details

Timothy J Fontaine

commit sha a7bc0eca5845485c8f07a4d1f0353b6d5d04a8f5

alpine: no-werror.patch

view details

Timothy J Fontaine

commit sha 951a27e327dec5f4ae04619382d04cfe1e894d0c

alpine: musl-macros.patch

view details

Timothy J Fontaine

commit sha d808a6e11e0961b3d2e5e2fa4f155ed984659c49

alpine: musl-accessperms

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 6edf096c868f4100f7961bf273168ad51d8f8c02

alpine: no-werror.patch

view details

Timothy J Fontaine

commit sha ca38bac59d8b0f61ef02e50bf094e69adc0b6a5d

alpine: musl-macros.patch

view details

Timothy J Fontaine

commit sha da1b0827e9591678de7e70eef5350e8e616d3fd5

alpine: musl-accessperms

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha a98c5d62bb919139cef17944ab821882308741f4

use qsort instead of qsort_r

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 95ac7dbb1eb326cc8356862ef6e8609f6e15ce9b

alpine: musl-cdefs.patch

view details

Timothy J Fontaine

commit sha 9fdb8c6f8b09ff071a88ff0f324d3116ab5b14d2

alpine: musl-strerror_r.patch

view details

Timothy J Fontaine

commit sha 0b6876b595bc648057da92dea8efb782edc803f9

alpine: no-werror.patch

view details

Timothy J Fontaine

commit sha a7c17832da63fa6d5900f96fd6c6e0d896c4854e

alpine: musl-macros.patch

view details

Timothy J Fontaine

commit sha 33de3df87916f98f6e611ad19ebdb078eef3e297

alpine: musl-accessperms

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha 7c63ed2606bbc3e6d20cf49f26df7bebf8fe7d5f

use qsort instead of qsort_r

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha f9b3acd763a46926386f0e8d037e251ee68905ad

use qsort instead of qsort_r

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 5e6108218a92322783a1a7ec7969a6bcc292531b

more obstack

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 045684b3e699046f794fdc6c6265b5dde8a59d28

more obstack

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 212becb6d9001feddedf57ebd0e30ed4d647d2e8

arlib needs obstack

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 8fa6a6b8d7bab1253f496452fff2454686cbf901

arlib needs obstack

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha fc972aff2477215ea941a9788eedc38b78b4fb6e

no qsort_r

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 320228fe29c593c5452a77809b35f9b5114fa4cc

no qsort_r

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha de660a8f8baca3aeba29d292b37735f62ae2802f

add obstack for libcpu

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 77ee44bf8d37c8c080bfb2544203004558ad7328

add -lfts

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 05b0592958475b1ba8f16fa5a38edfcff85bc7ce

no cdefs needed?

view details

Timothy J Fontaine

commit sha 6f45f776bee61b2a7f882b8e6c7d5047320f4d76

no libintl

view details

Timothy J Fontaine

commit sha e991e052933c089ffcc947f19e5f329d243cdca7

no error.h

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha df1ea68dc049efb346723921d932f0f2a8548a7a

no libintl

view details

push time in 2 months

push eventtjfontaine/elfutils

Timothy J Fontaine

commit sha 98f84f8384ff60391b97429e4937859275e73598

no cdefs needed?

view details

push time in 2 months

create barnchtjfontaine/elfutils

branch : master

created branch time in 2 months

created repositorytjfontaine/elfutils

elfutils mirro

created time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha bf570d0b3de17e8e16f4f7430058bec63397804e

public domain qsort_r implementation

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha 002a1640d1b1e59f11b94a439e53cf8ec14ca5c5

public domain qsort_r implementation

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha fe606ac78a335fa03efc6e49c510057a2cf7281a

public domain qsort_r implementation

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Timothy J Fontaine

commit sha cd484f2679d9e79792b53bab25c0d15cf856a52f

public domain qsort_r implementation

view details

push time in 2 months

push eventtjfontaine/libdtrace-ctf

Elena Zannoni

commit sha fda75b302322ae9044a863f737294c7434600f37

Create README.md

view details

Nick Alcock

commit sha 7239cc45b2ee9dc7877504ef84679c3be52ad36e

Add missing LICENSE. libdtrace-ctf is dual-licensed under the UPL and GPLv2, so we should have the UPL license text in the source tree.

view details

Nick Alcock

commit sha 842592a789ae9bdfa1ace3291589b75ee31c90b5

create: stop rollback in child containers destroying all types therein We mix up a type and index, and in child containers these differ by 0x8000: so ctf_rollback() finds that *every* type has been 'added' since the last ctf_snapshot(), and deletes them all, with unpleasant effects on users, since this violates their specified behaviour rather drastically. Orabug: 27971037

view details

Nick Alcock

commit sha e165ad52c8c08ec95a4a4dbab376040ada59830d

Prepare for 0.8.1.

view details

Tomas Jedlicka

commit sha bd39d12998321cf874e041a950a338d86374b841

Use variables for ar during build The build should use $(AR) rather than hardcoded ar to allow its overrides. Other commands are using this already. Orabug: 28241381 Signed-off-by: Tomas Jedlicka <tomas.jedlicka@oracle.com> Reviewed-by: Eugene Loh <eugene.loh@oracle.com> Reviewed-by: Nick Alcock <nick.alcock@oracle.com>

view details

Nick Alcock

commit sha 33083bc5540eeaaa505f6d4ff1e89eed70b034ce

Introduce CTF_VERSION_2, with more types, structure members, and kinds CTF format 1 is showing its age. It supports only 2^15-1 types in any one container, which is little enough that a make allyesconfig or allmodconfig kernel will fail to build because it runs out of types (each enumeration value counts as a type!). It supports only 1024 structure members or enumeration values in any one struct/union/enum, which is little enough that some machine-generated code in the kernel is already hitting it; and it supports only 32 type kinds, which we are halfway to using up already. (Yes, the minimum C standard limit is similar, but almost all compilers support many more, in particular including GCC and all compilers that have a hope of compiling the Linux kernel -- or the Solaris kernel, come to that.) All of these problems arise because the structures used to encode types internally are too small. We can boost all of these limits by making three changes: - make types a uint32_t, allowing 31 bits for types in each of the parent and child containers (and incidentally allowing much larger sizes to be encoded in the "small" ctf_stype and ctf_member structures). This causes the ctf_stype, ctf_type, ctf_array, ctf_member and ctf_lmember structures to grow, but we have been able to drop padding so ctf_lmember has grown less than might be expected. - make the info word a uint32_t too, allowing 32 bits for the info string, permitting 16 million structure/union/enum members rather than 1024, and while we're at it adding a bit to the type kind so we now support 64 of those. (This uses no extra space because the space it consumes was occupied by alignment padding in v1.) Backward-compatibility here is a bit tricky. The ABI and soname are unchanged, but there are a lot of macros in the installed <sys/ctf.h> that provide direct access to the guts of CTF files. None of these are used by DTrace or dwarf2ctf, so I have freely changed most of their names from e.g. CTF_TYPE_* to CTF_V1/V2_TYPE_* to force affected users to recompile and rethink what they're doing: everything whose name is unchanged has unchanged semantics, but may now refer to V2 rather than V1 (particularly true of limit constants and structure names, where the unadorned name is v2 and the name suffixed _V1 or _v1 is for the older format). Some things that were macros have had to become functions: CTF_TYPE_ISPARENT and CTF_TYPE_ISCHILD are now API functions, named ctf_type_isparent() and ctf_type_ischild(). The _V1-named macros are explicitly to access CTF files by hand: types returned from the API will always appear to be v2, even if the underlying CTF file was v1. We handle backward-compatibility concerns by transparently upgrading v1 CTF files to v2 at ctf_bufopen() time, via a new upgrade_types(). This upgrades the entire type section, including varlen regions, which is quite expensive but is easy to validate and only applies to old CTF files in any case. symsects are not updated and cause an open failure, because dwarf2ctf doesn't create them so there should be zero instances of this in the wild. There are a number of assertions in the transparent upgrading process to ensure that the entire region is converted and that various invariants that might cause buffer overruns if they go wrong are not violated. (These invariants should be violated only if the code is buggy: corrupted CTF files should not be able to cause them, though the existing code is not at all armoured against malicious CTF files in any case.) (The value of the CTF_VERSION_2 constant is 3 rather than 2 to allow room for a use of 2 in a later patch in this series.) Other internal-only changes necessary for this: - The ctf_fileops vector has grown new members allowing the ctf_get_ctt_size() to vary depending on CTF file version (transparently upgraded to v2 after open is complete), and allowing the manual computation of vbytes repeated over and over again in ctf_open to be moved into a single LCTF_VBYTES() macro. - Fairly large chunks of ctf_bufopen() to do with updating the ctf base and version number have moved into functions so that upgrade_types() can call them as well: a bunch of code that depends on regions that transparent upgrade may reallocate has been moved below init_types() as well. - CTF_INFO_KIND(), CTF_INFO_ISROOT() and CTF_INFO_VLEN() have become LCTF operations that take a CTF file as a parameter, to allow them to dynamically adjust to v1 versus v2 (though in practice most calls will always be v2 because of transparent upgrade, if we should be wrong about this the code will now adapt). - CTF_INDEX_TO_TYPE and CTF_TYPE_TO_INDEX have become LCTF_ operations that take a CTF file as a parameter. This is because while we upgrade the file format, we do not change the type IDs, so the old parent/child boundary of 0x7fff persists in a v1 upgraded to v2. We record this in a new member fp->ctf_parmax, and compare against this member when determining whether a type is a parent or a child. - Many casts of type IDs to ushort_t have become casts to uint32_t instead. - A few out-of-memory errors have been flipped to ENOMEM from EAGAIN for consistency. It is unlikely anyone will be affected. The library is (and was, and remains) rather confused about whether it wants to use a uint_t or a uint32_t to encode things, and continues to rely on no information loss happening when converting in either direction. We enforce that their sizes are identical with a C11 static assertion (if supported by the compiler, which presently requires overriding CFLAGS at build time). A later commit in this series converts the lot to uint32_t. All of this has performance impact well below the noise floor, at least on a machine big enough to keep the CTF file in L3 cache across ctf_bufopen(). If one times dtrace make check-stress runs using the old library, the new library using CTF generated by the old library, and the new library, one sees something like this (these figures generated in a QEMU VM atop a mostly-idle Xeon E5-2640, i.e. it had 24MiB of L3 cache to play with: machines with much less cache might be more impacted): old: 1125.29user 677.44system 51:46.49elapsed 58%CPU (0avgtext+0avgdata 91712maxresident)k 132900inputs+4509664outputs (43major+48812910minor)pagefaults 0swaps new, old ctfa: 1128.35user 686.25system 51:38.97elapsed 58%CPU (0avgtext+0avgdata 91648maxresident)k 15484inputs+4541536outputs (0major+48395888minor)pagefaults 0swaps new, new ctfa: 1126.85user 696.26system 51:55.69elapsed 58%CPU (0avgtext+0avgdata 91684maxresident)k 254756inputs+4570376outputs (136major+47324039minor)pagefaults 0swaps The range expansion does lead to CTF files growing larger: -rw-rw-r--. 1 oranix oranix 6311731 Jun 13 14:42 vmlinux.ctfa -rw-rw-r--. 1 oranix oranix 5950771 Jun 13 12:16 vmlinux.old.ctfa However, this is no more than the growth we often see between kernel releases anyway. The files which account for the majority of the types (vmlinux.ctf and shared_ctf.ctf) have grown by less than 64KiB each. Large amounts of space could be saved in a later format revision by exploiting knowledge of the textual structure of C identifiers (accumulating underscore-separated pieces in a table and composing the identifiers out of the pieces). But that is for format v3. :) Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha f118daaa970af3148cab00ad6212ebe1f35e7d83

Boost the hash table sizes again With the support for many more types, it is now common to have 20,000+ types in a single container. Boost the hash bucket count to 8191 to allow for this. (The next upgrade should be to dynamic sizes, because *no* static size can suffice for the sheer number of distinct types we can now encode.) A little trivial testing suggests that before this change, the average length of the hash chains searched by a given successful lookup when running a full DTrace testsuite run was 9: afterwards, it was 3 (so the average chain length was probably double that). (This is only an average: some are much worse, with averages of >30 visible on some hashes before the change: still better than a linear search but that's about all you can say for it.) No effect on speed or memory usage above the noise is visible, despite this: it probably takes contrived testcases to see one, or a machine with less L3 cache than the one I'm testing on. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha 9cce218c537700d3c0cbf45a5bb4769f9f8ec629

Introduce ctf_getdatasect(). This returns the ctfsect passed to ctf_open(), so the caller doesn't need to keep track of it. We are careful never to free this, but have before now required the caller to keep hold of it so it could free it itself. This is needlessly clumsy, when we can hand it back: the caller can ask for it right before ctf_close(), then free the data section it is passed. (It is always safe to do so, since we never free it.) Thanks to Tomas Jedlicka for the suggestion. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha f944224c40e8156bf791dbb09db599049df23668

ctf_dump: fix a memory leak We were leaking the cts_sect data we decompressed. Plug this using the newly-introducded ctf_getdatasect() API to make valgrind leak runs cleaner. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha bf0971132b2b07210850e40ad6e26f87397f74e1

uint32ify the API. We already depend on uint_t and uint32_t being the same size, so just migrate to using uint32_t everywhere. The uint_t type is still provided for any other users that may rely on it, but not used. Because type sizes have not changed, this technical API and ABI change is not an actual change on any platform the library is likely to run on, so the soname is unchanged with this release. Suggested by Tomas Jedlicka. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha afee87d057576a06add329022f7f87d2e3ad3c86

Boost the next version to 1.0.0. There is no ABI or soname change, but this does flag up the API change for any users that might be doing direct CTF file access using the <sys/ctf.h> accessors. (There are probably none.) Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha 41b74d2abb594f485a891b8c22c555a07c0ae608

ctf_dump: tabify. We were using an ugly mixture of tab-based and space-based indentation. Switch to tab-based, for consistency with the rest of the project. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha e3df8e7ff392af5b9d3f14366a243f23c50af0ed

ctf_dump: report the linked type of types that reference others. This is useful when debugging problems linking types together. Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha f05c1ae1617a018f69baf171252ef8ee084b5ae4

upgrade: support writing out a CTF_VERSION_1 file. A ctf_open() of a CTF_VERSION_1 file followed by a ctf_compress_write() will produce corrupted output that cannot be reopened: it is the wrong length, its string table pointer is pointing too early, and it declares itself to be CTF_VERSION_1 in the header, though it is internally v2 by this point and an "upgrade" will fail horribly due to accessing v2 data at v1 structure offsets. There are three interlinked problems here: we modify the header at transparent-upgrade time, but only a temporary copy kept around during ctf_bufopen(): the canonical copy at fp->ctf_base is never touched, so its version is still 1, its size is wrong, and its stroff has not been updated (this copy is used by ctf_compress_write()). We do not record that a file was at one point v1, so the parent/child boundary on reread will be wrong (a native v2 file has a parmax of CTF_MAX_PTYPE, while one upgraded from v1 has the v1 parmax, CTF_MAX_PTYPE_V1, since upgrading cannot change type IDs). Fix all of these by adding a new 'version' CTF_VERSION_1_UPGRADED_2, with a version number falling between v1 and v2 (which means we can test if a file needs to use the old parent type via a simple < CTF_VERSION_2 comparison, and can test if it needs upgrading via == CTF_VERSION_1), and taking care to update the canonical header when we update the temporary copy in ctf_bufopen(). (We still need the temporary copy because native v2 uncompressed type tables have the ctf_base in readonly memory.) Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha aa36b74cbeac92510ee8e10ef47b290985e45277

ctf_ar: only upgrade and recompress on request Currently, ctf_ar extracts archives by opening each CTF file in turn, then writing out its compressed representation. This is not very desirable default behaviour for an archiving tool: by default, such tools should write out precisely what it is in the archive, which for ctfa archives means the data will sometimes be uncompressed (if it is below the threshold specified to ctf_arc_write() at write time) and will be v1 archives if the origin was v1, rather than being v1-upgraded-to-v2 hybrids. We add a new ctf_archive_raw_iter() function which allows iteration over the raw contents of an archive, and use it in ctf_ar by default, unless the -u option (triggering dynamic upgrading) is provided. (We retain the option to rewrite them because it is a very useful bulk tester for the transparent upgrade code and for the upgrade-and-write- out-again path.) Orabug: 28150489 Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Tomas Jedlicka <tomas.jedlicka@oracle.com>

view details

Nick Alcock

commit sha af82d4f8df02f02679594bada7aee94630d1a38e

Prepare for v1.0.0.

view details

Nick Alcock

commit sha 40c5ebdd8d2bf29002b600c4fd7c5096df89b65e

ctf_add_type: Add back some conflict workarounds. Commit c4588475f94bff856ca2edfb3be82c1b648c9ad4 started checking that multiple root-visible types with the same name but different definitions did not exist. Unfortunately, dwarf2ctf had a bug which led to two root-visible definitions of int existing, one only four bits wide (mistakenly using a count of bytes, not bits, in one place): in even earlier releases it was only one bit wide. So we had to rip this checking out in release branches almost at once because the ctf_add_type() of the core D int type failed due to conflict with this ridiculous erroneous int type. Eventually we stopped doing so, and nothing went wrong -- but now people are testing new libdtrace-ctf with older kernels built with the buggy dwarf2ctf and things are failing again. So introduce a narrower check which can be reasonably carried along indefinitely: only and specifically allow root-visible conflicts with 1- and 4-bit integer types named 'int'. This means that the DTrace int type will override the buggy definition for most uses and things will keep working, while not losing the vast majority of the protection for the rest of us. Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com> Orabug: 28952429

view details

Nick Alcock

commit sha 375fafbfdd82fe128e6f88a85058982b0c519529

ctf_bufopen: do not mprotect() the heap if reading from ctfsect We try to mprotect() the CTF buffer data we allocated after we finished footling around with it (opening it, upgrading it, whatever) to prevent later overwrites from smashing it accidentally. This is usually safe because we are careful to always allocate CTF data using ctf_data_alloc(), which translates to mmap(). Unfortunately, we failed to cater for the case where the CTF data has been passed in from a CTF section allocated by someone else: in this case, if it doesn't need to be reallocated by the upgrade code, we end up mprotect()ing part of the heap, leading to intermittent, bizarre, situation-dependent crashes depending on what else happens to have been allocated in the same memory page. Do not mprotect() in that case. Reported-by: Simon Xu <simon.xu@oracle.com> # much thanks! Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com> Orabug: 28952429

view details

Nick Alcock

commit sha 5ebdb571a9db9f098877947c1554d76ae9c57b3c

ctf_dump: print out type sizes This makes it possible to tell if types are sized correctly (in particular structs and unions, which did not get their sizes reported anywhere before now). Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>

view details

Nick Alcock

commit sha d8acef93de0659d4e6dd498333a1b9352697cb06

ctf_create: add functions for explicitly-sized struct/union creation This lets callers create structs and unions with sizes explicitly specified by the DWARF, rather than always relying on the required padding being the same as that implied by the alignment of the last member. If you add so many members that the size exceeds this figure, we revert automatically to the previous behavour (so passing in a size of 0 to ctf_add_struct_sized() or ctf_add_union_sized() is equivalent to calling the pre-existing ctf_add_struct()/ctf_add_union() functions.) This is an ABI addition: bump the soname to 1.5.0 and update the symbol versions accordingly. Needed by an upcoming dwarf2ctf fix. Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com> Orabug: 29054972

view details

push time in 2 months

create barnchtjfontaine/node-1

branch : dtrace-on-linux

created branch time in 3 months

fork tjfontaine/node-1

Node.js JavaScript runtime :sparkles::turtle::rocket::sparkles:

https://nodejs.org

fork in 3 months

push eventtjfontaine/smith

Timothy J Fontaine

commit sha d24651f9f52ce00162859e3d01e98d7d311b1d44

case normalize logrus

view details

Timothy J Fontaine

commit sha 910f04a7077cbd61b0253d3e31aaae453b4f4fda

initial support for docker archive format

view details

Timothy J Fontaine

commit sha 7f9bc48bad839c6ea1e6a515eeb9530a139591c7

add documentation for smith.yaml

view details

Timothy J Fontaine

commit sha f5a09f5adc861c70f206a9d282234e9b8c9d311b

store intermediate layers on disk not memory

view details

Timothy J Fontaine

commit sha b1524ed8581b6e5a167367bfb2c9025afa191009

migrate to vgo

view details

push time in 3 months

push eventtjfontaine/smith

Timothy J Fontaine

commit sha 99323d980f19b2488455edab4693307a6f7f5802

initial support for docker archive format

view details

Timothy J Fontaine

commit sha 95eb2ac07362897d77742a4e917a29759081d090

add documentation for smith.yaml

view details

Timothy J Fontaine

commit sha 06da078cd2be8eda65cfd06437512126f9289b6f

store intermediate layers on disk not memory

view details

Timothy J Fontaine

commit sha 7d8d677cc25b906283428b8843377ce1ec0826da

migrate to vgo

view details

push time in 3 months

more