aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2012-03-29Merge branch 'dgud/eldap' into maintDan Gudmundsson
* dgud/eldap: [eldap] Fix parse_port error handling [eldap] Add rudimentary docs [eldap] Add asn.1 compilation options [eldap] Add dereference options in search [eldap] Remove broken functionality [eldap] Add infrastructure [eldap] Initial copy of Tobbe's eldap client OTP-10034
2012-03-29Merge branch 'peppe/common_test/otp-10029' into maintPeter Andersson
* peppe/common_test/otp-10029: Update documentation OTP-9972
2012-03-29Update documentationPeter Andersson
OTP-9972 OTP-9659 OTP-9855 OTP-9880 OTP-9973 OTP-9986 OTP-9992 OTP-9935
2012-03-28Merge branch 'ia/ssl/dialyzer-specs' into maintIngela Anderton Andin
* ia/ssl/dialyzer-specs: Corrected dialyzer specs and exported some dialyzer specs
2012-03-28[xmerl] Fix bug for comments in XSD filesLars Thorsen
2012-03-28[eldap] Fix parse_port error handlingDan Gudmundsson
Dialyzer found that.
2012-03-28[xmerl] Fix error message and documentation bugLars Thorsen
2012-03-27Merge remote branch 'origin/peppe/common_test/otp-10022' into maintPeter Andersson
* origin/peppe/common_test/otp-10022: Fix problem with wrong data_dir sent to hooks if init_per_* is missing
2012-03-27Merge remote branch 'origin/peppe/common_test/otp-10021' into maintPeter Andersson
* origin/peppe/common_test/otp-10021: Increase test margin for user timetraps
2012-03-27Corrected dialyzer specs and exported some dialyzer specsIngela Anderton Andin
2012-03-27[eldap] Add rudimentary docsDan Gudmundsson
2012-03-26Fix bug related with infinitely looping functionsStavros Aronis
Depending of the ordering of the functions during dataflow, a function with an infinite loop might be identified as one that always crashes. This is fixed now, by allowing restoration of the infinitely-looping status.
2012-03-26Report only actual unknown types otherwise no message is sentStavros Aronis
2012-03-26Use wx:wx_object() type now that it is exportedKostis Sagonas
2012-03-26Up versionKostis Sagonas
2012-03-26Add warnings_as_errors optionKostis Sagonas
2012-03-26Fix problem with wrong data_dir sent to hooks if init_per_* is missingPeter Andersson
2012-03-26Merge branch 'ud/fix-return-do_get_disc_copy2' into maintGustav Simonsson
* ud/fix-return-do_get_disc_copy2: Fixes value returned by mnesia_loader:do_get_disc_copy2/4 OTP-10015 OTP-10016
2012-03-26Merge branch 'as/ssl-tls-prf-function' into maintGustav Simonsson
* as/ssl-tls-prf-function: Some protocols (e.g. EAP-PEAP, EAP-TLS, EAP-TTLS) that use TLS as transport layer need to generate additional application specific key material One way to generate such material is to use the TLS PRF and key material from the TLS session itself OTP-10024
2012-03-26runtime_tools: Add dyntrace_SUITEBjörn Gustavsson
2012-03-26Increase test margin for user timetrapsPeter Andersson
2012-03-26Merge remote branch 'origin/peppe/common_test/otp-9988_9871.merged' into maintPeter Andersson
* origin/peppe/common_test/otp-9988_9871.merged: Fix various problems with the user timetrap implementation Fix dialyzer reported errors Implement support for user controlled timetraps OTP-9988
2012-03-26Merge remote branch 'origin/peppe/common_test/otp-9973' into maintPeter Andersson
* origin/peppe/common_test/otp-9973: Update ct_master to use the Common Test CSS file for the logs OTP-9973
2012-03-26Merge remote branch 'origin/peppe/common_test/otp-9633' into maintPeter Andersson
* origin/peppe/common_test/otp-9633: Repair is_release_available/1
2012-03-26Merge remote branch 'origin/peppe/common_test/otp-10011' into maintPeter Andersson
* origin/peppe/common_test/otp-10011: Document the create_priv_dir option for ct:run_test/1
2012-03-26Update include paths in example codeAnders Svensson
Paths changed as a consequence of OTP-9638. Don't use paths under src however, assume an installation.
2012-03-26appup for OTP-9824Anders Svensson
2012-03-26vsn -> 1.1Anders Svensson
2012-03-26Merge branch 'ia/ssh/shutdown-bug' into maintIngela Anderton Andin
* ia/ssh/shutdown-bug: ssh:close/1 will no longer crash if ssl manager already happens to have been terminated.
2012-03-26[eldap] Add asn.1 compilation optionsDan Gudmundsson
2012-03-23Merge branch ↵Lukas Larsson
'lukas/common_test/fix_disable_builtin_hooks_from_spec/OTP-10009' into maint * lukas/common_test/fix_disable_builtin_hooks_from_spec/OTP-10009: Change default of enable builtin hooks to undefined Disable built in hooks for emulator
2012-03-23Merge branch 'peppe/common_test/otp-9871' into ↵Peter Andersson
peppe/common_test/otp-9988_9871.merged Conflicts: lib/common_test/src/ct_framework.erl
2012-03-23Merge branch 'siri/reltool/app-level-lib-dir/OTP-9977' into maintSiri Hansen
* siri/reltool/app-level-lib-dir/OTP-9977: [reltool] Allow lib_dir on app level to use relative path [reltool] Add configuration parameter lib_dir on application level
2012-03-23Merge branch 'jc/omit-undefined-start_phases-3' into maintSiri Hansen
* jc/omit-undefined-start_phases-3: Avoid undefined start_phases entry in .script Avoid creating an undefined start_phases entry when generating a release OTP-10003
2012-03-23Merge branch 'siri/sasl/correct-app-name-in-error/OTP-9888' into maintSiri Hansen
* siri/sasl/correct-app-name-in-error/OTP-9888: Fix error message if stdlib has faulty start type in .rel file
2012-03-23Merge branch 'siri/sasl/doc-regexp-in-appup/OTP-10001' into maintSiri Hansen
* siri/sasl/doc-regexp-in-appup/OTP-10001: Add documentation of regular expressions for version numbers in appup
2012-03-23Merge branch 'siri/kernel/doc-mod-default-in-app/OTP-10002' into maintSiri Hansen
* siri/kernel/doc-mod-default-in-app/OTP-10002: Document correct default value for 'mod' parameter in .app
2012-03-22Fix various problems with the user timetrap implementationPeter Andersson
2012-03-22Merge branch 'pan/dtrace' into maintPatrik Nyblom
* pan/dtrace: (22 commits) Use distinct function-entry probes for local and global calls Correct calculation of stack depth in call/return probes Add probes for all kind of calls Don't try to "clean up" generated fun names erl_process.c: Fix probe for process exit Remove code causing dialyzer warning from prim_file Add documentation for dyntrace and system_info changes Update slogan and add system_info for dynamic trace Update README's for dtrace and systemtap Rename dyntrace BIFs to more suiting names If VM probes are not enabled, short-circuit calls to probe BIFs beam_makeops: Add a simple preprocessor Ifdef all dynamic trace code Move dtrace erlang code and NIF into runtime_tools Correct some errors in the user tag spreading Change to more specific configure options for dtrace Add user tag spreading functionality to VM and use in file Update dtrace for changes in R15 Add DTrace support for OS X, Solaris, and Linux (via SystemTap), 4/4 Add DTrace support for OS X, Solaris, and Linux (via SystemTap), 3/4 ... OTP-10017
2012-03-22Bump asn1 version numberGustav Simonsson
2012-03-22Use distinct function-entry probes for local and global callsBjörn Gustavsson
It seems useful to be able to filter out (for example) just the global calls.
2012-03-22Add documentation for dyntrace and system_info changesPatrik Nyblom
2012-03-22Rename dyntrace BIFs to more suiting namesPatrik Nyblom
2012-03-22Move dtrace erlang code and NIF into runtime_toolsPatrik Nyblom
Also make dyntrace NIF's load in on_load instead of init/0
2012-03-22Correct some errors in the user tag spreadingPatrik Nyblom
2012-03-22Add user tag spreading functionality to VM and use in filePatrik Nyblom
User tags in a dynamic trace enabled VM are spread throughout the system in the same way as seq_trace tokens. This is used by the file module and various other modules to get hold of the tag from the user process without changing the protocol.
2012-03-22Update dtrace for changes in R15Björn-Egil Dahlberg
2012-03-22Add DTrace support for OS X, Solaris, and Linux (via SystemTap), 4/4Scott Lystig Fritchie
Add probes to (mostly) the efile_drv.c driver and other file I/O-related source files.
2012-03-22Add DTrace support for OS X, Solaris, and Linux (via SystemTap), 2/4Scott Lystig Fritchie
Add D scripts in the `lib/dtrace/examples` directory. Add SystemTap README and sample scripts, contributed by Andreas Schultz <[email protected]>.
2012-03-22Add DTrace support for OS X, Solaris, and Linux (via SystemTap), 1/4Scott Lystig Fritchie
Since it's been quite a while since I've written C code, *and* I haven't done any significant hacking on the VM itself in years, it's quite likely that I haven't done things in 100% proper style. Or my co-collaborators Dustin Sallings (CouchBase) or Michal Ptaszek (Erlang Solutions). My intent for this patch is to start discussion and review of DTrace support for consideration for the R15 release. For additional background on the motivation for this work, please see the slides for the presentation at the Erlang User Conference 2011 in Stockholm: https://www.erlang-factory.com/upload/presentations/462/euc2011-draft2.pdf Changes relative to dtrace-review2 branch: * Fix errors in OTP test suite 'kernel' file_SUITE * Fix errors in OTP test suite 'kernel' prim_file_SUITE * Fix bad pointer bug in efile_drv.c flush_write() * Move the DTrace material from the top of `README.md` into a new file, `README.dtrace.md` Changes since last push to GitHub (relative to commit 5828a4fb28, which was the former `dtrace-review1` branch): * Rebased onto 14 Nov 2011's "master" branch * Recent changes to the async task queuing mechanism means that the async worker queue length is not available. A bogus value of -1 is hard-coded until there's a good way to peek into the new queue structure and find the queue length. * Small fixes based on review comments by Mikael Pettersson, Andrew Thompson, and Andreas Schultz. Add autoconf support: use "./configure --enable-dtrace" on all supported platforms: * OS X Snow Leopard or later * Solaris 10 or OpenSolaris * Linux, via SystemTap's DTrace compatibility packages * FreeBSD 9.0RC1. FreeBSD 8 and earlier do not have support for USDT, DTrace's User-land Statically Defined Tracing. See the file `erts/emulator/beam/erlang_dtrace.d` for the definition of all DTrace probes in the virtual machine so far. Example D scripts can be found in `lib/dtrace/examples`. Note that if you see the error message `{name of probe} does not match any probes`, then there is no Erlang VM process + DTrace probes running. To fix, start a DTrace-enabled VM or remove `-q` from the `dtrace` command line. The `lib/dtrace` directory contains a small code-only OTP application that contains code that allows Erlang code to trigger a DTrace probe. Dynamic creation & deletion of DTrace probes is not currently supported, so the `dtrace:p()` function is hacked to allow a variable number of arguments (up to four integers and up to four strings) to be used. See the comments at the top of `lib/dtrace/src/dtrace.c` for more detail. One feature that may be controversial is the notion I've introduced of a special process dictionary key that can be used by Erlang code to tag I/O operations for an application-specific purpose. Right now, that tag's name is `dtrace_utag`. The dictionary keys used by `sys` and other modules start with a dollar sign. Perhaps there is some convention (but not a dollar sign?) that this tag should use? The purpose of the process dictionary key is to allow the tag to be included in trace messages, e.g. for file I/O, without changing the API of the `file.erl` module's functions. For example, here's a use of the tag when calling the `file:rename/2` function: (bar@sbb2)1> put(dtrace_utag, "GGOOOAAALL!!!!!"). undefined (bar@sbb2)2> dtrace:init(). ok %% Now start both the `user-probe.d` and `efile_drv.d` D scripts %% found in the `lib/dtrace/examples` directory. (bar@sbb2)3> dtrace:p(7, 8, 9, "one", "four"). true %% The output from the `user-probe.d` script: <0.40.0> GGOOOAAALL!!!!! 7 8 9 0 'one' 'four' '' '' (bar@sbb2)4> file:rename("old-name", "new-name"). {error,enoent} %% The output from the `efile_drv.d` script: async I/O pool port #Port<0.59> queue len 1 async I/O pool port #Port<0.59> queue len 0 efile_drv enter tag={1,110} user tag GGOOOAAALL!!!!! | RENAME (12) | args: old-name new-name , 0 0 (port #Port<0.59>) async I/O worker tag={1,110} | RENAME (12) | efile_drv-int_entry async I/O worker tag={1,110} | RENAME (12) | efile_drv-int_return efile_drv return tag={1,110} user tag GGOOOAAALL!!!!! | RENAME (12) | errno 2 I'm not exactly happy with this choice of tagging, namely using `put(dtrace_utag, Tag::list())`. But this is an experiment, so we'll see how it goes. I can't imagine changing the API for all file.erl functions in order pass the tag explicitly. Some modules have some extensive (ab)use of the C preprocessor to reduce the amount of #ifdefs that clutter the code. In several places, I have not #ifdef'ed automatic variables because of clutter. For the same reason, there are a handful of cases where I added DTrace-related members to a struct definition without an #ifdef. I feel that the result is easier to read than earlier drafts where I did use many more `https://github.com/slfritchie/otp/tree/dtrace-experiment+michal2` if you're curious.) I expect there may be some debate about whether the bloat of the affected structs is worthwhile. I erred on adding stuff to structs, especially in the efile_drv.c driver, not having a full grasp on what was thread-safe and what was not ... so I erred on the side of caution. The efile_drv.c has a work-around for a crazy GCC optimization bug. Thank goodness for Google, I dunno how I would've found a work-around for this silly thing. Many thanks to Trond Norbye for writing clearly about the problem in a membase Git repo commit message. /* * A note on probe naming: if "__" appears in a provider probe * definition, then two things happen during compilation: * * 1. The "__" will turn into a hypen, "-", for the probe name. * 2. The "__" will turn into a single underscore, "_", for the * macro names and function definitions that the compiler and * C developers will see. * * We'll try to use the following naming convention. We're a bit * limited because, as a USDT probe, we can only specify the 4th part * of the probe name, e.g. erlang*:::mumble. The 2nd part of the * probe name is always going to be "beam" or "beam.smp", and the 3rd * part of the probe name will always be the name of the function * that's calling the probe. * * So, all probes will be have names defined in this file using the * convention category__name or category__sub_category__name. This * will translate to probe names of category-name or * category-sub_category-name. * * Each of "category", "sub_category", and "name" may have underscores * but may not have hyphens. */ Add tentative support for sequential tracing sending, queueing, and receiving a message. I don't believe I've fully covered all the major places where it would be useful to have the sequential trace token info in a probe -- guidance from the OTP team would be helpful, if there's time to do that kind of review. Add global variable `erts_this_node_sysname`.