diff --git a/api/README b/api/README index 1e52f7a843..050ebd99ab 100644 --- a/api/README +++ b/api/README @@ -21,3 +21,6 @@ warning output from the go api tool. Each file should be named nnnnn.txt, after the issue number for the accepted proposal. (The #nnnnn suffix must also appear at the end of each line in the file; that will be preserved when next/*.txt is concatenated into go1.XX.txt.) + +When you add a file to the api/next directory, you must add at least one file +under doc/next. See doc/README.md for details. diff --git a/api/next/42888.txt b/api/next/42888.txt new file mode 100644 index 0000000000..f9b8e1e475 --- /dev/null +++ b/api/next/42888.txt @@ -0,0 +1 @@ +pkg runtime/debug, func SetCrashOutput(*os.File) error #42888 diff --git a/api/next/61696.txt b/api/next/61696.txt new file mode 100644 index 0000000000..8adaf3d80e --- /dev/null +++ b/api/next/61696.txt @@ -0,0 +1 @@ +pkg sync, method (*Map) Clear() #61696 diff --git a/doc/go1.22.html b/doc/go1.22.html deleted file mode 100644 index 3b7ee62b27..0000000000 --- a/doc/go1.22.html +++ /dev/null @@ -1,1013 +0,0 @@ - - - - - - -

DRAFT RELEASE NOTES — Introduction to Go 1.22

- -

- - Go 1.22 is not yet released. These are work-in-progress - release notes. Go 1.22 is expected to be released in February 2024. - -

- -

Changes to the language

- -

- -Go 1.22 makes two changes to "for" loops. -

- - -

-

- Go 1.22 includes a preview of a language change we are considering - for a future version of Go: range-over-function iterators. - Building with GOEXPERIMENT=rangefunc enables this feature. -

- -

Tools

- -

Go command

- - -

- Commands in workspaces can now - use a vendor directory containing the dependencies of the - workspace. The directory is created by - go work vendor, - and used by build commands when the -mod flag is set to - vendor, which is the default when a workspace vendor - directory is present. -

-

- Note that the vendor directory's contents for a workspace are different - from those of a single module: if the directory at the root of a workspace also - contains one of the modules in the workspace, its vendor directory - can contain the dependencies of either the workspace or of the module, - but not both. -

- - -

- go get is no longer supported outside of a module in the - legacy GOPATH mode (that is, with GO111MODULE=off). - Other build commands, such as go build and - go test, will continue to work indefinitely - for legacy GOPATH programs. -

- - -

- go mod init no longer attempts to import - module requirements from configuration files for other vendoring tools - (such as Gopkg.lock). -

- - -

-go test -cover now prints coverage summaries for covered -packages that do not have their own test files. Prior to Go 1.22 a -go test -cover run for such a package would report -

- -

- ? mymod/mypack [no test files] -

- -

- and now with Go 1.22, functions in the package are treated as uncovered: -

- -

- mymod/mypack coverage: 0.0% of statements -

- -

Trace

- - -

- The trace tool's web UI has been gently refreshed as part of the - work to support the new tracer, resolving several issues and improving the - readability of various sub-pages. - The web UI now supports exploring traces in a thread-oriented view. - The trace viewer also now displays the full duration of all system calls. -
- These improvements only apply for viewing traces produced by programs built with - Go 1.22 or newer. - A future release will bring some of these improvements to traces produced by older - version of Go. -

- -

Vet

- -

References to loop variables

- -

- The behavior of the vet tool has changed to match - the new semantics (see above) of loop variables in Go 1.22. - When analyzing a file that requires Go 1.22 or newer - (due to its go.mod file or a per-file build constraint), - vetcode> no longer reports references to - loop variables from within a function literal that - might outlive the iteration of the loop. - In Go 1.22, loop variables are created anew for each iteration, - so such references are no longer at risk of using a variable - after it has been updated by the loop. -

- -

New warnings for missing values after append

- -

- The vet tool now reports calls to - append that pass - no values to be appended to the slice, such as slice = append(slice). - Such a statement has no effect, and experience has shown that is nearly always a mistake. -

- -

New warnings for deferring time.Since

- -

- The vet tool now reports a non-deferred call to - time.Since(t) within a defer statement. - This is equivalent to calling time.Now().Sub(t) before the defer statement, - not when the deferred function is called. In nearly all cases, the correct code - requires deferring the time.Since call. For example: -

- -
-t := time.Now()
-defer log.Println(time.Since(t)) // non-deferred call to time.Since
-tmp := time.Since(t); defer log.Println(tmp) // equivalent to the previous defer
-
-defer func() {
-  log.Println(time.Since(t)) // a correctly deferred call to time.Since
-}()
-
- -

New warnings for mismatched key-value pairs in log/slog calls

- -

- The vet tool now reports invalid arguments in calls to functions and methods - in the structured logging package, log/slog, - that accept alternating key/value pairs. - It reports calls where an argument in a key position is neither a - string nor a slog.Attr, and where a final key is missing its value. -

- -

Runtime

- -

- The runtime now keeps type-based garbage collection metadata nearer to each - heap object, improving the CPU performance (latency or throughput) of Go programs - by 1–3%. - This change also reduces the memory overhead of the majority Go programs by - approximately 1% by deduplicating redundant metadata. - Some programs may see a smaller improvement because this change adjusts the size - class boundaries of the memory allocator, so some objects may be moved up a size - class. -

-

- A consequence of this change is that some objects' addresses that were previously - always aligned to a 16 byte (or higher) boundary will now only be aligned to an 8 - byte boundary. - Some programs that use assembly instructions that require memory addresses to be - more than 8-byte aligned and rely on the memory allocator's previous alignment behavior - may break, but we expect such programs to be rare. - Such programs may be built with GOEXPERIMENT=noallocheaders to revert - to the old metadata layout and restore the previous alignment behavior, but package - owners should update their assembly code to avoid the alignment assumption, as this - workaround will be removed in a future release. -

- -

- On the windows/amd64 port, programs linking or loading Go libraries built with - -buildmode=c-archive or -buildmode=c-shared can now use - the SetUnhandledExceptionFilter Win32 function to catch exceptions not handled - by the Go runtime. Note that this was already supported on the windows/386 port. -

- -

Compiler

- -

- Profile-guided Optimization (PGO) builds - can now devirtualize a higher proportion of calls than previously possible. - Most programs from a representative set of Go programs now see between 2 and - 14% improvement from enabling PGO. -

- -

- The compiler now interleaves devirtualization and inlining, so interface - method calls are better optimized. -

- -

- Go 1.22 also includes a preview of an enhanced implementation of the compiler's inlining phase that uses heuristics to boost inlinability at call sites deemed "important" (for example, in loops) and discourage inlining at call sites deemed "unimportant" (for example, on panic paths). - Building with GOEXPERIMENT=newinliner enables the new call-site - heuristics; see issue #61502 for - more info and to provide feedback. -

- -

Linker

- -

- The linker's -s and -w flags are now behave more - consistently across all platforms. - The -w flag suppresses DWARF debug information generation. - The -s flag suppresses symbol table generation. - The -s flag also implies the -w flag, which can be - negated with -w=0. - That is, -s -w=0 will generate a binary with DWARF - debug information generation but without the symbol table. -

- -

- On ELF platforms, the -B linker flag now accepts a special form: - with -B gobuildid, the linker will generate a GNU - build ID (the ELF NT_GNU_BUILD_ID note) derived from the Go - build ID. -

- -

- On Windows, when building with -linkmode=internal, the linker now - preserves SEH information from C object files by copying the .pdata - and .xdata sections into the final binary. - This helps with debugging and profiling binaries using native tools, such as WinDbg. - Note that until now, C functions' SEH exception handlers were not being honored, - so this change may cause some programs to behave differently. - -linkmode=external is not affected by this change, as external linkers - already preserve SEH information. -

- -

Bootstrap

- -

- As mentioned in the Go 1.20 release notes, Go 1.22 now requires - the final point release of Go 1.20 or later for bootstrap. - We expect that Go 1.24 will require the final point release of Go 1.22 or later for bootstrap. -

- -

Core library

- -

New math/rand/v2 package

- - - - - - - - - - - -

- Go 1.22 includes the first “v2” package in the standard library, - math/rand/v2. - The changes compared to math/rand are - detailed in proposal #61716. The most important changes are: -

- - - -

-We plan to include an API migration tool in a future release, likely Go 1.23. -

- -

Enhanced routing patterns

- -

- HTTP routing in the standard library is now more expressive. - The patterns used by net/http.ServeMux have been enhanced to accept methods and wildcards. -

- -

- Registering a handler with a method, like "POST /items/create", restricts - invocations of the handler to requests with the given method. A pattern with a method takes precedence over a matching pattern without one. - As a special case, registering a handler with "GET" also registers it with "HEAD". -

- -

- Wildcards in patterns, like /items/{id}, match segments of the URL path. - The actual segment value may be accessed by calling the Request.PathValue method. - A wildcard ending in "...", like /files/{path...}, must occur at the end of a pattern and matches all the remaining segments. -

- -

- A pattern that ends in "/" matches all paths that have it as a prefix, as always. - To match the exact pattern including the trailing slash, end it with {$}, - as in /exact/match/{$}. -

- -

- If two patterns overlap in the requests that they match, then the more specific pattern takes precedence. - If neither is more specific, the patterns conflict. - This rule generalizes the original precedence rules and maintains the property that the order in which - patterns are registered does not matter. -

- -

- This change breaks backwards compatibility in small ways, some obvious—patterns with "{" and "}" behave differently— - and some less so—treatment of escaped paths has been improved. - The change is controlled by a GODEBUG field named httpmuxgo121. - Set httpmuxgo121=1 to restore the old behavior. -

- -

Minor changes to the library

- -

- As always, there are various minor changes and updates to the library, - made with the Go 1 promise of compatibility - in mind. - There are also various performance improvements, not enumerated here. -

- -
archive/tar
-
-

- The new method Writer.AddFS adds all of the files from an fs.FS to the archive. -

-
-
- -
archive/zip
-
-

- The new method Writer.AddFS adds all of the files from an fs.FS to the archive. -

-
-
- -
bufio
-
-

- When a SplitFunc returns ErrFinalToken with a nil token, Scanner will now stop immediately. - Previously, it would report a final empty token before stopping, which was usually not desired. - Callers that do want to report a final empty token can do so by returning []byte{} rather than nil. -

-
-
- -
cmp
-
-

- The new function Or returns the first in a sequence of values that is not the zero value. -

-
-
- -
crypto/tls
-
-

- ConnectionState.ExportKeyingMaterial will now - return an error unless TLS 1.3 is in use, or the extended_master_secret extension is supported by both the server and - client. crypto/tls has supported this extension since Go 1.20. This can be disabled with the - tlsunsafeekm=1 GODEBUG setting. -

- -

- By default, the minimum version offered by crypto/tls servers is now TLS 1.2 if not specified with - config.MinimumVersion, matching the behavior of crypto/tls - clients. This change can be reverted with the tls10server=1 GODEBUG setting. -

- -

- By default, cipher suites without ECDHE support are no longer offered by either clients or servers during pre-TLS 1.3 - handshakes. This change can be reverted with the tlsrsakex=1 GODEBUG setting. -

-
-
- -
crypto/x509
-
-

- The new CertPool.AddCertWithConstraint - method can be used to add customized constraints to root certificates to be applied during chain building. -

- -

- On Android, root certificates will now be loaded from /data/misc/keychain/certs-added as well as /system/etc/security/cacerts. -

- -

- A new type, OID, supports ASN.1 Object Identifiers with individual - components larger than 31 bits. A new field which uses this type, Policies, - is added to the Certificate struct, and is now populated during parsing. Any OIDs which cannot be represented - using a asn1.ObjectIdentifier will appear in Policies, - but not in the old PolicyIdentifiers field. - - When calling CreateCertificate, the Policies field is ignored, and - policies are taken from the PolicyIdentifiers field. Using the x509usepolicies=1 GODEBUG setting inverts this, - populating certificate policies from the Policies field, and ignoring the PolicyIdentifiers field. We may change the - default value of x509usepolicies in Go 1.23, making Policies the default field for marshaling. -

-
-
- -
database/sql
-
-

- The new Null[T] type - provide a way to scan nullable columns for any column types. -

-
-
- -
debug/elf
-
-

- Constant R_MIPS_PC32 is defined for use with MIPS64 systems. -

-
-
-

- Additional R_LARCH_* constants are defined for use with LoongArch systems. -

-
-
- -
encoding
-
-

- The new methods AppendEncode and AppendDecode added to - each of the Encoding types in the packages - encoding/base32, - encoding/base64, and - encoding/hex - simplify encoding and decoding from and to byte slices by taking care of byte slice buffer management. -

- -

- The methods - base32.Encoding.WithPadding and - base64.Encoding.WithPadding - now panic if the padding argument is a negative value other than - NoPadding. -

-
-
- -
encoding/json
-
-

- Marshaling and encoding functionality now escapes - '\b' and '\f' characters as - \b and \f instead of - \u0008 and \u000c. -

-
-
- -
go/ast
-
-

- The following declarations related to - syntactic identifier resolution - are now deprecated: - Ident.Obj, - Object, - Scope, - File.Scope, - File.Unresolved, - Importer, - Package, - NewPackage. - - In general, identifiers cannot be accurately resolved without type information. - Consider, for example, the identifier K - in T{K: ""}: it could be the name of a local variable - if T is a map type, or the name of a field if T is a struct type. - - New programs should use the go/types - package to resolve identifiers; see - Object, - Info.Uses, and - Info.Defs for details. -

- -

- The new ast.Unparen - function removes any enclosing - parentheses from - an expression. -

-
-
- -
go/types
-
-

- The new Alias type represents type aliases. - Previously, type aliases were not represented explicitly, so a reference to a type alias was equivalent - to spelling out the aliased type, and the name of the alias was lost. - The new representation retains the intermediate Alias. - This enables improved error reporting (the name of a type alias can be reported), and allows for better handling - of cyclic type declarations involving type aliases. - In a future release, Alias types will also carry type parameter information. - The new function Unalias returns the actual type denoted by an - Alias type (or any other Type for that matter). -

-

- Because Alias types may break existing type switches that do not know to check for them, - this functionality is controlled by a GODEBUG field named gotypesalias. - With gotypesalias=0, everything behaves as before, and Alias types are never created. - With gotypesalias=1, Alias types are created and clients must expect them. - The default is gotypesalias=0. - In a future release, the default will be changed to gotypesalias=1. - Clients of go/types are urged to adjust their code as soon as possible - to work with gotypesalias=1 to eliminate problems early. -

- -

- The Info struct now exports the - FileVersions map - which provides per-file Go version information. -

- -

- The new helper method PkgNameOf returns the local package name - for the given import declaration. -

- -

- The implementation of SizesFor has been adjusted to compute - the same type sizes as the compiler when the compiler argument for SizesFor is "gc". - The default Sizes implementation used by the type checker is now - types.SizesFor("gc", "amd64"). -

- -

- The start position (Pos) - of the lexical environment block (Scope) - that represents a function body has changed: - it used to start at the opening curly brace of the function body, - but now starts at the function's func token. -

-
-
- -
go/version
-
-

- The new go/version package implements functions - for validating and comparing Go version strings. -

-
-
- -
html/template
-
-

- Javascript template literals may now contain Go template actions, and parsing a template containing one will - no longer return ErrJSTemplate. Similarly the GODEBUG setting jstmpllitinterp no - longer has any effect. -

-
-
- -
io
-
-

- The new SectionReader.Outer method returns the ReaderAt, offset, and size passed to NewSectionReader. -

-
-
- -
log/slog
-
-

- The new SetLogLoggerLevel function - controls the level for the bridge between the `slog` and `log` packages. It sets the minimum level - for calls to the top-level `slog` logging functions, and it sets the level for calls to `log.Logger` - that go through `slog`. -

-
-
- -
math/big
-
-

- The new method Rat.FloatPrec computes the number of fractional decimal digits - required to represent a rational number accurately as a floating-point number, and whether accurate decimal representation - is possible in the first place. -

-
-
- -
net
-
-

- When io.Copy copies - from a TCPConn to a UnixConn, - it will now use Linux's splice(2) system call if possible, - using the new method TCPConn.WriteTo. -

- -

- The Go DNS Resolver, used when building with "-tags=netgo", - now searches for a matching name in the Windows hosts file, - located at %SystemRoot%\System32\drivers\etc\hosts, - before making a DNS query. -

-
-
- -
net/http
-
-

- The new functions - ServeFileFS, - FileServerFS, and - NewFileTransportFS - are versions of the existing - ServeFile, FileServer, and NewFileTransport, - operating on an fs.FS. -

- -

- The HTTP server and client now reject requests and responses containing - an invalid empty Content-Length header. - The previous behavior may be restored by setting - GODEBUG field httplaxcontentlength=1. -

- -

- The new method - Request.PathValue - returns path wildcard values from a request - and the new method - Request.SetPathValue - sets path wildcard values on a request. -

-
-
- -
net/http/cgi
-
-

- When executing a CGI process, the PATH_INFO variable is now - always set to the empty string or a value starting with a / character, - as required by RFC 3875. It was previously possible for some combinations of - Handler.Root - and request URL to violate this requirement. -

-
-
- -
net/netip
-
-

- The new AddrPort.Compare - method compares two AddrPorts. -

-
-
- -
os
-
-

- On Windows, the Stat function now follows all reparse points - that link to another named entity in the system. - It was previously only following IO_REPARSE_TAG_SYMLINK and - IO_REPARSE_TAG_MOUNT_POINT reparse points. -

- -

- On Windows, passing O_SYNC to OpenFile now causes write operations to go directly to disk, equivalent to O_SYNC on Unix platforms. -

- -

- On Windows, the ReadDir, - File.ReadDir, - File.Readdir, - and File.Readdirnames functions - now read directory entries in batches to reduce the number of system calls, - improving performance up to 30%. -

- -

- When io.Copy copies - from a File to a net.UnixConn, - it will now use Linux's sendfile(2) system call if possible, - using the new method File.WriteTo. -

-
-
- -
os/exec
-
-

- On Windows, LookPath now - ignores empty entries in %PATH%, and returns - ErrNotFound (instead of ErrNotExist) if - no executable file extension is found to resolve an otherwise-unambiguous - name. -

- -

- On Windows, Command and - Cmd.Start no - longer call LookPath if the path to the executable is already - absolute and has an executable file extension. In addition, - Cmd.Start no longer writes the resolved extension back to - the Path field, - so it is now safe to call the String method concurrently - with a call to Start. -

-
-
- -
reflect
-
-

- The Value.IsZero - method will now return true for a floating-point or complex - negative zero, and will return true for a struct value if a - blank field (a field named _) somehow has a - non-zero value. - These changes make IsZero consistent with comparing - a value to zero using the language == operator. -

- -

- The PtrTo function is deprecated, - in favor of PointerTo. -

- -

- The new function TypeFor - returns the Type that represents - the type argument T. - Previously, to get the reflect.Type value for a type, one had to use - reflect.TypeOf((*T)(nil)).Elem(). - This may now be written as reflect.TypeFor[T](). -

-
-
- -
runtime/metrics
-
-

- Four new histogram metrics - /sched/pauses/stopping/gc:seconds, - /sched/pauses/stopping/other:seconds, - /sched/pauses/total/gc:seconds, and - /sched/pauses/total/other:seconds provide additional details - about stop-the-world pauses. - The "stopping" metrics report the time taken from deciding to stop the - world until all goroutines are stopped. - The "total" metrics report the time taken from deciding to stop the world - until it is started again. -

- -

- The /gc/pauses:seconds metric is deprecated, as it is - equivalent to the new /sched/pauses/total/gc:seconds metric. -

- -

- /sync/mutex/wait/total:seconds now includes contention on - runtime-internal locks in addition to - sync.Mutex and - sync.RWMutex. -

-
-
- -
runtime/pprof
-
-

- Mutex profiles now scale contention by the number of goroutines blocked on the mutex. - This provides a more accurate representation of the degree to which a mutex is a bottleneck in - a Go program. - For instance, if 100 goroutines are blocked on a mutex for 10 milliseconds, a mutex profile will - now record 1 second of delay instead of 10 milliseconds of delay. -

- -

- Mutex profiles also now include contention on runtime-internal locks in addition to - sync.Mutex and - sync.RWMutex. - Contention on runtime-internal locks is always reported at runtime._LostContendedRuntimeLock. - A future release will add complete stack traces in these cases. -

- -

- CPU profiles on Darwin platforms now contain the process's memory map, enabling the disassembly - view in the pprof tool. -

-
-
- -
runtime/trace
-
-

- The execution tracer has been completely overhauled in this release, resolving several long-standing - issues and paving the way for new use-cases for execution traces. -

-

- Execution traces now use the operating system's clock on most platforms (Windows excluded) so - it is possible to correlate them with traces produced by lower-level components. - Execution traces no longer depend on the reliability of the platform's clock to produce a correct trace. - Execution traces are now partitioned regularly on-the-fly and as a result may be processed in a - streamable way. - Execution traces now contain complete durations for all system calls. - Execution traces now contain information about the operating system threads that goroutines executed on. - The latency impact of starting and stopping execution traces has been dramatically reduced. - Execution traces may now begin or end during the garbage collection mark phase. -

-

- To allow Go developers to take advantage of these improvements, an experimental - trace reading package is available at golang.org/x/exp/trace. - Note that this package only works on traces produced by programs built with Go 1.22 at the moment. - Please try out the package and provide feedback on - the corresponding proposal issue. -

-

- If you experience any issues with the new execution tracer implementation, you may switch back to the - old implementation by building your Go program with GOEXPERIMENT=noexectracer2. - If you do, please file an issue, otherwise this option will be removed in a future release. -

-
-
- -
slices
-
-

- The new function Concat concatenates multiple slices. -

- -

- Functions that shrink the size of a slice (Delete, DeleteFunc, Compact, CompactFunc, and Replace) now zero the elements between the new length and the old length. -

- -

- Insert now always panics if the argument i is out of range. Previously it did not panic in this situation if there were no elements to be inserted. -

-
-
- -
syscall
-
-

- The syscall package has been frozen since Go 1.4 and was marked as deprecated in Go 1.11, causing many editors to warn about any use of the package. - However, some non-deprecated functionality requires use of the syscall package, such as the os/exec.Cmd.SysProcAttr field. - To avoid unnecessary complaints on such code, the syscall package is no longer marked as deprecated. - The package remains frozen to most new functionality, and new code remains encouraged to use golang.org/x/sys/unix or golang.org/x/sys/windows where possible. -

- -

- On Linux, the new SysProcAttr.PidFD field allows obtaining a PID FD when starting a child process via StartProcess or os/exec. -

- -

- On Windows, passing O_SYNC to Open now causes write operations to go directly to disk, equivalent to O_SYNC on Unix platforms. -

-
-
- -
testing/slogtest
-
-

- The new Run function uses sub-tests to run test cases, - providing finer-grained control. -

-
-
- -

Ports

- -

Darwin

-

- On macOS on 64-bit x86 architecture (the darwin/amd64 port), - the Go toolchain now generates position-independent executables (PIE) by default. - Non-PIE binaries can be generated by specifying the -buildmode=exe - build flag. - On 64-bit ARM-based macOS (the darwin/arm64 port), - the Go toolchain already generates PIE by default. -

-

- Go 1.22 is the last release that will run on macOS 10.15 Catalina. Go 1.23 will require macOS 11 Big Sur or later. -

- -

Arm

-

- The GOARM environment variable now allows you to select whether to use software or hardware floating point. - Previously, valid GOARM values were 5, 6, or 7. Now those same values can - be optionally followed by ,softfloat or ,hardfloat to select the floating-point implementation. -

-

- This new option defaults to softfloat for version 5 and hardfloat for versions - 6 and 7. -

- -

Loong64

-

- The loong64 port now supports passing function arguments and results using registers. -

-

- The linux/loong64 port now supports the address sanitizer, memory sanitizer, new-style linker relocations, and the plugin build mode. -

- -

OpenBSD

-

- Go 1.22 adds an experimental port to OpenBSD on big-endian 64-bit PowerPC - (openbsd/ppc64). -

diff --git a/doc/go_spec.html b/doc/go_spec.html index bd974b3c48..7b9dd3862a 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ @@ -6661,7 +6661,7 @@ array or slice a [n]E, *[n]E, or []E index i int a[i] E string s string type index i int see below rune map m map[K]V key k K m[k] V channel c chan E, <-chan E element e E -integer n integer type I value i I +integer n integer type value i see below
    @@ -6703,26 +6703,33 @@ is nil, the range expression blocks forever.
  1. For an integer value n, the iteration values 0 through n-1 -are produced in increasing order, with the same type as n. +are produced in increasing order. If n <= 0, the loop does not run any iterations.
-

-The iteration values are assigned to the respective -iteration variables as in an assignment statement. -

-

The iteration variables may be declared by the "range" clause using a form of short variable declaration (:=). -In this case their types are set to the types of the respective iteration values -and their scope is the block of the "for" statement; -each iteration has its own separate variables [Go 1.22] +In this case their scope is the block of the "for" statement +and each iteration has its own new variables [Go 1.22] (see also "for" statements with a ForClause). -If the iteration variables are declared outside the “for” statement, -after execution their values will be those of the last iteration. +If the range expression is a (possibly untyped) integer expression n, +the variable has the same type as if it was +declared with initialization +expression n. +Otherwise, the variables have the types of their respective iteration values. +

+ +

+If the iteration variables are not explicitly declared by the "range" clause, +they must be preexisting. +In this case, the iteration values are assigned to the respective variables +as in an assignment statement. +If the range expression is a (possibly untyped) integer expression n, +n too must be assignable to the iteration variable; +if there is no iteration variable, n must be assignable to int.

@@ -6765,6 +6772,11 @@ for i := range 10 {
 	// type of i is int (default type for untyped constant 10)
 	f(i)
 }
+
+// invalid: 256 cannot be assigned to uint8
+var u uint8
+for u = range 256 {
+}
 
diff --git a/doc/next/6-stdlib/99-minor/runtime/debug/42888.md b/doc/next/6-stdlib/99-minor/runtime/debug/42888.md new file mode 100644 index 0000000000..d75c86900f --- /dev/null +++ b/doc/next/6-stdlib/99-minor/runtime/debug/42888.md @@ -0,0 +1,8 @@ + +The [`debug.SetCrashOutput`](/runtime#SetCrashOutput) function allows +the user to specify an alternate file to which the runtime should +write its fatal crash report +([#42888](https://github.com/golang/go/issues/42888)). +It may be used to construct an automated reporting mechanism for all +unexpected crashes, not just those in goroutines that explicitly use +`recover`. diff --git a/doc/next/6-stdlib/99-minor/sync/61696.md b/doc/next/6-stdlib/99-minor/sync/61696.md new file mode 100644 index 0000000000..173076ca5e --- /dev/null +++ b/doc/next/6-stdlib/99-minor/sync/61696.md @@ -0,0 +1,4 @@ +The [`(*sync.Map) Clear()`](//sync#Map.Clear) method deletes +all the entries, resulting in an empty map +([#61696](https://github.com/golang/go/issues/61696)). +It is analogous to `clear`. \ No newline at end of file diff --git a/doc/next/7-ports.md b/doc/next/7-ports.md index 8bea3f8fbc..796cc4bf1b 100644 --- a/doc/next/7-ports.md +++ b/doc/next/7-ports.md @@ -1,2 +1,8 @@ ## Ports {#ports} +### Darwin {#darwin} + + +As [announced](go1.22#darwin) in the Go 1.22 release notes, +Go 1.23 requires macOS 11 Big Sur or later; +support for previous versions has been discontinued. diff --git a/lib/time/update.bash b/lib/time/update.bash index e72850079f..bed82b4f40 100755 --- a/lib/time/update.bash +++ b/lib/time/update.bash @@ -24,8 +24,8 @@ # in the CL match the update.bash in the CL. # Versions to use. -CODE=2023d -DATA=2023d +CODE=2024a +DATA=2024a set -e diff --git a/lib/time/zoneinfo.zip b/lib/time/zoneinfo.zip index 7cf689f830..bb38801b7a 100644 Binary files a/lib/time/zoneinfo.zip and b/lib/time/zoneinfo.zip differ diff --git a/src/archive/zip/writer.go b/src/archive/zip/writer.go index e33df2431c..9e2dcff713 100644 --- a/src/archive/zip/writer.go +++ b/src/archive/zip/writer.go @@ -433,6 +433,10 @@ func writeHeader(w io.Writer, h *header) error { // [Writer.CreateHeader], [Writer.CreateRaw], or [Writer.Close]. // // In contrast to [Writer.CreateHeader], the bytes passed to Writer are not compressed. +// +// CreateRaw's argument is stored in w. If the argument is a pointer to the embedded +// [FileHeader] in a [File] obtained from a [Reader] created from in-memory data, +// then w will refer to all of that memory. func (w *Writer) CreateRaw(fh *FileHeader) (io.Writer, error) { if err := w.prepare(fh); err != nil { return nil, err @@ -471,7 +475,10 @@ func (w *Writer) Copy(f *File) error { if err != nil { return err } - fw, err := w.CreateRaw(&f.FileHeader) + // Copy the FileHeader so w doesn't store a pointer to the data + // of f's entire archive. See #65499. + fh := f.FileHeader + fw, err := w.CreateRaw(&fh) if err != nil { return err } diff --git a/src/cmd/cgo/internal/testsanitizers/cc_test.go b/src/cmd/cgo/internal/testsanitizers/cc_test.go index e212a4fd98..e650de835a 100644 --- a/src/cmd/cgo/internal/testsanitizers/cc_test.go +++ b/src/cmd/cgo/internal/testsanitizers/cc_test.go @@ -16,8 +16,10 @@ import ( "encoding/json" "errors" "fmt" + "internal/testenv" "os" "os/exec" + "os/user" "path/filepath" "regexp" "strconv" @@ -266,12 +268,28 @@ func compilerSupportsLocation() bool { case "gcc": return compiler.major >= 10 case "clang": + // TODO(65606): The clang toolchain on the LUCI builders is not built against + // zlib, the ASAN runtime can't actually symbolize its own stack trace. Once + // this is resolved, one way or another, switch this back to 'true'. We still + // have coverage from the 'gcc' case above. + if inLUCIBuild() { + return false + } return true default: return false } } +// inLUCIBuild returns true if we're currently executing in a LUCI build. +func inLUCIBuild() bool { + u, err := user.Current() + if err != nil { + return false + } + return testenv.Builder() != "" && u.Username == "swarming" +} + // compilerRequiredTsanVersion reports whether the compiler is the version required by Tsan. // Only restrictions for ppc64le are known; otherwise return true. func compilerRequiredTsanVersion(goos, goarch string) bool { diff --git a/src/cmd/compile/internal/base/flag.go b/src/cmd/compile/internal/base/flag.go index a3144f8fb4..5b3c3ad8c6 100644 --- a/src/cmd/compile/internal/base/flag.go +++ b/src/cmd/compile/internal/base/flag.go @@ -124,7 +124,7 @@ type CmdFlags struct { TraceProfile string "help:\"write an execution trace to `file`\"" TrimPath string "help:\"remove `prefix` from recorded source file paths\"" WB bool "help:\"enable write barrier\"" // TODO: remove - PgoProfile string "help:\"read profile from `file`\"" + PgoProfile string "help:\"read profile or pre-process profile from `file`\"" ErrorURL bool "help:\"print explanatory URL with error message if applicable\"" // Configuration derived from flags; not a flag itself. diff --git a/src/cmd/compile/internal/devirtualize/pgo.go b/src/cmd/compile/internal/devirtualize/pgo.go index 170bf74673..5cc9fab54c 100644 --- a/src/cmd/compile/internal/devirtualize/pgo.go +++ b/src/cmd/compile/internal/devirtualize/pgo.go @@ -740,7 +740,7 @@ func findHotConcreteCallee(p *pgo.Profile, caller *ir.Func, call *ir.CallExpr, e } if base.Debug.PGODebug >= 2 { - fmt.Printf("%v call %s:%d: hottest callee %s (weight %d)\n", ir.Line(call), callerName, callOffset, hottest.Dst.Name(), hottest.Weight) + fmt.Printf("%v: call %s:%d: hottest callee %s (weight %d)\n", ir.Line(call), callerName, callOffset, hottest.Dst.Name(), hottest.Weight) } return hottest.Dst.AST, hottest.Weight } diff --git a/src/cmd/compile/internal/inline/inl.go b/src/cmd/compile/internal/inline/inl.go index b365008c76..8d2de22473 100644 --- a/src/cmd/compile/internal/inline/inl.go +++ b/src/cmd/compile/internal/inline/inl.go @@ -78,7 +78,7 @@ var ( ) // PGOInlinePrologue records the hot callsites from ir-graph. -func PGOInlinePrologue(p *pgo.Profile, funcs []*ir.Func) { +func PGOInlinePrologue(p *pgo.Profile) { if base.Debug.PGOInlineCDFThreshold != "" { if s, err := strconv.ParseFloat(base.Debug.PGOInlineCDFThreshold, 64); err == nil && s >= 0 && s <= 100 { inlineCDFHotCallSiteThresholdPercent = s @@ -119,7 +119,7 @@ func PGOInlinePrologue(p *pgo.Profile, funcs []*ir.Func) { // a percent, is the lower bound of weight for nodes to be considered hot // (currently only used in debug prints) (in case of equal weights, // comparing with the threshold may not accurately reflect which nodes are -// considiered hot). +// considered hot). func hotNodesFromCDF(p *pgo.Profile) (float64, []pgo.NamedCallEdge) { cum := int64(0) for i, n := range p.NamedEdgeMap.ByWeight { @@ -138,41 +138,32 @@ func hotNodesFromCDF(p *pgo.Profile) (float64, []pgo.NamedCallEdge) { // CanInlineFuncs computes whether a batch of functions are inlinable. func CanInlineFuncs(funcs []*ir.Func, profile *pgo.Profile) { if profile != nil { - PGOInlinePrologue(profile, funcs) + PGOInlinePrologue(profile) } - ir.VisitFuncsBottomUp(funcs, func(list []*ir.Func, recursive bool) { - CanInlineSCC(list, recursive, profile) - }) -} - -// CanInlineSCC computes the inlinability of functions within an SCC -// (strongly connected component). -// -// CanInlineSCC is designed to be used by ir.VisitFuncsBottomUp -// callbacks. -func CanInlineSCC(funcs []*ir.Func, recursive bool, profile *pgo.Profile) { if base.Flag.LowerL == 0 { return } - numfns := numNonClosures(funcs) + ir.VisitFuncsBottomUp(funcs, func(funcs []*ir.Func, recursive bool) { + numfns := numNonClosures(funcs) - for _, fn := range funcs { - if !recursive || numfns > 1 { - // We allow inlining if there is no - // recursion, or the recursion cycle is - // across more than one function. - CanInline(fn, profile) - } else { - if base.Flag.LowerM > 1 && fn.OClosure == nil { - fmt.Printf("%v: cannot inline %v: recursive\n", ir.Line(fn), fn.Nname) + for _, fn := range funcs { + if !recursive || numfns > 1 { + // We allow inlining if there is no + // recursion, or the recursion cycle is + // across more than one function. + CanInline(fn, profile) + } else { + if base.Flag.LowerM > 1 && fn.OClosure == nil { + fmt.Printf("%v: cannot inline %v: recursive\n", ir.Line(fn), fn.Nname) + } + } + if inlheur.Enabled() { + analyzeFuncProps(fn, profile) } } - if inlheur.Enabled() { - analyzeFuncProps(fn, profile) - } - } + }) } // GarbageCollectUnreferencedHiddenClosures makes a pass over all the @@ -227,7 +218,7 @@ func GarbageCollectUnreferencedHiddenClosures() { } // inlineBudget determines the max budget for function 'fn' prior to -// analyzing the hairyness of the body of 'fn'. We pass in the pgo +// analyzing the hairiness of the body of 'fn'. We pass in the pgo // profile if available (which can change the budget), also a // 'relaxed' flag, which expands the budget slightly to allow for the // possibility that a call to the function might have its score @@ -239,7 +230,7 @@ func inlineBudget(fn *ir.Func, profile *pgo.Profile, relaxed bool, verbose bool) if profile != nil { if n, ok := profile.WeightedCG.IRNodes[ir.LinkFuncName(fn)]; ok { if _, ok := candHotCalleeMap[n]; ok { - budget = int32(inlineHotMaxBudget) + budget = inlineHotMaxBudget if verbose { fmt.Printf("hot-node enabled increased budget=%v for func=%v\n", budget, ir.PkgFuncName(fn)) } @@ -322,10 +313,9 @@ func CanInline(fn *ir.Func, profile *pgo.Profile) { } n.Func.Inl = &ir.Inline{ - Cost: budget - visitor.budget, - Dcl: pruneUnusedAutos(n.Func.Dcl, &visitor), - HaveDcl: true, - + Cost: budget - visitor.budget, + Dcl: pruneUnusedAutos(n.Func.Dcl, &visitor), + HaveDcl: true, CanDelayResults: canDelayResults(fn), } if base.Flag.LowerM != 0 || logopt.Enabled() { @@ -919,7 +909,7 @@ func inlineCostOK(n *ir.CallExpr, caller, callee *ir.Func, bigCaller bool) (bool return true, 0, metric } -// canInlineCallsite returns true if the call n from caller to callee +// canInlineCallExpr returns true if the call n from caller to callee // can be inlined, plus the score computed for the call expr in // question. bigCaller indicates that caller is a big function. log // indicates that the 'cannot inline' reason should be logged. diff --git a/src/cmd/compile/internal/inline/inlheur/analyze.go b/src/cmd/compile/internal/inline/inlheur/analyze.go index a1b6f358e1..1fb502ac2a 100644 --- a/src/cmd/compile/internal/inline/inlheur/analyze.go +++ b/src/cmd/compile/internal/inline/inlheur/analyze.go @@ -95,7 +95,7 @@ func AnalyzeFunc(fn *ir.Func, canInline func(*ir.Func), budgetForFunc func(*ir.F // only after the closures it contains have been processed, so // iterate through the list in reverse order. Once a function has // been analyzed, revisit the question of whether it should be - // inlinable; if it is over the default hairyness limit and it + // inlinable; if it is over the default hairiness limit and it // doesn't have any interesting properties, then we don't want // the overhead of writing out its inline body. nameFinder := newNameFinder(fn) diff --git a/src/cmd/compile/internal/inline/inlheur/analyze_func_params.go b/src/cmd/compile/internal/inline/inlheur/analyze_func_params.go index d85d73b2ef..f6bd84c3f5 100644 --- a/src/cmd/compile/internal/inline/inlheur/analyze_func_params.go +++ b/src/cmd/compile/internal/inline/inlheur/analyze_func_params.go @@ -45,7 +45,7 @@ func addParamsAnalyzer(fn *ir.Func, analyzers []propAnalyzer, fp *FuncProps, nf return analyzers } -// makeParamAnalyzer creates a new helper object to analyze parameters +// makeParamsAnalyzer creates a new helper object to analyze parameters // of function fn. If the function doesn't have any interesting // params, a nil helper is returned along with a set of default param // flags for the func. diff --git a/src/cmd/compile/internal/inline/inlheur/scoring.go b/src/cmd/compile/internal/inline/inlheur/scoring.go index 623ba8adf0..3de95d46b4 100644 --- a/src/cmd/compile/internal/inline/inlheur/scoring.go +++ b/src/cmd/compile/internal/inline/inlheur/scoring.go @@ -590,7 +590,7 @@ func GetCallSiteScore(fn *ir.Func, call *ir.CallExpr) (int, bool) { // BudgetExpansion returns the amount to relax/expand the base // inlining budget when the new inliner is turned on; the inliner -// will add the returned value to the hairyness budget. +// will add the returned value to the hairiness budget. // // Background: with the new inliner, the score for a given callsite // can be adjusted down by some amount due to heuristics, however we @@ -617,7 +617,7 @@ var allCallSites CallSiteTab // along with info on call site scoring and the adjustments made to a // given score. Here profile is the PGO profile in use (may be // nil), budgetCallback is a callback that can be invoked to find out -// the original pre-adjustment hairyness limit for the function, and +// the original pre-adjustment hairiness limit for the function, and // inlineHotMaxBudget is the constant of the same name used in the // inliner. Sample output lines: // @@ -629,7 +629,7 @@ var allCallSites CallSiteTab // // In the dump above, "Score" is the final score calculated for the // callsite, "Adjustment" is the amount added to or subtracted from -// the original hairyness estimate to form the score. "Status" shows +// the original hairiness estimate to form the score. "Status" shows // whether anything changed with the site -- did the adjustment bump // it down just below the threshold ("PROMOTED") or instead bump it // above the threshold ("DEMOTED"); this will be blank ("---") if no diff --git a/src/cmd/compile/internal/inline/interleaved/interleaved.go b/src/cmd/compile/internal/inline/interleaved/interleaved.go index a6f19d470d..c5334d0300 100644 --- a/src/cmd/compile/internal/inline/interleaved/interleaved.go +++ b/src/cmd/compile/internal/inline/interleaved/interleaved.go @@ -38,27 +38,16 @@ func DevirtualizeAndInlinePackage(pkg *ir.Package, profile *pgo.Profile) { if base.Debug.PGOInline != 0 { inlProfile = profile } - if inlProfile != nil { - inline.PGOInlinePrologue(inlProfile, pkg.Funcs) + + // First compute inlinability of all functions in the package. + inline.CanInlineFuncs(pkg.Funcs, inlProfile) + + // Now we make a second pass to do devirtualization and inlining of + // calls. Order here should not matter. + for _, fn := range pkg.Funcs { + DevirtualizeAndInlineFunc(fn, inlProfile) } - ir.VisitFuncsBottomUp(pkg.Funcs, func(funcs []*ir.Func, recursive bool) { - // We visit functions within an SCC in fairly arbitrary order, - // so by computing inlinability for all functions in the SCC - // before performing any inlining, the results are less - // sensitive to the order within the SCC (see #58905 for an - // example). - - // First compute inlinability for all functions in the SCC ... - inline.CanInlineSCC(funcs, recursive, inlProfile) - - // ... then make a second pass to do devirtualization and inlining - // of calls. - for _, fn := range funcs { - DevirtualizeAndInlineFunc(fn, inlProfile) - } - }) - if base.Flag.LowerL != 0 { // Perform a garbage collection of hidden closures functions that // are no longer reachable from top-level functions following diff --git a/src/cmd/compile/internal/ir/reassign_consistency_check.go b/src/cmd/compile/internal/ir/reassign_consistency_check.go index e4d928d132..06a6c88962 100644 --- a/src/cmd/compile/internal/ir/reassign_consistency_check.go +++ b/src/cmd/compile/internal/ir/reassign_consistency_check.go @@ -22,7 +22,7 @@ func checkStaticValueResult(n Node, newres Node) { } } -// checkStaticValueResult compares the result from ReassignOracle.Reassigned +// checkReassignedResult compares the result from ReassignOracle.Reassigned // with the corresponding result from ir.Reassigned to make sure they agree. // This method is called only when turned on via build tag. func checkReassignedResult(n *Name, newres bool) { diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index f5d1fce50c..2dddd20165 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -663,9 +663,24 @@ func (pr *pkgReader) objInstIdx(info objInfo, dict *readerDict, shaped bool) ir. } // objIdx returns the specified object, instantiated with the given -// type arguments, if any. If shaped is true, then the shaped variant -// of the object is returned instead. +// type arguments, if any. +// If shaped is true, then the shaped variant of the object is returned +// instead. func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Type, shaped bool) ir.Node { + n, err := pr.objIdxMayFail(idx, implicits, explicits, shaped) + if err != nil { + base.Fatalf("%v", err) + } + return n +} + +// objIdxMayFail is equivalent to objIdx, but returns an error rather than +// failing the build if this object requires type arguments and the incorrect +// number of type arguments were passed. +// +// Other sources of internal failure (such as duplicate definitions) still fail +// the build. +func (pr *pkgReader) objIdxMayFail(idx pkgbits.Index, implicits, explicits []*types.Type, shaped bool) (ir.Node, error) { rname := pr.newReader(pkgbits.RelocName, idx, pkgbits.SyncObject1) _, sym := rname.qualifiedIdent() tag := pkgbits.CodeObj(rname.Code(pkgbits.SyncCodeObj)) @@ -674,22 +689,25 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ assert(!sym.IsBlank()) switch sym.Pkg { case types.BuiltinPkg, types.UnsafePkg: - return sym.Def.(ir.Node) + return sym.Def.(ir.Node), nil } if pri, ok := objReader[sym]; ok { - return pri.pr.objIdx(pri.idx, nil, explicits, shaped) + return pri.pr.objIdxMayFail(pri.idx, nil, explicits, shaped) } if sym.Pkg.Path == "runtime" { - return typecheck.LookupRuntime(sym.Name) + return typecheck.LookupRuntime(sym.Name), nil } base.Fatalf("unresolved stub: %v", sym) } - dict := pr.objDictIdx(sym, idx, implicits, explicits, shaped) + dict, err := pr.objDictIdx(sym, idx, implicits, explicits, shaped) + if err != nil { + return nil, err + } sym = dict.baseSym if !sym.IsBlank() && sym.Def != nil { - return sym.Def.(*ir.Name) + return sym.Def.(*ir.Name), nil } r := pr.newReader(pkgbits.RelocObj, idx, pkgbits.SyncObject1) @@ -725,7 +743,7 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ name := do(ir.OTYPE, false) setType(name, r.typ()) name.SetAlias(true) - return name + return name, nil case pkgbits.ObjConst: name := do(ir.OLITERAL, false) @@ -733,7 +751,7 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ val := FixValue(typ, r.Value()) setType(name, typ) setValue(name, val) - return name + return name, nil case pkgbits.ObjFunc: if sym.Name == "init" { @@ -768,7 +786,7 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ } rext.funcExt(name, nil) - return name + return name, nil case pkgbits.ObjType: name := do(ir.OTYPE, true) @@ -805,13 +823,13 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ r.needWrapper(typ) } - return name + return name, nil case pkgbits.ObjVar: name := do(ir.ONAME, false) setType(name, r.typ()) rext.varExt(name) - return name + return name, nil } } @@ -908,7 +926,7 @@ func shapify(targ *types.Type, basic bool) *types.Type { } // objDictIdx reads and returns the specified object dictionary. -func (pr *pkgReader) objDictIdx(sym *types.Sym, idx pkgbits.Index, implicits, explicits []*types.Type, shaped bool) *readerDict { +func (pr *pkgReader) objDictIdx(sym *types.Sym, idx pkgbits.Index, implicits, explicits []*types.Type, shaped bool) (*readerDict, error) { r := pr.newReader(pkgbits.RelocObjDict, idx, pkgbits.SyncObject1) dict := readerDict{ @@ -919,7 +937,7 @@ func (pr *pkgReader) objDictIdx(sym *types.Sym, idx pkgbits.Index, implicits, ex nexplicits := r.Len() if nimplicits > len(implicits) || nexplicits != len(explicits) { - base.Fatalf("%v has %v+%v params, but instantiated with %v+%v args", sym, nimplicits, nexplicits, len(implicits), len(explicits)) + return nil, fmt.Errorf("%v has %v+%v params, but instantiated with %v+%v args", sym, nimplicits, nexplicits, len(implicits), len(explicits)) } dict.targs = append(implicits[:nimplicits:nimplicits], explicits...) @@ -984,7 +1002,7 @@ func (pr *pkgReader) objDictIdx(sym *types.Sym, idx pkgbits.Index, implicits, ex dict.itabs[i] = itabInfo{typ: r.typInfo(), iface: r.typInfo()} } - return &dict + return &dict, nil } func (r *reader) typeParamNames() { @@ -2529,7 +2547,10 @@ func (pr *pkgReader) objDictName(idx pkgbits.Index, implicits, explicits []*type base.Fatalf("unresolved stub: %v", sym) } - dict := pr.objDictIdx(sym, idx, implicits, explicits, false) + dict, err := pr.objDictIdx(sym, idx, implicits, explicits, false) + if err != nil { + base.Fatalf("%v", err) + } return pr.dictNameOf(dict) } diff --git a/src/cmd/compile/internal/noder/unified.go b/src/cmd/compile/internal/noder/unified.go index d2ca1f37a9..492b00d256 100644 --- a/src/cmd/compile/internal/noder/unified.go +++ b/src/cmd/compile/internal/noder/unified.go @@ -80,7 +80,11 @@ func lookupFunction(pkg *types.Pkg, symName string) (*ir.Func, error) { return nil, fmt.Errorf("func sym %v missing objReader", sym) } - name := pri.pr.objIdx(pri.idx, nil, nil, false).(*ir.Name) + node, err := pri.pr.objIdxMayFail(pri.idx, nil, nil, false) + if err != nil { + return nil, fmt.Errorf("func sym %v lookup error: %w", sym, err) + } + name := node.(*ir.Name) if name.Op() != ir.ONAME || name.Class != ir.PFUNC { return nil, fmt.Errorf("func sym %v refers to non-function name: %v", sym, name) } @@ -105,7 +109,11 @@ func lookupMethod(pkg *types.Pkg, symName string) (*ir.Func, error) { return nil, fmt.Errorf("type sym %v missing objReader", typ) } - name := pri.pr.objIdx(pri.idx, nil, nil, false).(*ir.Name) + node, err := pri.pr.objIdxMayFail(pri.idx, nil, nil, false) + if err != nil { + return nil, fmt.Errorf("func sym %v lookup error: %w", typ, err) + } + name := node.(*ir.Name) if name.Op() != ir.OTYPE { return nil, fmt.Errorf("type sym %v refers to non-type name: %v", typ, name) } diff --git a/src/cmd/compile/internal/pgo/irgraph.go b/src/cmd/compile/internal/pgo/irgraph.go index 96485e33ab..9ed16d224b 100644 --- a/src/cmd/compile/internal/pgo/irgraph.go +++ b/src/cmd/compile/internal/pgo/irgraph.go @@ -41,16 +41,19 @@ package pgo import ( + "bufio" "cmd/compile/internal/base" "cmd/compile/internal/ir" - "cmd/compile/internal/pgo/internal/graph" "cmd/compile/internal/typecheck" "cmd/compile/internal/types" "errors" "fmt" "internal/profile" + "io" "os" "sort" + "strconv" + "strings" ) // IRGraph is a call graph with nodes pointing to IRs of functions and edges @@ -139,14 +142,54 @@ type Profile struct { WeightedCG *IRGraph } -// New generates a profile-graph from the profile. +var wantHdr = "GO PREPROFILE V1\n" + +func isPreProfileFile(r *bufio.Reader) (bool, error) { + hdr, err := r.Peek(len(wantHdr)) + if err == io.EOF { + // Empty file. + return false, nil + } else if err != nil { + return false, fmt.Errorf("error reading profile header: %w", err) + } + + return string(hdr) == wantHdr, nil +} + +// New generates a profile-graph from the profile or pre-processed profile. func New(profileFile string) (*Profile, error) { f, err := os.Open(profileFile) if err != nil { return nil, fmt.Errorf("error opening profile: %w", err) } defer f.Close() - p, err := profile.Parse(f) + + r := bufio.NewReader(f) + + isPreProf, err := isPreProfileFile(r) + if err != nil { + return nil, fmt.Errorf("error processing profile header: %w", err) + } + + if isPreProf { + profile, err := processPreprof(r) + if err != nil { + return nil, fmt.Errorf("error processing preprocessed PGO profile: %w", err) + } + return profile, nil + } + + profile, err := processProto(r) + if err != nil { + return nil, fmt.Errorf("error processing pprof PGO profile: %w", err) + } + return profile, nil + +} + +// processProto generates a profile-graph from the profile. +func processProto(r io.Reader) (*Profile, error) { + p, err := profile.Parse(r) if errors.Is(err, profile.ErrNoData) { // Treat a completely empty file the same as a profile with no // samples: nothing to do. @@ -175,7 +218,7 @@ func New(profileFile string) (*Profile, error) { return nil, fmt.Errorf(`profile does not contain a sample index with value/type "samples/count" or cpu/nanoseconds"`) } - g := graph.NewGraph(p, &graph.Options{ + g := profile.NewGraph(p, &profile.Options{ SampleValue: func(v []int64) int64 { return v[valueIndex] }, }) @@ -198,45 +241,31 @@ func New(profileFile string) (*Profile, error) { }, nil } -// createNamedEdgeMap builds a map of callsite-callee edge weights from the -// profile-graph. -// -// Caller should ignore the profile if totalWeight == 0. -func createNamedEdgeMap(g *graph.Graph) (edgeMap NamedEdgeMap, totalWeight int64, err error) { - seenStartLine := false - - // Process graph and build various node and edge maps which will - // be consumed by AST walk. - weight := make(map[NamedCallEdge]int64) - for _, n := range g.Nodes { - seenStartLine = seenStartLine || n.Info.StartLine != 0 - - canonicalName := n.Info.Name - // Create the key to the nodeMapKey. - namedEdge := NamedCallEdge{ - CallerName: canonicalName, - CallSiteOffset: n.Info.Lineno - n.Info.StartLine, - } - - for _, e := range n.Out { - totalWeight += e.WeightValue() - namedEdge.CalleeName = e.Dest.Info.Name - // Create new entry or increment existing entry. - weight[namedEdge] += e.WeightValue() - } +// processPreprof generates a profile-graph from the pre-procesed profile. +func processPreprof(r io.Reader) (*Profile, error) { + namedEdgeMap, totalWeight, err := createNamedEdgeMapFromPreprocess(r) + if err != nil { + return nil, err } if totalWeight == 0 { + return nil, nil // accept but ignore profile with no samples. + } + + // Create package-level call graph with weights from profile and IR. + wg := createIRGraph(namedEdgeMap) + + return &Profile{ + TotalWeight: totalWeight, + NamedEdgeMap: namedEdgeMap, + WeightedCG: wg, + }, nil +} + +func postProcessNamedEdgeMap(weight map[NamedCallEdge]int64, weightVal int64) (edgeMap NamedEdgeMap, totalWeight int64, err error) { + if weightVal == 0 { return NamedEdgeMap{}, 0, nil // accept but ignore profile with no samples. } - - if !seenStartLine { - // TODO(prattmic): If Function.start_line is missing we could - // fall back to using absolute line numbers, which is better - // than nothing. - return NamedEdgeMap{}, 0, fmt.Errorf("profile missing Function.start_line data (Go version of profiled application too old? Go 1.20+ automatically adds this to profiles)") - } - byWeight := make([]NamedCallEdge, 0, len(weight)) for namedEdge := range weight { byWeight = append(byWeight, namedEdge) @@ -261,9 +290,110 @@ func createNamedEdgeMap(g *graph.Graph) (edgeMap NamedEdgeMap, totalWeight int64 ByWeight: byWeight, } + totalWeight = weightVal + return edgeMap, totalWeight, nil } +// restore NodeMap information from a preprocessed profile. +// The reader can refer to the format of preprocessed profile in cmd/preprofile/main.go. +func createNamedEdgeMapFromPreprocess(r io.Reader) (edgeMap NamedEdgeMap, totalWeight int64, err error) { + fileScanner := bufio.NewScanner(r) + fileScanner.Split(bufio.ScanLines) + weight := make(map[NamedCallEdge]int64) + + if !fileScanner.Scan() { + if err := fileScanner.Err(); err != nil { + return NamedEdgeMap{}, 0, fmt.Errorf("error reading preprocessed profile: %w", err) + } + return NamedEdgeMap{}, 0, fmt.Errorf("preprocessed profile missing header") + } + if gotHdr := fileScanner.Text() + "\n"; gotHdr != wantHdr { + return NamedEdgeMap{}, 0, fmt.Errorf("preprocessed profile malformed header; got %q want %q", gotHdr, wantHdr) + } + + for fileScanner.Scan() { + readStr := fileScanner.Text() + + callerName := readStr + + if !fileScanner.Scan() { + if err := fileScanner.Err(); err != nil { + return NamedEdgeMap{}, 0, fmt.Errorf("error reading preprocessed profile: %w", err) + } + return NamedEdgeMap{}, 0, fmt.Errorf("preprocessed profile entry missing callee") + } + calleeName := fileScanner.Text() + + if !fileScanner.Scan() { + if err := fileScanner.Err(); err != nil { + return NamedEdgeMap{}, 0, fmt.Errorf("error reading preprocessed profile: %w", err) + } + return NamedEdgeMap{}, 0, fmt.Errorf("preprocessed profile entry missing weight") + } + readStr = fileScanner.Text() + + split := strings.Split(readStr, " ") + + if len(split) != 2 { + return NamedEdgeMap{}, 0, fmt.Errorf("preprocessed profile entry got %v want 2 fields", split) + } + + co, _ := strconv.Atoi(split[0]) + + namedEdge := NamedCallEdge{ + CallerName: callerName, + CalleeName: calleeName, + CallSiteOffset: co, + } + + EWeight, _ := strconv.ParseInt(split[1], 10, 64) + + weight[namedEdge] += EWeight + totalWeight += EWeight + } + + return postProcessNamedEdgeMap(weight, totalWeight) + +} + +// createNamedEdgeMap builds a map of callsite-callee edge weights from the +// profile-graph. +// +// Caller should ignore the profile if totalWeight == 0. +func createNamedEdgeMap(g *profile.Graph) (edgeMap NamedEdgeMap, totalWeight int64, err error) { + seenStartLine := false + + // Process graph and build various node and edge maps which will + // be consumed by AST walk. + weight := make(map[NamedCallEdge]int64) + for _, n := range g.Nodes { + seenStartLine = seenStartLine || n.Info.StartLine != 0 + + canonicalName := n.Info.Name + // Create the key to the nodeMapKey. + namedEdge := NamedCallEdge{ + CallerName: canonicalName, + CallSiteOffset: n.Info.Lineno - n.Info.StartLine, + } + + for _, e := range n.Out { + totalWeight += e.WeightValue() + namedEdge.CalleeName = e.Dest.Info.Name + // Create new entry or increment existing entry. + weight[namedEdge] += e.WeightValue() + } + } + + if !seenStartLine { + // TODO(prattmic): If Function.start_line is missing we could + // fall back to using absolute line numbers, which is better + // than nothing. + return NamedEdgeMap{}, 0, fmt.Errorf("profile missing Function.start_line data (Go version of profiled application too old? Go 1.20+ automatically adds this to profiles)") + } + return postProcessNamedEdgeMap(weight, totalWeight) +} + // initializeIRGraph builds the IRGraph by visiting all the ir.Func in decl list // of a package. func createIRGraph(namedEdgeMap NamedEdgeMap) *IRGraph { diff --git a/src/cmd/compile/internal/reflectdata/reflect.go b/src/cmd/compile/internal/reflectdata/reflect.go index 8ef1a913e8..fd64b2ebfe 100644 --- a/src/cmd/compile/internal/reflectdata/reflect.go +++ b/src/cmd/compile/internal/reflectdata/reflect.go @@ -1331,20 +1331,25 @@ func writeITab(lsym *obj.LSym, typ, iface *types.Type, allowNonImplement bool) { // _ [4]byte // fun [1]uintptr // variable sized. fun[0]==0 means _type does not implement inter. // } - o := objw.SymPtr(lsym, 0, writeType(iface), 0) - o = objw.SymPtr(lsym, o, writeType(typ), 0) - o = objw.Uint32(lsym, o, types.TypeHash(typ)) // copy of type hash - o += 4 // skip unused field + c := rttype.NewCursor(lsym, 0, rttype.ITab) + c.Field("Inter").WritePtr(writeType(iface)) + c.Field("Type").WritePtr(writeType(typ)) + c.Field("Hash").WriteUint32(types.TypeHash(typ)) // copy of type hash + + var delta int64 + c = c.Field("Fun") if !completeItab { // If typ doesn't implement iface, make method entries be zero. - o = objw.Uintptr(lsym, o, 0) - entries = entries[:0] - } - for _, fn := range entries { - o = objw.SymPtrWeak(lsym, o, fn, 0) // method pointer for each method + c.Elem(0).WriteUintptr(0) + } else { + var a rttype.ArrayCursor + a, delta = c.ModifyArray(len(entries)) + for i, fn := range entries { + a.Elem(i).WritePtrWeak(fn) // method pointer for each method + } } // Nothing writes static itabs, so they are read only. - objw.Global(lsym, int32(o), int16(obj.DUPOK|obj.RODATA)) + objw.Global(lsym, int32(rttype.ITab.Size()+delta), int16(obj.DUPOK|obj.RODATA)) lsym.Set(obj.AttrContentAddressable, true) } diff --git a/src/cmd/compile/internal/riscv64/ssa.go b/src/cmd/compile/internal/riscv64/ssa.go index caca504d28..17f0d98532 100644 --- a/src/cmd/compile/internal/riscv64/ssa.go +++ b/src/cmd/compile/internal/riscv64/ssa.go @@ -278,7 +278,7 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { p.To.Type = obj.TYPE_REG p.To.Reg = rd case ssa.OpRISCV64ADD, ssa.OpRISCV64SUB, ssa.OpRISCV64SUBW, ssa.OpRISCV64XOR, ssa.OpRISCV64OR, ssa.OpRISCV64AND, - ssa.OpRISCV64SLL, ssa.OpRISCV64SRA, ssa.OpRISCV64SRAW, ssa.OpRISCV64SRL, ssa.OpRISCV64SRLW, + ssa.OpRISCV64SLL, ssa.OpRISCV64SLLW, ssa.OpRISCV64SRA, ssa.OpRISCV64SRAW, ssa.OpRISCV64SRL, ssa.OpRISCV64SRLW, ssa.OpRISCV64SLT, ssa.OpRISCV64SLTU, ssa.OpRISCV64MUL, ssa.OpRISCV64MULW, ssa.OpRISCV64MULH, ssa.OpRISCV64MULHU, ssa.OpRISCV64DIV, ssa.OpRISCV64DIVU, ssa.OpRISCV64DIVW, ssa.OpRISCV64DIVUW, ssa.OpRISCV64REM, ssa.OpRISCV64REMU, ssa.OpRISCV64REMW, @@ -422,8 +422,8 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) { p.To.Type = obj.TYPE_REG p.To.Reg = v.Reg() case ssa.OpRISCV64ADDI, ssa.OpRISCV64ADDIW, ssa.OpRISCV64XORI, ssa.OpRISCV64ORI, ssa.OpRISCV64ANDI, - ssa.OpRISCV64SLLI, ssa.OpRISCV64SRAI, ssa.OpRISCV64SRAIW, ssa.OpRISCV64SRLI, ssa.OpRISCV64SRLIW, ssa.OpRISCV64SLTI, - ssa.OpRISCV64SLTIU: + ssa.OpRISCV64SLLI, ssa.OpRISCV64SLLIW, ssa.OpRISCV64SRAI, ssa.OpRISCV64SRAIW, + ssa.OpRISCV64SRLI, ssa.OpRISCV64SRLIW, ssa.OpRISCV64SLTI, ssa.OpRISCV64SLTIU: p := s.Prog(v.Op.Asm()) p.From.Type = obj.TYPE_CONST p.From.Offset = v.AuxInt diff --git a/src/cmd/compile/internal/rttype/rttype.go b/src/cmd/compile/internal/rttype/rttype.go index cdc399d9cf..b90e23dc5b 100644 --- a/src/cmd/compile/internal/rttype/rttype.go +++ b/src/cmd/compile/internal/rttype/rttype.go @@ -42,6 +42,9 @@ var UncommonType *types.Type var InterfaceSwitch *types.Type var TypeAssert *types.Type +// Interface tables (itabs) +var ITab *types.Type + func Init() { // Note: this has to be called explicitly instead of being // an init function so it runs after the types package has @@ -64,6 +67,8 @@ func Init() { InterfaceSwitch = fromReflect(reflect.TypeOf(abi.InterfaceSwitch{})) TypeAssert = fromReflect(reflect.TypeOf(abi.TypeAssert{})) + ITab = fromReflect(reflect.TypeOf(abi.ITab{})) + // Make sure abi functions are correct. These functions are used // by the linker which doesn't have the ability to do type layout, // so we check the functions it uses here. @@ -80,6 +85,9 @@ func Init() { if got, want := int64(abi.TFlagOff(ptrSize)), Type.OffsetOf("TFlag"); got != want { base.Fatalf("abi.TFlagOff() == %d, want %d", got, want) } + if got, want := int64(abi.ITabTypeOff(ptrSize)), ITab.OffsetOf("Type"); got != want { + base.Fatalf("abi.ITabTypeOff() == %d, want %d", got, want) + } } // fromReflect translates from a host type to the equivalent target type. @@ -154,6 +162,12 @@ func (c Cursor) WritePtr(target *obj.LSym) { objw.SymPtr(c.lsym, int(c.offset), target, 0) } } +func (c Cursor) WritePtrWeak(target *obj.LSym) { + if c.typ.Kind() != types.TUINTPTR { + base.Fatalf("can't write ptr, it has kind %s", c.typ.Kind()) + } + objw.SymPtrWeak(c.lsym, int(c.offset), target, 0) +} func (c Cursor) WriteUintptr(val uint64) { if c.typ.Kind() != types.TUINTPTR { base.Fatalf("can't write uintptr, it has kind %s", c.typ.Kind()) @@ -250,6 +264,17 @@ func (c Cursor) Field(name string) Cursor { return Cursor{} } +func (c Cursor) Elem(i int64) Cursor { + if c.typ.Kind() != types.TARRAY { + base.Fatalf("can't call Elem on non-array %v", c.typ) + } + if i < 0 || i >= c.typ.NumElem() { + base.Fatalf("element access out of bounds [%d] in [0:%d]", i, c.typ.NumElem()) + } + elem := c.typ.Elem() + return Cursor{lsym: c.lsym, offset: c.offset + i*elem.Size(), typ: elem} +} + type ArrayCursor struct { c Cursor // cursor pointing at first element n int // number of elements diff --git a/src/cmd/compile/internal/ssa/_gen/RISCV64.rules b/src/cmd/compile/internal/ssa/_gen/RISCV64.rules index 4fef20a565..135d70bc47 100644 --- a/src/cmd/compile/internal/ssa/_gen/RISCV64.rules +++ b/src/cmd/compile/internal/ssa/_gen/RISCV64.rules @@ -214,10 +214,10 @@ (Rsh64x(64|32|16|8) x y) && shiftIsBounded(v) => (SRA x y) // Rotates. -(RotateLeft8 x (MOVDconst [c])) => (Or8 (Lsh8x64 x (MOVDconst [c&7])) (Rsh8Ux64 x (MOVDconst [-c&7]))) -(RotateLeft16 x (MOVDconst [c])) => (Or16 (Lsh16x64 x (MOVDconst [c&15])) (Rsh16Ux64 x (MOVDconst [-c&15]))) -(RotateLeft32 x (MOVDconst [c])) => (Or32 (Lsh32x64 x (MOVDconst [c&31])) (Rsh32Ux64 x (MOVDconst [-c&31]))) -(RotateLeft64 x (MOVDconst [c])) => (Or64 (Lsh64x64 x (MOVDconst [c&63])) (Rsh64Ux64 x (MOVDconst [-c&63]))) +(RotateLeft8 x y) => (OR (SLL x (ANDI [7] y)) (SRL (ZeroExt8to64 x) (ANDI [7] (NEG y)))) +(RotateLeft16 x y) => (OR (SLL x (ANDI [15] y)) (SRL (ZeroExt16to64 x) (ANDI [15] (NEG y)))) +(RotateLeft32 x y) => (OR (SLLW x y) (SRLW x (NEG y))) +(RotateLeft64 x y) => (OR (SLL x y) (SRL x (NEG y))) (Less64 ...) => (SLT ...) (Less32 x y) => (SLT (SignExt32to64 x) (SignExt32to64 y)) @@ -733,6 +733,7 @@ (XOR (MOVDconst [val]) x) && is32Bit(val) => (XORI [val] x) (SLL x (MOVDconst [val])) => (SLLI [int64(val&63)] x) (SRL x (MOVDconst [val])) => (SRLI [int64(val&63)] x) +(SLLW x (MOVDconst [val])) => (SLLIW [int64(val&31)] x) (SRLW x (MOVDconst [val])) => (SRLIW [int64(val&31)] x) (SRA x (MOVDconst [val])) => (SRAI [int64(val&63)] x) (SRAW x (MOVDconst [val])) => (SRAIW [int64(val&31)] x) diff --git a/src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go b/src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go index 9ce6450166..e9f1df0d58 100644 --- a/src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go +++ b/src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go @@ -207,16 +207,18 @@ func init() { {name: "MOVDnop", argLength: 1, reg: regInfo{inputs: []regMask{gpMask}, outputs: []regMask{gpMask}}, resultInArg0: true}, // nop, return arg0 in same register // Shift ops - {name: "SLL", argLength: 2, reg: gp21, asm: "SLL"}, // arg0 << (aux1 & 63) - {name: "SRA", argLength: 2, reg: gp21, asm: "SRA"}, // arg0 >> (aux1 & 63), signed - {name: "SRAW", argLength: 2, reg: gp21, asm: "SRAW"}, // arg0 >> (aux1 & 31), signed - {name: "SRL", argLength: 2, reg: gp21, asm: "SRL"}, // arg0 >> (aux1 & 63), unsigned - {name: "SRLW", argLength: 2, reg: gp21, asm: "SRLW"}, // arg0 >> (aux1 & 31), unsigned - {name: "SLLI", argLength: 1, reg: gp11, asm: "SLLI", aux: "Int64"}, // arg0 << auxint, shift amount 0-63 - {name: "SRAI", argLength: 1, reg: gp11, asm: "SRAI", aux: "Int64"}, // arg0 >> auxint, signed, shift amount 0-63 - {name: "SRAIW", argLength: 1, reg: gp11, asm: "SRAIW", aux: "Int64"}, // arg0 >> auxint, signed, shift amount 0-31 - {name: "SRLI", argLength: 1, reg: gp11, asm: "SRLI", aux: "Int64"}, // arg0 >> auxint, unsigned, shift amount 0-63 - {name: "SRLIW", argLength: 1, reg: gp11, asm: "SRLIW", aux: "Int64"}, // arg0 >> auxint, unsigned, shift amount 0-31 + {name: "SLL", argLength: 2, reg: gp21, asm: "SLL"}, // arg0 << (aux1 & 63), logical left shift + {name: "SLLW", argLength: 2, reg: gp21, asm: "SLLW"}, // arg0 << (aux1 & 31), logical left shift of 32 bit value, sign extended to 64 bits + {name: "SRA", argLength: 2, reg: gp21, asm: "SRA"}, // arg0 >> (aux1 & 63), arithmetic right shift + {name: "SRAW", argLength: 2, reg: gp21, asm: "SRAW"}, // arg0 >> (aux1 & 31), arithmetic right shift of 32 bit value, sign extended to 64 bits + {name: "SRL", argLength: 2, reg: gp21, asm: "SRL"}, // arg0 >> (aux1 & 63), logical right shift + {name: "SRLW", argLength: 2, reg: gp21, asm: "SRLW"}, // arg0 >> (aux1 & 31), logical right shift of 32 bit value, sign extended to 64 bits + {name: "SLLI", argLength: 1, reg: gp11, asm: "SLLI", aux: "Int64"}, // arg0 << auxint, shift amount 0-63, logical left shift + {name: "SLLIW", argLength: 1, reg: gp11, asm: "SLLIW", aux: "Int64"}, // arg0 << auxint, shift amount 0-31, logical left shift of 32 bit value, sign extended to 64 bits + {name: "SRAI", argLength: 1, reg: gp11, asm: "SRAI", aux: "Int64"}, // arg0 >> auxint, shift amount 0-63, arithmetic right shift + {name: "SRAIW", argLength: 1, reg: gp11, asm: "SRAIW", aux: "Int64"}, // arg0 >> auxint, shift amount 0-31, arithmetic right shift of 32 bit value, sign extended to 64 bits + {name: "SRLI", argLength: 1, reg: gp11, asm: "SRLI", aux: "Int64"}, // arg0 >> auxint, shift amount 0-63, logical right shift + {name: "SRLIW", argLength: 1, reg: gp11, asm: "SRLIW", aux: "Int64"}, // arg0 >> auxint, shift amount 0-31, logical right shift of 32 bit value, sign extended to 64 bits // Bitwise ops {name: "XOR", argLength: 2, reg: gp21, asm: "XOR", commutative: true}, // arg0 ^ arg1 diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 5a2ca1a424..2378c7abc2 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -2388,11 +2388,13 @@ const ( OpRISCV64MOVWUreg OpRISCV64MOVDnop OpRISCV64SLL + OpRISCV64SLLW OpRISCV64SRA OpRISCV64SRAW OpRISCV64SRL OpRISCV64SRLW OpRISCV64SLLI + OpRISCV64SLLIW OpRISCV64SRAI OpRISCV64SRAIW OpRISCV64SRLI @@ -32045,6 +32047,20 @@ var opcodeTable = [...]opInfo{ }, }, }, + { + name: "SLLW", + argLen: 2, + asm: riscv.ASLLW, + reg: regInfo{ + inputs: []inputInfo{ + {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 + {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 + }, + outputs: []outputInfo{ + {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 + }, + }, + }, { name: "SRA", argLen: 2, @@ -32115,6 +32131,20 @@ var opcodeTable = [...]opInfo{ }, }, }, + { + name: "SLLIW", + auxType: auxInt64, + argLen: 1, + asm: riscv.ASLLIW, + reg: regInfo{ + inputs: []inputInfo{ + {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 + }, + outputs: []outputInfo{ + {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 + }, + }, + }, { name: "SRAI", auxType: auxInt64, diff --git a/src/cmd/compile/internal/ssa/rewrite.go b/src/cmd/compile/internal/ssa/rewrite.go index fa4208228e..db21246446 100644 --- a/src/cmd/compile/internal/ssa/rewrite.go +++ b/src/cmd/compile/internal/ssa/rewrite.go @@ -2144,7 +2144,7 @@ func canRotate(c *Config, bits int64) bool { return false } switch c.arch { - case "386", "amd64", "arm64": + case "386", "amd64", "arm64", "riscv64": return true case "arm", "s390x", "ppc64", "ppc64le", "wasm", "loong64": return bits >= 32 diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go index cf86572b8d..9b81676001 100644 --- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go +++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go @@ -536,6 +536,8 @@ func rewriteValueRISCV64(v *Value) bool { return rewriteValueRISCV64_OpRISCV64SLL(v) case OpRISCV64SLLI: return rewriteValueRISCV64_OpRISCV64SLLI(v) + case OpRISCV64SLLW: + return rewriteValueRISCV64_OpRISCV64SLLW(v) case OpRISCV64SLT: return rewriteValueRISCV64_OpRISCV64SLT(v) case OpRISCV64SLTI: @@ -6070,6 +6072,24 @@ func rewriteValueRISCV64_OpRISCV64SLLI(v *Value) bool { } return false } +func rewriteValueRISCV64_OpRISCV64SLLW(v *Value) bool { + v_1 := v.Args[1] + v_0 := v.Args[0] + // match: (SLLW x (MOVDconst [val])) + // result: (SLLIW [int64(val&31)] x) + for { + x := v_0 + if v_1.Op != OpRISCV64MOVDconst { + break + } + val := auxIntToInt64(v_1.AuxInt) + v.reset(OpRISCV64SLLIW) + v.AuxInt = int64ToAuxInt(int64(val & 31)) + v.AddArg(x) + return true + } + return false +} func rewriteValueRISCV64_OpRISCV64SLT(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] @@ -6644,112 +6664,102 @@ func rewriteValueRISCV64_OpRotateLeft16(v *Value) bool { v_0 := v.Args[0] b := v.Block typ := &b.Func.Config.Types - // match: (RotateLeft16 x (MOVDconst [c])) - // result: (Or16 (Lsh16x64 x (MOVDconst [c&15])) (Rsh16Ux64 x (MOVDconst [-c&15]))) + // match: (RotateLeft16 x y) + // result: (OR (SLL x (ANDI [15] y)) (SRL (ZeroExt16to64 x) (ANDI [15] (NEG y)))) for { t := v.Type x := v_0 - if v_1.Op != OpRISCV64MOVDconst { - break - } - c := auxIntToInt64(v_1.AuxInt) - v.reset(OpOr16) - v0 := b.NewValue0(v.Pos, OpLsh16x64, t) - v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v1.AuxInt = int64ToAuxInt(c & 15) + y := v_1 + v.reset(OpRISCV64OR) + v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t) + v1 := b.NewValue0(v.Pos, OpRISCV64ANDI, y.Type) + v1.AuxInt = int64ToAuxInt(15) + v1.AddArg(y) v0.AddArg2(x, v1) - v2 := b.NewValue0(v.Pos, OpRsh16Ux64, t) - v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v3.AuxInt = int64ToAuxInt(-c & 15) - v2.AddArg2(x, v3) + v2 := b.NewValue0(v.Pos, OpRISCV64SRL, t) + v3 := b.NewValue0(v.Pos, OpZeroExt16to64, typ.UInt64) + v3.AddArg(x) + v4 := b.NewValue0(v.Pos, OpRISCV64ANDI, y.Type) + v4.AuxInt = int64ToAuxInt(15) + v5 := b.NewValue0(v.Pos, OpRISCV64NEG, y.Type) + v5.AddArg(y) + v4.AddArg(v5) + v2.AddArg2(v3, v4) v.AddArg2(v0, v2) return true } - return false } func rewriteValueRISCV64_OpRotateLeft32(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] b := v.Block - typ := &b.Func.Config.Types - // match: (RotateLeft32 x (MOVDconst [c])) - // result: (Or32 (Lsh32x64 x (MOVDconst [c&31])) (Rsh32Ux64 x (MOVDconst [-c&31]))) + // match: (RotateLeft32 x y) + // result: (OR (SLLW x y) (SRLW x (NEG y))) for { t := v.Type x := v_0 - if v_1.Op != OpRISCV64MOVDconst { - break - } - c := auxIntToInt64(v_1.AuxInt) - v.reset(OpOr32) - v0 := b.NewValue0(v.Pos, OpLsh32x64, t) - v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v1.AuxInt = int64ToAuxInt(c & 31) - v0.AddArg2(x, v1) - v2 := b.NewValue0(v.Pos, OpRsh32Ux64, t) - v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v3.AuxInt = int64ToAuxInt(-c & 31) - v2.AddArg2(x, v3) - v.AddArg2(v0, v2) + y := v_1 + v.reset(OpRISCV64OR) + v0 := b.NewValue0(v.Pos, OpRISCV64SLLW, t) + v0.AddArg2(x, y) + v1 := b.NewValue0(v.Pos, OpRISCV64SRLW, t) + v2 := b.NewValue0(v.Pos, OpRISCV64NEG, y.Type) + v2.AddArg(y) + v1.AddArg2(x, v2) + v.AddArg2(v0, v1) return true } - return false } func rewriteValueRISCV64_OpRotateLeft64(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] b := v.Block - typ := &b.Func.Config.Types - // match: (RotateLeft64 x (MOVDconst [c])) - // result: (Or64 (Lsh64x64 x (MOVDconst [c&63])) (Rsh64Ux64 x (MOVDconst [-c&63]))) + // match: (RotateLeft64 x y) + // result: (OR (SLL x y) (SRL x (NEG y))) for { t := v.Type x := v_0 - if v_1.Op != OpRISCV64MOVDconst { - break - } - c := auxIntToInt64(v_1.AuxInt) - v.reset(OpOr64) - v0 := b.NewValue0(v.Pos, OpLsh64x64, t) - v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v1.AuxInt = int64ToAuxInt(c & 63) - v0.AddArg2(x, v1) - v2 := b.NewValue0(v.Pos, OpRsh64Ux64, t) - v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v3.AuxInt = int64ToAuxInt(-c & 63) - v2.AddArg2(x, v3) - v.AddArg2(v0, v2) + y := v_1 + v.reset(OpRISCV64OR) + v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t) + v0.AddArg2(x, y) + v1 := b.NewValue0(v.Pos, OpRISCV64SRL, t) + v2 := b.NewValue0(v.Pos, OpRISCV64NEG, y.Type) + v2.AddArg(y) + v1.AddArg2(x, v2) + v.AddArg2(v0, v1) return true } - return false } func rewriteValueRISCV64_OpRotateLeft8(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] b := v.Block typ := &b.Func.Config.Types - // match: (RotateLeft8 x (MOVDconst [c])) - // result: (Or8 (Lsh8x64 x (MOVDconst [c&7])) (Rsh8Ux64 x (MOVDconst [-c&7]))) + // match: (RotateLeft8 x y) + // result: (OR (SLL x (ANDI [7] y)) (SRL (ZeroExt8to64 x) (ANDI [7] (NEG y)))) for { t := v.Type x := v_0 - if v_1.Op != OpRISCV64MOVDconst { - break - } - c := auxIntToInt64(v_1.AuxInt) - v.reset(OpOr8) - v0 := b.NewValue0(v.Pos, OpLsh8x64, t) - v1 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v1.AuxInt = int64ToAuxInt(c & 7) + y := v_1 + v.reset(OpRISCV64OR) + v0 := b.NewValue0(v.Pos, OpRISCV64SLL, t) + v1 := b.NewValue0(v.Pos, OpRISCV64ANDI, y.Type) + v1.AuxInt = int64ToAuxInt(7) + v1.AddArg(y) v0.AddArg2(x, v1) - v2 := b.NewValue0(v.Pos, OpRsh8Ux64, t) - v3 := b.NewValue0(v.Pos, OpRISCV64MOVDconst, typ.UInt64) - v3.AuxInt = int64ToAuxInt(-c & 7) - v2.AddArg2(x, v3) + v2 := b.NewValue0(v.Pos, OpRISCV64SRL, t) + v3 := b.NewValue0(v.Pos, OpZeroExt8to64, typ.UInt64) + v3.AddArg(x) + v4 := b.NewValue0(v.Pos, OpRISCV64ANDI, y.Type) + v4.AuxInt = int64ToAuxInt(7) + v5 := b.NewValue0(v.Pos, OpRISCV64NEG, y.Type) + v5.AddArg(y) + v4.AddArg(v5) + v2.AddArg2(v3, v4) v.AddArg2(v0, v2) return true } - return false } func rewriteValueRISCV64_OpRsh16Ux16(v *Value) bool { v_1 := v.Args[1] diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go index 3e72a27554..68b1547048 100644 --- a/src/cmd/compile/internal/ssagen/ssa.go +++ b/src/cmd/compile/internal/ssagen/ssa.go @@ -22,6 +22,7 @@ import ( "cmd/compile/internal/liveness" "cmd/compile/internal/objw" "cmd/compile/internal/reflectdata" + "cmd/compile/internal/rttype" "cmd/compile/internal/ssa" "cmd/compile/internal/staticdata" "cmd/compile/internal/typecheck" @@ -4894,22 +4895,22 @@ func InitTables() { func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { return s.newValue2(ssa.OpRotateLeft8, types.Types[types.TUINT8], args[0], args[1]) }, - sys.AMD64) + sys.AMD64, sys.RISCV64) addF("math/bits", "RotateLeft16", func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { return s.newValue2(ssa.OpRotateLeft16, types.Types[types.TUINT16], args[0], args[1]) }, - sys.AMD64) + sys.AMD64, sys.RISCV64) addF("math/bits", "RotateLeft32", func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { return s.newValue2(ssa.OpRotateLeft32, types.Types[types.TUINT32], args[0], args[1]) }, - sys.AMD64, sys.ARM, sys.ARM64, sys.S390X, sys.PPC64, sys.Wasm, sys.Loong64) + sys.AMD64, sys.ARM, sys.ARM64, sys.Loong64, sys.PPC64, sys.RISCV64, sys.S390X, sys.Wasm) addF("math/bits", "RotateLeft64", func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { return s.newValue2(ssa.OpRotateLeft64, types.Types[types.TUINT64], args[0], args[1]) }, - sys.AMD64, sys.ARM64, sys.S390X, sys.PPC64, sys.Wasm, sys.Loong64) + sys.AMD64, sys.ARM64, sys.Loong64, sys.PPC64, sys.RISCV64, sys.S390X, sys.Wasm) alias("math/bits", "RotateLeft", "math/bits", "RotateLeft64", p8...) makeOnesCountAMD64 := func(op ssa.Op) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { @@ -5537,7 +5538,7 @@ func (s *state) getClosureAndRcvr(fn *ir.SelectorExpr) (*ssa.Value, *ssa.Value) i := s.expr(fn.X) itab := s.newValue1(ssa.OpITab, types.Types[types.TUINTPTR], i) s.nilCheck(itab) - itabidx := fn.Offset() + 2*int64(types.PtrSize) + 8 // offset of fun field in runtime.itab + itabidx := fn.Offset() + rttype.ITab.OffsetOf("Fun") closure := s.newValue1I(ssa.OpOffPtr, s.f.Config.Types.UintptrPtr, itabidx, itab) rcvr := s.newValue1(ssa.OpIData, s.f.Config.Types.BytePtr, i) return closure, rcvr @@ -6522,7 +6523,7 @@ func (s *state) dynamicDottype(n *ir.DynamicTypeAssertExpr, commaok bool) (res, targetItab = s.expr(n.ITab) // TODO(mdempsky): Investigate whether compiling n.RType could be // better than loading itab.typ. - target = s.load(byteptr, s.newValue1I(ssa.OpOffPtr, byteptr, int64(types.PtrSize), targetItab)) // itab.typ + target = s.load(byteptr, s.newValue1I(ssa.OpOffPtr, byteptr, rttype.ITab.OffsetOf("Type"), targetItab)) } else { target = s.expr(n.RType) } @@ -6580,7 +6581,7 @@ func (s *state) dottype1(pos src.XPos, src, dst *types.Type, iface, source, targ return } // Load type out of itab, build interface with existing idata. - off := s.newValue1I(ssa.OpOffPtr, byteptr, int64(types.PtrSize), itab) + off := s.newValue1I(ssa.OpOffPtr, byteptr, rttype.ITab.OffsetOf("Type"), itab) typ := s.load(byteptr, off) idata := s.newValue1(ssa.OpIData, byteptr, iface) res = s.newValue2(ssa.OpIMake, dst, typ, idata) @@ -6590,7 +6591,7 @@ func (s *state) dottype1(pos src.XPos, src, dst *types.Type, iface, source, targ s.startBlock(bOk) // nonempty -> empty // Need to load type from itab - off := s.newValue1I(ssa.OpOffPtr, byteptr, int64(types.PtrSize), itab) + off := s.newValue1I(ssa.OpOffPtr, byteptr, rttype.ITab.OffsetOf("Type"), itab) s.vars[typVar] = s.load(byteptr, off) s.endBlock() @@ -6644,7 +6645,7 @@ func (s *state) dottype1(pos src.XPos, src, dst *types.Type, iface, source, targ s.startBlock(bNonNil) typ := itab if !src.IsEmptyInterface() { - typ = s.load(byteptr, s.newValue1I(ssa.OpOffPtr, byteptr, int64(types.PtrSize), itab)) + typ = s.load(byteptr, s.newValue1I(ssa.OpOffPtr, byteptr, rttype.ITab.OffsetOf("Type"), itab)) } // Check the cache first. @@ -6685,9 +6686,9 @@ func (s *state) dottype1(pos src.XPos, src, dst *types.Type, iface, source, targ // Load hash from type or itab. var hash *ssa.Value if src.IsEmptyInterface() { - hash = s.newValue2(ssa.OpLoad, typs.UInt32, s.newValue1I(ssa.OpOffPtr, typs.UInt32Ptr, 2*s.config.PtrSize, typ), s.mem()) + hash = s.newValue2(ssa.OpLoad, typs.UInt32, s.newValue1I(ssa.OpOffPtr, typs.UInt32Ptr, rttype.Type.OffsetOf("Hash"), typ), s.mem()) } else { - hash = s.newValue2(ssa.OpLoad, typs.UInt32, s.newValue1I(ssa.OpOffPtr, typs.UInt32Ptr, 2*s.config.PtrSize, itab), s.mem()) + hash = s.newValue2(ssa.OpLoad, typs.UInt32, s.newValue1I(ssa.OpOffPtr, typs.UInt32Ptr, rttype.ITab.OffsetOf("Hash"), itab), s.mem()) } hash = s.newValue1(zext, typs.Uintptr, hash) s.vars[hashVar] = hash @@ -7380,7 +7381,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { if b.Pos == src.NoXPos { b.Pos = p.Pos // It needs a file, otherwise a no-file non-zero line causes confusion. See #35652. if b.Pos == src.NoXPos { - b.Pos = pp.Text.Pos // Sometimes p.Pos is empty. See #35695. + b.Pos = s.pp.Text.Pos // Sometimes p.Pos is empty. See #35695. } } b.Pos = b.Pos.WithBogusLine() // Debuggers are not good about infinite loops, force a change in line number @@ -7415,14 +7416,14 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // still be inside the function in question. So if // it ends in a call which doesn't return, add a // nop (which will never execute) after the call. - Arch.Ginsnop(pp) + Arch.Ginsnop(s.pp) } if openDeferInfo != nil { // When doing open-coded defers, generate a disconnected call to // deferreturn and a return. This will be used to during panic // recovery to unwind the stack and return back to the runtime. s.pp.NextLive = s.livenessMap.DeferReturn - p := pp.Prog(obj.ACALL) + p := s.pp.Prog(obj.ACALL) p.To.Type = obj.TYPE_MEM p.To.Name = obj.NAME_EXTERN p.To.Sym = ir.Syms.Deferreturn @@ -7439,7 +7440,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { } } - pp.Prog(obj.ARET) + s.pp.Prog(obj.ARET) } if inlMarks != nil { @@ -7448,7 +7449,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // We have some inline marks. Try to find other instructions we're // going to emit anyway, and use those instructions instead of the // inline marks. - for p := pp.Text; p != nil; p = p.Link { + for p := s.pp.Text; p != nil; p = p.Link { if p.As == obj.ANOP || p.As == obj.AFUNCDATA || p.As == obj.APCDATA || p.As == obj.ATEXT || p.As == obj.APCALIGN || Arch.LinkArch.Family == sys.Wasm { // Don't use 0-sized instructions as inline marks, because we need // to identify inline mark instructions by pc offset. @@ -7466,16 +7467,16 @@ func genssa(f *ssa.Func, pp *objw.Progs) { hasCall = true } pos := p.Pos.AtColumn1() - s := inlMarksByPos[pos] - if len(s) == 0 { + marks := inlMarksByPos[pos] + if len(marks) == 0 { continue } - for _, m := range s { + for _, m := range marks { // We found an instruction with the same source position as // some of the inline marks. // Use this instruction instead. p.Pos = p.Pos.WithIsStmt() // promote position to a statement - pp.CurFunc.LSym.Func().AddInlMark(p, inlMarks[m]) + s.pp.CurFunc.LSym.Func().AddInlMark(p, inlMarks[m]) // Make the inline mark a real nop, so it doesn't generate any code. m.As = obj.ANOP m.Pos = src.NoXPos @@ -7487,7 +7488,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // Any unmatched inline marks now need to be added to the inlining tree (and will generate a nop instruction). for _, p := range inlMarkList { if p.As != obj.ANOP { - pp.CurFunc.LSym.Func().AddInlMark(p, inlMarks[p]) + s.pp.CurFunc.LSym.Func().AddInlMark(p, inlMarks[p]) } } @@ -7498,27 +7499,27 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // equal to the start of the function. // This ensures that runtime.FuncForPC(uintptr(reflect.ValueOf(fn).Pointer())).Name() // returns the right answer. See issue 58300. - for p := pp.Text; p != nil; p = p.Link { + for p := s.pp.Text; p != nil; p = p.Link { if p.As == obj.AFUNCDATA || p.As == obj.APCDATA || p.As == obj.ATEXT || p.As == obj.ANOP { continue } if base.Ctxt.PosTable.Pos(p.Pos).Base().InliningIndex() >= 0 { // Make a real (not 0-sized) nop. - nop := Arch.Ginsnop(pp) + nop := Arch.Ginsnop(s.pp) nop.Pos = e.curfn.Pos().WithIsStmt() // Unfortunately, Ginsnop puts the instruction at the // end of the list. Move it up to just before p. // Unlink from the current list. - for x := pp.Text; x != nil; x = x.Link { + for x := s.pp.Text; x != nil; x = x.Link { if x.Link == nop { x.Link = nop.Link break } } // Splice in right before p. - for x := pp.Text; x != nil; x = x.Link { + for x := s.pp.Text; x != nil; x = x.Link { if x.Link == p { nop.Link = p x.Link = nop @@ -7588,13 +7589,13 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // Add to list of jump tables to be resolved at assembly time. // The assembler converts from *Prog entries to absolute addresses // once it knows instruction byte offsets. - fi := pp.CurFunc.LSym.Func() + fi := s.pp.CurFunc.LSym.Func() fi.JumpTables = append(fi.JumpTables, obj.JumpTable{Sym: jt.Aux.(*obj.LSym), Targets: targets}) } if e.log { // spew to stdout filename := "" - for p := pp.Text; p != nil; p = p.Link { + for p := s.pp.Text; p != nil; p = p.Link { if p.Pos.IsKnown() && p.InnermostFilename() != filename { filename = p.InnermostFilename() f.Logf("# %s\n", filename) @@ -7616,7 +7617,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { buf.WriteString("") buf.WriteString("
") filename := "" - for p := pp.Text; p != nil; p = p.Link { + for p := s.pp.Text; p != nil; p = p.Link { // Don't spam every line with the file name, which is often huge. // Only print changes, and "unknown" is not a change. if p.Pos.IsKnown() && p.InnermostFilename() != filename { @@ -7664,7 +7665,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { var allPosOld []src.Pos var allPos []src.Pos - for p := pp.Text; p != nil; p = p.Link { + for p := s.pp.Text; p != nil; p = p.Link { if p.Pos.IsKnown() { allPos = allPos[:0] p.Ctxt.AllPos(p.Pos, func(pos src.Pos) { allPos = append(allPos, pos) }) diff --git a/src/cmd/compile/internal/test/pgo_devirtualize_test.go b/src/cmd/compile/internal/test/pgo_devirtualize_test.go index c457478a1f..af09107dc0 100644 --- a/src/cmd/compile/internal/test/pgo_devirtualize_test.go +++ b/src/cmd/compile/internal/test/pgo_devirtualize_test.go @@ -14,8 +14,16 @@ import ( "testing" ) +type devirtualization struct { + pos string + callee string +} + +const profFileName = "devirt.pprof" +const preProfFileName = "devirt.pprof.node_map" + // testPGODevirtualize tests that specific PGO devirtualize rewrites are performed. -func testPGODevirtualize(t *testing.T, dir string) { +func testPGODevirtualize(t *testing.T, dir string, want []devirtualization, pgoProfileName string) { testenv.MustHaveGoRun(t) t.Parallel() @@ -23,7 +31,7 @@ func testPGODevirtualize(t *testing.T, dir string) { // Add a go.mod so we have a consistent symbol names in this temp dir. goMod := fmt.Sprintf(`module %s -go 1.19 +go 1.21 `, pkg) if err := os.WriteFile(filepath.Join(dir, "go.mod"), []byte(goMod), 0644); err != nil { t.Fatalf("error writing go.mod: %v", err) @@ -40,7 +48,7 @@ go 1.19 } // Build the test with the profile. - pprof := filepath.Join(dir, "devirt.pprof") + pprof := filepath.Join(dir, pgoProfileName) gcflag := fmt.Sprintf("-gcflags=-m=2 -pgoprofile=%s -d=pgodebug=3", pprof) out := filepath.Join(dir, "test.exe") cmd = testenv.CleanCmdEnv(testenv.Command(t, testenv.GoToolPath(t), "test", "-o", out, gcflag, ".")) @@ -60,51 +68,6 @@ go 1.19 t.Fatalf("error starting go test: %v", err) } - type devirtualization struct { - pos string - callee string - } - - want := []devirtualization{ - // ExerciseIface - { - pos: "./devirt.go:101:20", - callee: "mult.Mult.Multiply", - }, - { - pos: "./devirt.go:101:39", - callee: "Add.Add", - }, - // ExerciseFuncConcrete - { - pos: "./devirt.go:173:36", - callee: "AddFn", - }, - { - pos: "./devirt.go:173:15", - callee: "mult.MultFn", - }, - // ExerciseFuncField - { - pos: "./devirt.go:207:35", - callee: "AddFn", - }, - { - pos: "./devirt.go:207:19", - callee: "mult.MultFn", - }, - // ExerciseFuncClosure - // TODO(prattmic): Closure callees not implemented. - //{ - // pos: "./devirt.go:249:27", - // callee: "AddClosure.func1", - //}, - //{ - // pos: "./devirt.go:249:15", - // callee: "mult.MultClosure.func1", - //}, - } - got := make(map[devirtualization]struct{}) devirtualizedLine := regexp.MustCompile(`(.*): PGO devirtualizing \w+ call .* to (.*)`) @@ -166,11 +129,199 @@ func TestPGODevirtualize(t *testing.T) { if err := os.Mkdir(filepath.Join(dir, "mult.pkg"), 0755); err != nil { t.Fatalf("error creating dir: %v", err) } - for _, file := range []string{"devirt.go", "devirt_test.go", "devirt.pprof", filepath.Join("mult.pkg", "mult.go")} { + for _, file := range []string{"devirt.go", "devirt_test.go", profFileName, filepath.Join("mult.pkg", "mult.go")} { if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { t.Fatalf("error copying %s: %v", file, err) } } - testPGODevirtualize(t, dir) + want := []devirtualization{ + // ExerciseIface + { + pos: "./devirt.go:101:20", + callee: "mult.Mult.Multiply", + }, + { + pos: "./devirt.go:101:39", + callee: "Add.Add", + }, + // ExerciseFuncConcrete + { + pos: "./devirt.go:173:36", + callee: "AddFn", + }, + { + pos: "./devirt.go:173:15", + callee: "mult.MultFn", + }, + // ExerciseFuncField + { + pos: "./devirt.go:207:35", + callee: "AddFn", + }, + { + pos: "./devirt.go:207:19", + callee: "mult.MultFn", + }, + // ExerciseFuncClosure + // TODO(prattmic): Closure callees not implemented. + //{ + // pos: "./devirt.go:249:27", + // callee: "AddClosure.func1", + //}, + //{ + // pos: "./devirt.go:249:15", + // callee: "mult.MultClosure.func1", + //}, + } + + testPGODevirtualize(t, dir, want, profFileName) +} + +// TestPGOPreprocessDevirtualize tests that specific functions are devirtualized when PGO +// is applied to the exact source that was profiled. The input profile is PGO preprocessed file. +func TestPGOPreprocessDevirtualize(t *testing.T) { + wd, err := os.Getwd() + if err != nil { + t.Fatalf("error getting wd: %v", err) + } + srcDir := filepath.Join(wd, "testdata", "pgo", "devirtualize") + + // Copy the module to a scratch location so we can add a go.mod. + dir := t.TempDir() + if err := os.Mkdir(filepath.Join(dir, "mult.pkg"), 0755); err != nil { + t.Fatalf("error creating dir: %v", err) + } + for _, file := range []string{"devirt.go", "devirt_test.go", preProfFileName, filepath.Join("mult.pkg", "mult.go")} { + if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { + t.Fatalf("error copying %s: %v", file, err) + } + } + + want := []devirtualization{ + // ExerciseIface + { + pos: "./devirt.go:101:20", + callee: "mult.Mult.Multiply", + }, + { + pos: "./devirt.go:101:39", + callee: "Add.Add", + }, + // ExerciseFuncConcrete + { + pos: "./devirt.go:173:36", + callee: "AddFn", + }, + { + pos: "./devirt.go:173:15", + callee: "mult.MultFn", + }, + // ExerciseFuncField + { + pos: "./devirt.go:207:35", + callee: "AddFn", + }, + { + pos: "./devirt.go:207:19", + callee: "mult.MultFn", + }, + // ExerciseFuncClosure + // TODO(prattmic): Closure callees not implemented. + //{ + // pos: "./devirt.go:249:27", + // callee: "AddClosure.func1", + //}, + //{ + // pos: "./devirt.go:249:15", + // callee: "mult.MultClosure.func1", + //}, + } + + testPGODevirtualize(t, dir, want, preProfFileName) +} + +// Regression test for https://go.dev/issue/65615. If a target function changes +// from non-generic to generic we can't devirtualize it (don't know the type +// parameters), but the compiler should not crash. +func TestLookupFuncGeneric(t *testing.T) { + wd, err := os.Getwd() + if err != nil { + t.Fatalf("error getting wd: %v", err) + } + srcDir := filepath.Join(wd, "testdata", "pgo", "devirtualize") + + // Copy the module to a scratch location so we can add a go.mod. + dir := t.TempDir() + if err := os.Mkdir(filepath.Join(dir, "mult.pkg"), 0755); err != nil { + t.Fatalf("error creating dir: %v", err) + } + for _, file := range []string{"devirt.go", "devirt_test.go", profFileName, filepath.Join("mult.pkg", "mult.go")} { + if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { + t.Fatalf("error copying %s: %v", file, err) + } + } + + // Change MultFn from a concrete function to a parameterized function. + if err := convertMultToGeneric(filepath.Join(dir, "mult.pkg", "mult.go")); err != nil { + t.Fatalf("error editing mult.go: %v", err) + } + + // Same as TestPGODevirtualize except for MultFn, which we cannot + // devirtualize to because it has become generic. + // + // Note that the important part of this test is that the build is + // successful, not the specific devirtualizations. + want := []devirtualization{ + // ExerciseIface + { + pos: "./devirt.go:101:20", + callee: "mult.Mult.Multiply", + }, + { + pos: "./devirt.go:101:39", + callee: "Add.Add", + }, + // ExerciseFuncConcrete + { + pos: "./devirt.go:173:36", + callee: "AddFn", + }, + // ExerciseFuncField + { + pos: "./devirt.go:207:35", + callee: "AddFn", + }, + // ExerciseFuncClosure + // TODO(prattmic): Closure callees not implemented. + //{ + // pos: "./devirt.go:249:27", + // callee: "AddClosure.func1", + //}, + //{ + // pos: "./devirt.go:249:15", + // callee: "mult.MultClosure.func1", + //}, + } + + testPGODevirtualize(t, dir, want, profFileName) +} + +var multFnRe = regexp.MustCompile(`func MultFn\(a, b int64\) int64`) + +func convertMultToGeneric(path string) error { + content, err := os.ReadFile(path) + if err != nil { + return fmt.Errorf("error opening: %w", err) + } + + if !multFnRe.Match(content) { + return fmt.Errorf("MultFn not found; update regexp?") + } + + // Users of MultFn shouldn't need adjustment, type inference should + // work OK. + content = multFnRe.ReplaceAll(content, []byte(`func MultFn[T int32|int64](a, b T) T`)) + + return os.WriteFile(path, content, 0644) } diff --git a/src/cmd/compile/internal/test/pgo_inl_test.go b/src/cmd/compile/internal/test/pgo_inl_test.go index da6c4a53d3..7d665655d5 100644 --- a/src/cmd/compile/internal/test/pgo_inl_test.go +++ b/src/cmd/compile/internal/test/pgo_inl_test.go @@ -18,6 +18,9 @@ import ( "testing" ) +const profFile = "inline_hot.pprof" +const preProfFile = "inline_hot.pprof.node_map" + func buildPGOInliningTest(t *testing.T, dir string, gcflag string) []byte { const pkg = "example.com/pgo/inline" @@ -43,7 +46,7 @@ go 1.19 } // testPGOIntendedInlining tests that specific functions are inlined. -func testPGOIntendedInlining(t *testing.T, dir string) { +func testPGOIntendedInlining(t *testing.T, dir string, profFile string) { testenv.MustHaveGoRun(t) t.Parallel() @@ -86,8 +89,7 @@ func testPGOIntendedInlining(t *testing.T, dir string) { // Build the test with the profile. Use a smaller threshold to test. // TODO: maybe adjust the test to work with default threshold. - pprof := filepath.Join(dir, "inline_hot.pprof") - gcflag := fmt.Sprintf("-m -m -pgoprofile=%s -d=pgoinlinebudget=160,pgoinlinecdfthreshold=90", pprof) + gcflag := fmt.Sprintf("-m -m -pgoprofile=%s -d=pgoinlinebudget=160,pgoinlinecdfthreshold=90", profFile) out := buildPGOInliningTest(t, dir, gcflag) scanner := bufio.NewScanner(bytes.NewReader(out)) @@ -155,13 +157,34 @@ func TestPGOIntendedInlining(t *testing.T) { // Copy the module to a scratch location so we can add a go.mod. dir := t.TempDir() - for _, file := range []string{"inline_hot.go", "inline_hot_test.go", "inline_hot.pprof"} { + for _, file := range []string{"inline_hot.go", "inline_hot_test.go", profFile} { if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { t.Fatalf("error copying %s: %v", file, err) } } - testPGOIntendedInlining(t, dir) + testPGOIntendedInlining(t, dir, profFile) +} + +// TestPGOIntendedInlining tests that specific functions are inlined when PGO +// is applied to the exact source that was profiled. +func TestPGOPreprocessInlining(t *testing.T) { + wd, err := os.Getwd() + if err != nil { + t.Fatalf("error getting wd: %v", err) + } + srcDir := filepath.Join(wd, "testdata/pgo/inline") + + // Copy the module to a scratch location so we can add a go.mod. + dir := t.TempDir() + + for _, file := range []string{"inline_hot.go", "inline_hot_test.go", preProfFile} { + if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { + t.Fatalf("error copying %s: %v", file, err) + } + } + + testPGOIntendedInlining(t, dir, preProfFile) } // TestPGOIntendedInlining tests that specific functions are inlined when PGO @@ -177,7 +200,7 @@ func TestPGOIntendedInliningShiftedLines(t *testing.T) { dir := t.TempDir() // Copy most of the files unmodified. - for _, file := range []string{"inline_hot_test.go", "inline_hot.pprof"} { + for _, file := range []string{"inline_hot_test.go", profFile} { if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { t.Fatalf("error copying %s : %v", file, err) } @@ -209,7 +232,7 @@ func TestPGOIntendedInliningShiftedLines(t *testing.T) { dst.Close() - testPGOIntendedInlining(t, dir) + testPGOIntendedInlining(t, dir, profFile) } // TestPGOSingleIndex tests that the sample index can not be 1 and compilation @@ -239,15 +262,15 @@ func TestPGOSingleIndex(t *testing.T) { // Copy the module to a scratch location so we can add a go.mod. dir := t.TempDir() - originalPprofFile, err := os.Open(filepath.Join(srcDir, "inline_hot.pprof")) + originalPprofFile, err := os.Open(filepath.Join(srcDir, profFile)) if err != nil { - t.Fatalf("error opening inline_hot.pprof: %v", err) + t.Fatalf("error opening %v: %v", profFile, err) } defer originalPprofFile.Close() p, err := profile.Parse(originalPprofFile) if err != nil { - t.Fatalf("error parsing inline_hot.pprof: %v", err) + t.Fatalf("error parsing %v: %v", profFile, err) } // Move the samples count value-type to the 0 index. @@ -258,14 +281,14 @@ func TestPGOSingleIndex(t *testing.T) { s.Value = []int64{s.Value[tc.originalIndex]} } - modifiedPprofFile, err := os.Create(filepath.Join(dir, "inline_hot.pprof")) + modifiedPprofFile, err := os.Create(filepath.Join(dir, profFile)) if err != nil { - t.Fatalf("error creating inline_hot.pprof: %v", err) + t.Fatalf("error creating %v: %v", profFile, err) } defer modifiedPprofFile.Close() if err := p.Write(modifiedPprofFile); err != nil { - t.Fatalf("error writing inline_hot.pprof: %v", err) + t.Fatalf("error writing %v: %v", profFile, err) } for _, file := range []string{"inline_hot.go", "inline_hot_test.go"} { @@ -274,7 +297,7 @@ func TestPGOSingleIndex(t *testing.T) { } } - testPGOIntendedInlining(t, dir) + testPGOIntendedInlining(t, dir, profFile) }) } } @@ -312,13 +335,13 @@ func TestPGOHash(t *testing.T) { // Copy the module to a scratch location so we can add a go.mod. dir := t.TempDir() - for _, file := range []string{"inline_hot.go", "inline_hot_test.go", "inline_hot.pprof"} { + for _, file := range []string{"inline_hot.go", "inline_hot_test.go", profFile} { if err := copyFile(filepath.Join(dir, file), filepath.Join(srcDir, file)); err != nil { t.Fatalf("error copying %s: %v", file, err) } } - pprof := filepath.Join(dir, "inline_hot.pprof") + pprof := filepath.Join(dir, profFile) // build with -trimpath so the source location (thus the hash) // does not depend on the temporary directory path. gcflag0 := fmt.Sprintf("-pgoprofile=%s -trimpath %s=>%s -d=pgoinlinebudget=160,pgoinlinecdfthreshold=90,pgodebug=1", pprof, dir, pkg) diff --git a/src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt.pprof.node_map b/src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt.pprof.node_map new file mode 100644 index 0000000000..c55f990e84 --- /dev/null +++ b/src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt.pprof.node_map @@ -0,0 +1,52 @@ +GO PREPROFILE V1 +example.com/pgo/devirtualize.ExerciseFuncClosure +example.com/pgo/devirtualize/mult%2epkg.MultClosure.func1 +18 93 +example.com/pgo/devirtualize.ExerciseIface +example.com/pgo/devirtualize/mult%2epkg.NegMult.Multiply +49 4 +example.com/pgo/devirtualize.ExerciseFuncConcrete +example.com/pgo/devirtualize.AddFn +48 103 +example.com/pgo/devirtualize.ExerciseFuncField +example.com/pgo/devirtualize/mult%2epkg.NegMultFn +23 8 +example.com/pgo/devirtualize.ExerciseFuncField +example.com/pgo/devirtualize/mult%2epkg.MultFn +23 94 +example.com/pgo/devirtualize.ExerciseIface +example.com/pgo/devirtualize/mult%2epkg.Mult.Multiply +49 40 +example.com/pgo/devirtualize.ExerciseIface +example.com/pgo/devirtualize.Add.Add +49 55 +example.com/pgo/devirtualize.ExerciseFuncConcrete +example.com/pgo/devirtualize/mult%2epkg.NegMultFn +48 8 +example.com/pgo/devirtualize.ExerciseFuncClosure +example.com/pgo/devirtualize/mult%2epkg.NegMultClosure.func1 +18 10 +example.com/pgo/devirtualize.ExerciseIface +example.com/pgo/devirtualize.Sub.Add +49 7 +example.com/pgo/devirtualize.ExerciseFuncField +example.com/pgo/devirtualize.AddFn +23 101 +example.com/pgo/devirtualize.ExerciseFuncField +example.com/pgo/devirtualize.SubFn +23 12 +example.com/pgo/devirtualize.BenchmarkDevirtFuncConcrete +example.com/pgo/devirtualize.ExerciseFuncConcrete +1 2 +example.com/pgo/devirtualize.ExerciseFuncConcrete +example.com/pgo/devirtualize/mult%2epkg.MultFn +48 91 +example.com/pgo/devirtualize.ExerciseFuncConcrete +example.com/pgo/devirtualize.SubFn +48 5 +example.com/pgo/devirtualize.ExerciseFuncClosure +example.com/pgo/devirtualize.Add.Add +18 92 +example.com/pgo/devirtualize.ExerciseFuncClosure +example.com/pgo/devirtualize.Sub.Add +18 14 diff --git a/src/cmd/compile/internal/test/testdata/pgo/inline/inline_hot.pprof.node_map b/src/cmd/compile/internal/test/testdata/pgo/inline/inline_hot.pprof.node_map new file mode 100644 index 0000000000..6e5f937a50 --- /dev/null +++ b/src/cmd/compile/internal/test/testdata/pgo/inline/inline_hot.pprof.node_map @@ -0,0 +1,13 @@ +GO PREPROFILE V1 +example.com/pgo/inline.benchmarkB +example.com/pgo/inline.A +18 1 +example.com/pgo/inline.(*BS).NS +example.com/pgo/inline.T +8 3 +example.com/pgo/inline.(*BS).NS +example.com/pgo/inline.T +13 2 +example.com/pgo/inline.A +example.com/pgo/inline.(*BS).NS +7 129 diff --git a/src/cmd/compile/internal/types/goversion.go b/src/cmd/compile/internal/types/goversion.go index c57493a5cb..ac08a49d0c 100644 --- a/src/cmd/compile/internal/types/goversion.go +++ b/src/cmd/compile/internal/types/goversion.go @@ -34,7 +34,7 @@ func AllowsGoVersion(major, minor int) bool { } // ParseLangFlag verifies that the -lang flag holds a valid value, and -// exits if not. It initializes data used by langSupported. +// exits if not. It initializes data used by AllowsGoVersion. func ParseLangFlag() { if base.Flag.Lang == "" { return @@ -59,6 +59,10 @@ func ParseLangFlag() { // parseLang parses a -lang option into a langVer. func parseLang(s string) (lang, error) { + if s == "go1" { // cmd/go's new spelling of "go1.0" (#65528) + s = "go1.0" + } + matches := goVersionRE.FindStringSubmatch(s) if matches == nil { return lang{}, fmt.Errorf(`should be something like "go1.12"`) diff --git a/src/cmd/compile/internal/types2/alias.go b/src/cmd/compile/internal/types2/alias.go index 2cc57721f9..06dfba1697 100644 --- a/src/cmd/compile/internal/types2/alias.go +++ b/src/cmd/compile/internal/types2/alias.go @@ -21,11 +21,14 @@ type Alias struct { // NewAlias creates a new Alias type with the given type name and rhs. // rhs must not be nil. func NewAlias(obj *TypeName, rhs Type) *Alias { - return (*Checker)(nil).newAlias(obj, rhs) + alias := (*Checker)(nil).newAlias(obj, rhs) + // Ensure that alias.actual is set (#65455). + unalias(alias) + return alias } func (a *Alias) Obj() *TypeName { return a.obj } -func (a *Alias) Underlying() Type { return a.actual.Underlying() } +func (a *Alias) Underlying() Type { return unalias(a).Underlying() } func (a *Alias) String() string { return TypeString(a, nil) } // Type accessors @@ -36,24 +39,26 @@ func (a *Alias) String() string { return TypeString(a, nil) } // Consequently, the result is never an alias type. func Unalias(t Type) Type { if a0, _ := t.(*Alias); a0 != nil { - if a0.actual != nil { - return a0.actual - } - for a := a0; ; { - t = a.fromRHS - a, _ = t.(*Alias) - if a == nil { - break - } - } - if t == nil { - panic(fmt.Sprintf("non-terminated alias %s", a0.obj.name)) - } - a0.actual = t + return unalias(a0) } return t } +func unalias(a0 *Alias) Type { + if a0.actual != nil { + return a0.actual + } + var t Type + for a := a0; a != nil; a, _ = t.(*Alias) { + t = a.fromRHS + } + if t == nil { + panic(fmt.Sprintf("non-terminated alias %s", a0.obj.name)) + } + a0.actual = t + return t +} + // asNamed returns t as *Named if that is t's // actual type. It returns nil otherwise. func asNamed(t Type) *Named { diff --git a/src/cmd/compile/internal/types2/api_test.go b/src/cmd/compile/internal/types2/api_test.go index c70d914453..bacba71955 100644 --- a/src/cmd/compile/internal/types2/api_test.go +++ b/src/cmd/compile/internal/types2/api_test.go @@ -2195,6 +2195,12 @@ func TestIssue61737(t *testing.T) { iface.NumMethods() // unlike go/types, there is no Complete() method, so we complete implicitly } +func TestNewAlias_Issue65455(t *testing.T) { + obj := NewTypeName(nopos, nil, "A", nil) + alias := NewAlias(obj, Typ[Int]) + alias.Underlying() // must not panic +} + func TestIssue15305(t *testing.T) { const src = "package p; func f() int16; var _ = f(undef)" f := mustParse(src) diff --git a/src/cmd/compile/internal/types2/builtins.go b/src/cmd/compile/internal/types2/builtins.go index bb89246b7d..5db3ae2fa4 100644 --- a/src/cmd/compile/internal/types2/builtins.go +++ b/src/cmd/compile/internal/types2/builtins.go @@ -22,7 +22,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( // append is the only built-in that permits the use of ... for the last argument bin := predeclaredFuncs[id] - if call.HasDots && id != _Append { + if hasDots(call) && id != _Append { //check.errorf(call.Ellipsis, invalidOp + "invalid use of ... with built-in %s", bin.name) check.errorf(call, InvalidDotDotDot, @@ -114,7 +114,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( // spec: "As a special case, append also accepts a first argument assignable // to type []byte with a second argument of string type followed by ... . // This form appends the bytes of the string. - if nargs == 2 && call.HasDots { + if nargs == 2 && hasDots(call) { if ok, _ := x.assignableTo(check, NewSlice(universeByte), nil); ok { y := args[1] if t := coreString(y.typ); t != nil && isString(t) { @@ -1034,14 +1034,3 @@ func arrayPtrDeref(typ Type) Type { } return typ } - -// unparen returns e with any enclosing parentheses stripped. -func unparen(e syntax.Expr) syntax.Expr { - for { - p, ok := e.(*syntax.ParenExpr) - if !ok { - return e - } - e = p.X - } -} diff --git a/src/cmd/compile/internal/types2/call.go b/src/cmd/compile/internal/types2/call.go index 0ad58e0772..7e4cf8974f 100644 --- a/src/cmd/compile/internal/types2/call.go +++ b/src/cmd/compile/internal/types2/call.go @@ -209,7 +209,7 @@ func (check *Checker) callExpr(x *operand, call *syntax.CallExpr) exprKind { break } } - if call.HasDots { + if hasDots(call) { check.errorf(call.ArgList[0], BadDotDotDotSyntax, "invalid use of ... in conversion to %s", T) break } @@ -468,7 +468,7 @@ func (check *Checker) arguments(call *syntax.CallExpr, sig *Signature, targs []T nargs := len(args) npars := sig.params.Len() - ddd := call.HasDots + ddd := hasDots(call) // set up parameters sigParams := sig.params // adjusted for variadic functions (may be nil for empty parameter lists!) @@ -824,22 +824,8 @@ func (check *Checker) selector(x *operand, e *syntax.SelectorExpr, def *TypeName if isInterfacePtr(x.typ) { why = check.interfacePtrError(x.typ) } else { - why = check.sprintf("type %s has no field or method %s", x.typ, sel) - // check if there's a field or method with different capitalization - if obj, _, _ = lookupFieldOrMethod(x.typ, x.mode == variable, check.pkg, sel, true); obj != nil { - var what string // empty or description with trailing space " " (default case, should never be reached) - switch obj.(type) { - case *Var: - what = "field " - case *Func: - what = "method " - } - if samePkg(obj.Pkg(), check.pkg) || obj.Exported() { - why = check.sprintf("%s, but does have %s%s", why, what, obj.Name()) - } else if obj.Name() == sel { - why = check.sprintf("%s%s is not exported", what, obj.Name()) - } - } + alt, _, _ := lookupFieldOrMethod(x.typ, x.mode == variable, check.pkg, sel, true) + why = check.lookupError(x.typ, sel, alt, false) } check.errorf(e.Sel, MissingFieldOrMethod, "%s.%s undefined (%s)", x.expr, sel, why) goto Error diff --git a/src/cmd/compile/internal/types2/errsupport.go b/src/cmd/compile/internal/types2/errsupport.go new file mode 100644 index 0000000000..168150f679 --- /dev/null +++ b/src/cmd/compile/internal/types2/errsupport.go @@ -0,0 +1,113 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file implements support functions for error messages. + +package types2 + +// lookupError returns a case-specific error when a lookup of selector sel in the +// given type fails but an object with alternative spelling (case folding) is found. +// If structLit is set, the error message is specifically for struct literal fields. +func (check *Checker) lookupError(typ Type, sel string, obj Object, structLit bool) string { + // Provide more detail if there is an unexported object, or one with different capitalization. + // If selector and object are in the same package (==), export doesn't matter, otherwise (!=) it does. + // Messages depend on whether it's a general lookup or a field lookup in a struct literal. + // + // case sel pkg have message (examples for general lookup) + // --------------------------------------------------------------------------------------------------------- + // ok x.Foo == Foo + // misspelled x.Foo == FoO type X has no field or method Foo, but does have field FoO + // misspelled x.Foo == foo type X has no field or method Foo, but does have field foo + // misspelled x.Foo == foO type X has no field or method Foo, but does have field foO + // + // misspelled x.foo == Foo type X has no field or method foo, but does have field Foo + // misspelled x.foo == FoO type X has no field or method foo, but does have field FoO + // ok x.foo == foo + // misspelled x.foo == foO type X has no field or method foo, but does have field foO + // + // ok x.Foo != Foo + // misspelled x.Foo != FoO type X has no field or method Foo, but does have field FoO + // unexported x.Foo != foo type X has no field or method Foo, but does have unexported field foo + // missing x.Foo != foO type X has no field or method Foo + // + // misspelled x.foo != Foo type X has no field or method foo, but does have field Foo + // missing x.foo != FoO type X has no field or method foo + // inaccessible x.foo != foo cannot refer to unexported field foo + // missing x.foo != foO type X has no field or method foo + + const ( + ok = iota + missing // no object found + misspelled // found object with different spelling + unexported // found object with name differing only in first letter + inaccessible // found object with matching name but inaccessible from the current package + ) + + // determine case + e := missing + var alt string // alternative spelling of selector; if any + if obj != nil { + alt = obj.Name() + if obj.Pkg() == check.pkg { + assert(alt != sel) // otherwise there is no lookup error + e = misspelled + } else if isExported(sel) { + if isExported(alt) { + e = misspelled + } else if tail(sel) == tail(alt) { + e = unexported + } + } else if isExported(alt) { + if tail(sel) == tail(alt) { + e = misspelled + } + } else if sel == alt { + e = inaccessible + } + } + + if structLit { + switch e { + case missing: + return check.sprintf("unknown field %s in struct literal of type %s", sel, typ) + case misspelled: + return check.sprintf("unknown field %s in struct literal of type %s, but does have %s", sel, typ, alt) + case unexported: + return check.sprintf("unknown field %s in struct literal of type %s, but does have unexported %s", sel, typ, alt) + case inaccessible: + return check.sprintf("cannot refer to unexported field %s in struct literal of type %s", alt, typ) + } + } else { + what := "object" + switch obj.(type) { + case *Var: + what = "field" + case *Func: + what = "method" + } + switch e { + case missing: + return check.sprintf("type %s has no field or method %s", typ, sel) + case misspelled: + return check.sprintf("type %s has no field or method %s, but does have %s %s", typ, sel, what, alt) + case unexported: + return check.sprintf("type %s has no field or method %s, but does have unexported %s %s", typ, sel, what, alt) + case inaccessible: + return check.sprintf("cannot refer to unexported %s %s", what, alt) + } + } + + panic("unreachable") +} + +// tail returns the string s without its first (UTF-8) character. +// If len(s) == 0, the result is s. +func tail(s string) string { + for i, _ := range s { + if i > 0 { + return s[i:] + } + } + return s +} diff --git a/src/cmd/compile/internal/types2/expr.go b/src/cmd/compile/internal/types2/expr.go index 9504207f24..d7d60cc73c 100644 --- a/src/cmd/compile/internal/types2/expr.go +++ b/src/cmd/compile/internal/types2/expr.go @@ -1184,9 +1184,14 @@ func (check *Checker) exprInternal(T *target, x *operand, e syntax.Expr, hint Ty check.errorf(kv, InvalidLitField, "invalid field name %s in struct literal", kv.Key) continue } - i := fieldIndex(utyp.fields, check.pkg, key.Value, false) + i := fieldIndex(fields, check.pkg, key.Value, false) if i < 0 { - check.errorf(kv.Key, MissingLitField, "unknown field %s in struct literal of type %s", key.Value, base) + var alt Object + if j := fieldIndex(fields, check.pkg, key.Value, true); j >= 0 { + alt = fields[j] + } + msg := check.lookupError(base, key.Value, alt, true) + check.error(kv.Key, MissingLitField, msg) continue } fld := fields[i] diff --git a/src/cmd/compile/internal/types2/lookup.go b/src/cmd/compile/internal/types2/lookup.go index 15e80a0b1b..5aa8091a5c 100644 --- a/src/cmd/compile/internal/types2/lookup.go +++ b/src/cmd/compile/internal/types2/lookup.go @@ -590,9 +590,9 @@ func fieldIndex(fields []*Var, pkg *Package, name string, foldCase bool) int { return -1 } -// lookupMethod returns the index of and method with matching package and name, or (-1, nil). +// methodIndex returns the index of and method with matching package and name, or (-1, nil). // See Object.sameId for the meaning of foldCase. -func lookupMethod(methods []*Func, pkg *Package, name string, foldCase bool) (int, *Func) { +func methodIndex(methods []*Func, pkg *Package, name string, foldCase bool) (int, *Func) { if name != "_" { for i, m := range methods { if m.sameId(pkg, name, foldCase) { diff --git a/src/cmd/compile/internal/types2/named.go b/src/cmd/compile/internal/types2/named.go index 893247de35..5d7bdc764f 100644 --- a/src/cmd/compile/internal/types2/named.go +++ b/src/cmd/compile/internal/types2/named.go @@ -6,6 +6,7 @@ package types2 import ( "cmd/compile/internal/syntax" + "strings" "sync" "sync/atomic" ) @@ -334,6 +335,12 @@ func (t *Named) NumMethods() int { // For an ordinary or instantiated type t, the receiver base type of this // method is the named type t. For an uninstantiated generic type t, each // method receiver is instantiated with its receiver type parameters. +// +// Methods are numbered deterministically: given the same list of source files +// presented to the type checker, or the same sequence of NewMethod and AddMethod +// calls, the mapping from method index to corresponding method remains the same. +// But the specific ordering is not specified and must not be relied on as it may +// change in the future. func (t *Named) Method(i int) *Func { t.resolve() @@ -444,15 +451,40 @@ func (t *Named) SetUnderlying(underlying Type) { } // AddMethod adds method m unless it is already in the method list. -// t must not have type arguments. +// The method must be in the same package as t, and t must not have +// type arguments. func (t *Named) AddMethod(m *Func) { + assert(samePkg(t.obj.pkg, m.pkg)) assert(t.inst == nil) t.resolve() - if i, _ := lookupMethod(t.methods, m.pkg, m.name, false); i < 0 { + if t.methodIndex(m.name, false) < 0 { t.methods = append(t.methods, m) } } +// methodIndex returns the index of the method with the given name. +// If foldCase is set, capitalization in the name is ignored. +// The result is negative if no such method exists. +func (t *Named) methodIndex(name string, foldCase bool) int { + if name == "_" { + return -1 + } + if foldCase { + for i, m := range t.methods { + if strings.EqualFold(m.name, name) { + return i + } + } + } else { + for i, m := range t.methods { + if m.name == name { + return i + } + } + } + return -1 +} + // TODO(gri) Investigate if Unalias can be moved to where underlying is set. func (t *Named) Underlying() Type { return Unalias(t.resolve().underlying) } func (t *Named) String() string { return TypeString(t, nil) } @@ -553,15 +585,16 @@ loop: func (n *Named) lookupMethod(pkg *Package, name string, foldCase bool) (int, *Func) { n.resolve() - // If n is an instance, we may not have yet instantiated all of its methods. - // Look up the method index in orig, and only instantiate method at the - // matching index (if any). - i, _ := lookupMethod(n.Origin().methods, pkg, name, foldCase) - if i < 0 { - return -1, nil + if samePkg(n.obj.pkg, pkg) || isExported(name) || foldCase { + // If n is an instance, we may not have yet instantiated all of its methods. + // Look up the method index in orig, and only instantiate method at the + // matching index (if any). + if i := n.Origin().methodIndex(name, foldCase); i >= 0 { + // For instances, m.Method(i) will be different from the orig method. + return i, n.Method(i) + } } - // For instances, m.Method(i) will be different from the orig method. - return i, n.Method(i) + return -1, nil } // context returns the type-checker context. diff --git a/src/cmd/compile/internal/types2/named_test.go b/src/cmd/compile/internal/types2/named_test.go index 705dcaee27..25aea26792 100644 --- a/src/cmd/compile/internal/types2/named_test.go +++ b/src/cmd/compile/internal/types2/named_test.go @@ -112,3 +112,51 @@ type Inst = *Tree[int] t.Errorf("Duplicate instances in cycle: %s (%p) -> %s (%p) -> %s (%p)", Inst, Inst, Node, Node, Tree, Tree) } } + +// TestMethodOrdering is a simple test verifying that the indices of methods of +// a named type remain the same as long as the same source and AddMethod calls +// are presented to the type checker in the same order (go.dev/issue/61298). +func TestMethodOrdering(t *testing.T) { + const src = ` +package p + +type T struct{} + +func (T) a() {} +func (T) c() {} +func (T) b() {} +` + // should get the same method order each time + var methods []string + for i := 0; i < 5; i++ { + // collect T methods as provided in src + pkg := mustTypecheck(src, nil, nil) + T := pkg.Scope().Lookup("T").Type().(*Named) + + // add a few more methods manually + for _, name := range []string{"foo", "bar", "bal"} { + m := NewFunc(nopos, pkg, name, nil /* don't care about signature */) + T.AddMethod(m) + } + + // check method order + if i == 0 { + // first round: collect methods in given order + methods = make([]string, T.NumMethods()) + for j := range methods { + methods[j] = T.Method(j).Name() + } + } else { + // successive rounds: methods must appear in the same order + if got := T.NumMethods(); got != len(methods) { + t.Errorf("got %d methods, want %d", got, len(methods)) + continue + } + for j, m := range methods { + if got := T.Method(j).Name(); got != m { + t.Errorf("got method %s, want %s", got, m) + } + } + } + } +} diff --git a/src/cmd/compile/internal/types2/typeset.go b/src/cmd/compile/internal/types2/typeset.go index a6ccfdb80c..bf07162a21 100644 --- a/src/cmd/compile/internal/types2/typeset.go +++ b/src/cmd/compile/internal/types2/typeset.go @@ -57,7 +57,7 @@ func (s *_TypeSet) Method(i int) *Func { return s.methods[i] } // LookupMethod returns the index of and method with matching package and name, or (-1, nil). func (s *_TypeSet) LookupMethod(pkg *Package, name string, foldCase bool) (int, *Func) { - return lookupMethod(s.methods, pkg, name, foldCase) + return methodIndex(s.methods, pkg, name, foldCase) } func (s *_TypeSet) String() string { diff --git a/src/cmd/compile/internal/types2/typexpr.go b/src/cmd/compile/internal/types2/typexpr.go index 81adcbd9cf..d131306a14 100644 --- a/src/cmd/compile/internal/types2/typexpr.go +++ b/src/cmd/compile/internal/types2/typexpr.go @@ -48,6 +48,20 @@ func (check *Checker) ident(x *operand, e *syntax.Name, def *TypeName, wantType } check.recordUse(e, obj) + // If we want a type but don't have one, stop right here and avoid potential problems + // with missing underlying types. This also gives better error messages in some cases + // (see go.dev/issue/65344). + _, gotType := obj.(*TypeName) + if !gotType && wantType { + check.errorf(e, NotAType, "%s is not a type", obj.Name()) + // avoid "declared but not used" errors + // (don't use Checker.use - we don't want to evaluate too much) + if v, _ := obj.(*Var); v != nil && v.pkg == check.pkg /* see Checker.use1 */ { + v.used = true + } + return + } + // Type-check the object. // Only call Checker.objDecl if the object doesn't have a type yet // (in which case we must actually determine it) or the object is a @@ -57,7 +71,7 @@ func (check *Checker) ident(x *operand, e *syntax.Name, def *TypeName, wantType // informative "not a type/value" error that this function's caller // will issue (see go.dev/issue/25790). typ := obj.Type() - if _, gotType := obj.(*TypeName); typ == nil || gotType && wantType { + if typ == nil || gotType && wantType { check.objDecl(obj, def) typ = obj.Type() // type must have been assigned by Checker.objDecl } diff --git a/src/cmd/compile/internal/types2/util.go b/src/cmd/compile/internal/types2/util.go index 01da1c12ca..d77da478fa 100644 --- a/src/cmd/compile/internal/types2/util.go +++ b/src/cmd/compile/internal/types2/util.go @@ -20,3 +20,6 @@ import "cmd/compile/internal/syntax" // If p and q are in different files, p is before q if the filename // of p sorts lexicographically before the filename of q. func cmpPos(p, q syntax.Pos) int { return p.Cmp(q) } + +// hasDots reports whether the last argument in the call is followed by ... +func hasDots(call *syntax.CallExpr) bool { return call.HasDots } diff --git a/src/cmd/compile/internal/walk/switch.go b/src/cmd/compile/internal/walk/switch.go index b67d0114c7..d008cbc3ef 100644 --- a/src/cmd/compile/internal/walk/switch.go +++ b/src/cmd/compile/internal/walk/switch.go @@ -700,7 +700,7 @@ func typeHashFieldOf(pos src.XPos, itab *ir.UnaryExpr) *ir.SelectorExpr { } else { // runtime.itab's hash field if itabHashField == nil { - itabHashField = runtimeField("hash", int64(2*types.PtrSize), types.Types[types.TUINT32]) + itabHashField = runtimeField("hash", rttype.ITab.OffsetOf("Hash"), types.Types[types.TUINT32]) } hashField = itabHashField } diff --git a/src/cmd/compile/internal/walk/walk.go b/src/cmd/compile/internal/walk/walk.go index 001edcc332..6cb80270e5 100644 --- a/src/cmd/compile/internal/walk/walk.go +++ b/src/cmd/compile/internal/walk/walk.go @@ -10,6 +10,7 @@ import ( "cmd/compile/internal/base" "cmd/compile/internal/ir" "cmd/compile/internal/reflectdata" + "cmd/compile/internal/rttype" "cmd/compile/internal/ssagen" "cmd/compile/internal/typecheck" "cmd/compile/internal/types" @@ -345,8 +346,8 @@ func mayCall(n ir.Node) bool { // itabType loads the _type field from a runtime.itab struct. func itabType(itab ir.Node) ir.Node { if itabTypeField == nil { - // runtime.itab's _type field - itabTypeField = runtimeField("_type", int64(types.PtrSize), types.NewPtr(types.Types[types.TUINT8])) + // internal/abi.ITab's Type field + itabTypeField = runtimeField("Type", rttype.ITab.OffsetOf("Type"), types.NewPtr(types.Types[types.TUINT8])) } return boundedDotPtr(base.Pos, itab, itabTypeField) } diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 51bb63c519..4181d33112 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -903,6 +903,20 @@ func runInstall(pkg string, ch chan struct{}) { // Define GORISCV64_value from goriscv64 asmArgs = append(asmArgs, "-D", "GORISCV64_"+goriscv64) } + if goarch == "arm" { + // Define GOARM_value from goarm, which can be either a version + // like "6", or a version and a FP mode, like "7,hardfloat". + switch { + case strings.Contains(goarm, "7"): + asmArgs = append(asmArgs, "-D", "GOARM_7") + fallthrough + case strings.Contains(goarm, "6"): + asmArgs = append(asmArgs, "-D", "GOARM_6") + fallthrough + default: + asmArgs = append(asmArgs, "-D", "GOARM_5") + } + } goasmh := pathf("%s/go_asm.h", workdir) // Collect symabis from assembly code. @@ -1760,8 +1774,8 @@ var cgoEnabled = map[string]bool{ // get filtered out of cgoEnabled for 'dist list'. // See go.dev/issue/56679. var broken = map[string]bool{ - "linux/sparc64": true, // An incomplete port. See CL 132155. - "openbsd/mips64": true, // Broken: go.dev/issue/58110. + "linux/sparc64": true, // An incomplete port. See CL 132155. + "openbsd/mips64": true, // Broken: go.dev/issue/58110. } // List of platforms which are first class ports. See go.dev/issue/38874. diff --git a/src/cmd/go.mod b/src/cmd/go.mod index 3fa0051ff0..e00ff68f4a 100644 --- a/src/cmd/go.mod +++ b/src/cmd/go.mod @@ -3,12 +3,13 @@ module cmd go 1.23 require ( - github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17 + github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 golang.org/x/arch v0.7.0 - golang.org/x/build v0.0.0-20240122184708-c291ad69d6be - golang.org/x/mod v0.14.0 + golang.org/x/build v0.0.0-20240201175143-3ee44a092755 + golang.org/x/mod v0.15.1-0.20240207185259-766dc5df63e3 golang.org/x/sync v0.6.0 - golang.org/x/sys v0.16.1-0.20240110015235-f69d32aa924f + golang.org/x/sys v0.17.0 + golang.org/x/telemetry v0.0.0-20240208185543-e9b074dd3804 golang.org/x/term v0.16.0 golang.org/x/tools v0.17.1-0.20240119231502-e1555a36d006 ) diff --git a/src/cmd/go.sum b/src/cmd/go.sum index 5cd6a48eee..abbeed70c5 100644 --- a/src/cmd/go.sum +++ b/src/cmd/go.sum @@ -1,21 +1,39 @@ +github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89 h1:aPflPkRFkVwbW6dmcVqfgwp1i+UWGFH6VgR1Jim5Ygc= +github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= +github.com/chromedp/chromedp v0.9.2 h1:dKtNz4kApb06KuSXoTQIyUC2TrA0fhGDwNZf3bcgfKw= +github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs= +github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic= +github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17 h1:0h35ESZ02+hN/MFZb7XZOXg+Rl9+Rk8fBIf5YLws9gA= -github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= +github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab h1:BA4a7pe6ZTd9F8kXETBoijjFJ/ntaa//1wiH9BZu4zU= github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/arch v0.7.0 h1:pskyeJh/3AmoQ8CPE95vxHLqp1G1GfGNXTmcl9NEKTc= golang.org/x/arch v0.7.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= -golang.org/x/build v0.0.0-20240122184708-c291ad69d6be h1:h1qJlb1MudWuUMYotaFX+nSdSgv6zrBBDNojV68uqCA= -golang.org/x/build v0.0.0-20240122184708-c291ad69d6be/go.mod h1:RHSzqFUzT4+buJlGik6WptO5NxLQiR/ewD2uz3fgWuA= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/build v0.0.0-20240201175143-3ee44a092755 h1:irSM9p93GT4I3+Pu/grZlkwIjrXA3GfyKwlSosVbmtU= +golang.org/x/build v0.0.0-20240201175143-3ee44a092755/go.mod h1:RHSzqFUzT4+buJlGik6WptO5NxLQiR/ewD2uz3fgWuA= +golang.org/x/mod v0.15.1-0.20240207185259-766dc5df63e3 h1:/p/VemLWiTsjHqHwME1Iu+xIu8s9fBtwBk8bU/ejA1A= +golang.org/x/mod v0.15.1-0.20240207185259-766dc5df63e3/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.16.1-0.20240110015235-f69d32aa924f h1:GvGFYRZ5kIldzXQj3UmUiUTMe5spPODuLKQvP38A+Qc= -golang.org/x/sys v0.16.1-0.20240110015235-f69d32aa924f/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240208185543-e9b074dd3804 h1:mLYQpgq+cJOnmn3pR2U9o5rzEuOVgnmw59GHPgypGeo= +golang.org/x/telemetry v0.0.0-20240208185543-e9b074dd3804/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index a6166a7fdb..5e6d54ee2e 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1004,6 +1004,8 @@ // Retracted []string // retraction information, if any (with -retracted or -u) // Deprecated string // deprecation message, if any (with -u) // Error *ModuleError // error loading module +// Sum string // checksum for path, version (as in go.sum) +// GoModSum string // checksum for go.mod (as in go.sum) // Origin any // provenance of module // Reuse bool // reuse of old module info is safe // } diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go index db58714882..df3639cba7 100644 --- a/src/cmd/go/internal/list/list.go +++ b/src/cmd/go/internal/list/list.go @@ -245,6 +245,8 @@ applied to a Go struct, but now a Module struct: Retracted []string // retraction information, if any (with -retracted or -u) Deprecated string // deprecation message, if any (with -u) Error *ModuleError // error loading module + Sum string // checksum for path, version (as in go.sum) + GoModSum string // checksum for go.mod (as in go.sum) Origin any // provenance of module Reuse bool // reuse of old module info is safe } @@ -725,6 +727,9 @@ func runList(ctx context.Context, cmd *base.Command, args []string) { b.IsCmdList = true b.NeedExport = *listExport b.NeedCompiledGoFiles = *listCompiled + if cfg.Experiment.CoverageRedesign && cfg.BuildCover { + load.PrepareForCoverageBuild(pkgs) + } a := &work.Action{} // TODO: Use pkgsFilter? for _, p := range pkgs { @@ -732,9 +737,6 @@ func runList(ctx context.Context, cmd *base.Command, args []string) { a.Deps = append(a.Deps, b.AutoAction(work.ModeInstall, work.ModeInstall, p)) } } - if cfg.Experiment.CoverageRedesign && cfg.BuildCover { - load.PrepareForCoverageBuild(pkgs) - } b.Do(ctx, a) } diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 1549800afb..0e4b6797c6 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -2306,7 +2306,7 @@ func (p *Package) setBuildInfo(ctx context.Context, autoVCS bool) { } if mi.Replace != nil { dm.Replace = debugModFromModinfo(mi.Replace) - } else if mi.Version != "" { + } else if mi.Version != "" && cfg.BuildMod != "vendor" { dm.Sum = modfetch.Sum(ctx, module.Version{Path: mi.Path, Version: mi.Version}) } return dm diff --git a/src/cmd/go/internal/modfetch/fetch.go b/src/cmd/go/internal/modfetch/fetch.go index eeab6da62a..ce801d34f2 100644 --- a/src/cmd/go/internal/modfetch/fetch.go +++ b/src/cmd/go/internal/modfetch/fetch.go @@ -569,6 +569,47 @@ func HaveSum(mod module.Version) bool { return false } +// RecordedSum returns the sum if the go.sum file contains an entry for mod. +// The boolean reports true if an entry was found or +// false if no entry found or two conflicting sums are found. +// The entry's hash must be generated with a known hash algorithm. +// mod.Version may have a "/go.mod" suffix to distinguish sums for +// .mod and .zip files. +func RecordedSum(mod module.Version) (sum string, ok bool) { + goSum.mu.Lock() + defer goSum.mu.Unlock() + inited, err := initGoSum() + foundSum := "" + if err != nil || !inited { + return "", false + } + for _, goSums := range goSum.w { + for _, h := range goSums[mod] { + if !strings.HasPrefix(h, "h1:") { + continue + } + if !goSum.status[modSum{mod, h}].dirty { + if foundSum != "" && foundSum != h { // conflicting sums exist + return "", false + } + foundSum = h + } + } + } + for _, h := range goSum.m[mod] { + if !strings.HasPrefix(h, "h1:") { + continue + } + if !goSum.status[modSum{mod, h}].dirty { + if foundSum != "" && foundSum != h { // conflicting sums exist + return "", false + } + foundSum = h + } + } + return foundSum, true +} + // checkMod checks the given module's checksum and Go version. func checkMod(ctx context.Context, mod module.Version) { // Do the file I/O before acquiring the go.sum lock. diff --git a/src/cmd/go/internal/modindex/read.go b/src/cmd/go/internal/modindex/read.go index 83d5faf28f..bda3fb4338 100644 --- a/src/cmd/go/internal/modindex/read.go +++ b/src/cmd/go/internal/modindex/read.go @@ -124,7 +124,7 @@ var ( errNotFromModuleCache = fmt.Errorf("%w: not from module cache", ErrNotIndexed) ) -// GetPackage returns the IndexPackage for the package at the given path. +// GetPackage returns the IndexPackage for the directory at the given path. // It will return ErrNotIndexed if the directory should be read without // using the index, for instance because the index is disabled, or the package // is not in a module. @@ -669,11 +669,9 @@ func IsStandardPackage(goroot_, compiler, path string) bool { reldir = str.TrimFilePathPrefix(reldir, "cmd") modroot = filepath.Join(modroot, "cmd") } - if _, err := GetPackage(modroot, filepath.Join(modroot, reldir)); err == nil { - // Note that goroot.IsStandardPackage doesn't check that the directory - // actually contains any go files-- merely that it exists. GetPackage - // returning a nil error is enough for us to know the directory exists. - return true + if pkg, err := GetPackage(modroot, filepath.Join(modroot, reldir)); err == nil { + hasGo, err := pkg.IsDirWithGoFiles() + return err == nil && hasGo } else if errors.Is(err, ErrNotIndexed) { // Fall back because package isn't indexable. (Probably because // a file was modified recently) @@ -786,8 +784,8 @@ func shouldBuild(sf *sourceFile, tags map[string]bool) bool { return true } -// IndexPackage holds the information needed to access information in the -// index needed to load a package in a specific directory. +// IndexPackage holds the information in the index +// needed to load a package in a specific directory. type IndexPackage struct { error error dir string // directory of the package relative to the modroot diff --git a/src/cmd/go/internal/modinfo/info.go b/src/cmd/go/internal/modinfo/info.go index b0adcbcfb3..336f99245a 100644 --- a/src/cmd/go/internal/modinfo/info.go +++ b/src/cmd/go/internal/modinfo/info.go @@ -14,24 +14,25 @@ import ( // and the fields are documented in the help text in ../list/list.go type ModulePublic struct { - Path string `json:",omitempty"` // module path - Version string `json:",omitempty"` // module version - Query string `json:",omitempty"` // version query corresponding to this version - Versions []string `json:",omitempty"` // available module versions - Replace *ModulePublic `json:",omitempty"` // replaced by this module - Time *time.Time `json:",omitempty"` // time version was created - Update *ModulePublic `json:",omitempty"` // available update (with -u) - Main bool `json:",omitempty"` // is this the main module? - Indirect bool `json:",omitempty"` // module is only indirectly needed by main module - Dir string `json:",omitempty"` // directory holding local copy of files, if any - GoMod string `json:",omitempty"` // path to go.mod file describing module, if any - GoVersion string `json:",omitempty"` // go version used in module - Retracted []string `json:",omitempty"` // retraction information, if any (with -retracted or -u) - Deprecated string `json:",omitempty"` // deprecation message, if any (with -u) - Error *ModuleError `json:",omitempty"` // error loading module - - Origin *codehost.Origin `json:",omitempty"` // provenance of module - Reuse bool `json:",omitempty"` // reuse of old module info is safe + Path string `json:",omitempty"` // module path + Version string `json:",omitempty"` // module version + Query string `json:",omitempty"` // version query corresponding to this version + Versions []string `json:",omitempty"` // available module versions + Replace *ModulePublic `json:",omitempty"` // replaced by this module + Time *time.Time `json:",omitempty"` // time version was created + Update *ModulePublic `json:",omitempty"` // available update (with -u) + Main bool `json:",omitempty"` // is this the main module? + Indirect bool `json:",omitempty"` // module is only indirectly needed by main module + Dir string `json:",omitempty"` // directory holding local copy of files, if any + GoMod string `json:",omitempty"` // path to go.mod file describing module, if any + GoVersion string `json:",omitempty"` // go version used in module + Retracted []string `json:",omitempty"` // retraction information, if any (with -retracted or -u) + Deprecated string `json:",omitempty"` // deprecation message, if any (with -u) + Error *ModuleError `json:",omitempty"` // error loading module + Sum string `json:",omitempty"` // checksum for path, version (as in go.sum) + GoModSum string `json:",omitempty"` // checksum for go.mod (as in go.sum) + Origin *codehost.Origin `json:",omitempty"` // provenance of module + Reuse bool `json:",omitempty"` // reuse of old module info is safe } type ModuleError struct { diff --git a/src/cmd/go/internal/modload/build.go b/src/cmd/go/internal/modload/build.go index 5cf1487c3e..6e30afd524 100644 --- a/src/cmd/go/internal/modload/build.go +++ b/src/cmd/go/internal/modload/build.go @@ -364,12 +364,18 @@ func moduleInfo(ctx context.Context, rs *Requirements, m module.Version, mode Li m.GoMod = gomod } } + if gomodsum, ok := modfetch.RecordedSum(modkey(mod)); ok { + m.GoModSum = gomodsum + } } if checksumOk("") { dir, err := modfetch.DownloadDir(ctx, mod) if err == nil { m.Dir = dir } + if sum, ok := modfetch.RecordedSum(mod); ok { + m.Sum = sum + } } if mode&ListRetracted != 0 { diff --git a/src/cmd/go/internal/work/gc.go b/src/cmd/go/internal/work/gc.go index 09ea8259e0..a054f44cbe 100644 --- a/src/cmd/go/internal/work/gc.go +++ b/src/cmd/go/internal/work/gc.go @@ -367,12 +367,13 @@ func asmArgs(a *Action, p *load.Package) []any { } if cfg.Goarch == "arm" { - // Define GOARM_value from cfg.GOARM. - switch cfg.GOARM { - case "7": + // Define GOARM_value from cfg.GOARM, which can be either a version + // like "6", or a version and a FP mode, like "7,hardfloat". + switch { + case strings.Contains(cfg.GOARM, "7"): args = append(args, "-D", "GOARM_7") fallthrough - case "6": + case strings.Contains(cfg.GOARM, "6"): args = append(args, "-D", "GOARM_6") fallthrough default: diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go index d380aae489..f62477a839 100644 --- a/src/cmd/go/main.go +++ b/src/cmd/go/main.go @@ -7,8 +7,6 @@ package main import ( - "cmd/go/internal/toolchain" - "cmd/go/internal/workcmd" "context" "flag" "fmt" @@ -38,10 +36,14 @@ import ( "cmd/go/internal/run" "cmd/go/internal/test" "cmd/go/internal/tool" + "cmd/go/internal/toolchain" "cmd/go/internal/trace" "cmd/go/internal/version" "cmd/go/internal/vet" "cmd/go/internal/work" + "cmd/go/internal/workcmd" + + "golang.org/x/telemetry/counter" ) func init() { @@ -89,11 +91,13 @@ var _ = go11tag func main() { log.SetFlags(0) + counter.Open() // Open the telemetry counter file so counters can be written to it. handleChdirFlag() toolchain.Select() flag.Usage = base.Usage flag.Parse() + counter.CountFlags("cmd/go:flag-", *flag.CommandLine) args := flag.Args() if len(args) < 1 { @@ -149,6 +153,7 @@ func main() { cmd, used := lookupCmd(args) cfg.CmdName = strings.Join(args[:used], " ") + counter.Inc("cmd/go:subcommand-" + strings.ReplaceAll(cfg.CmdName, " ", "-")) if len(cmd.Commands) > 0 { if used >= len(args) { help.PrintUsage(os.Stderr, cmd) @@ -236,6 +241,7 @@ func invoke(cmd *base.Command, args []string) { } else { base.SetFromGOFLAGS(&cmd.Flag) cmd.Flag.Parse(args[1:]) + counter.CountFlags("cmd/go/"+cmd.Name()+":flag-", cmd.Flag) args = cmd.Flag.Args() } @@ -320,6 +326,7 @@ func handleChdirFlag() { _, dir, _ = strings.Cut(a, "=") os.Args = slices.Delete(os.Args, used, used+1) } + counter.Inc("cmd/go:flag-C") if err := os.Chdir(dir); err != nil { base.Fatalf("go: %v", err) diff --git a/src/cmd/go/scriptconds_test.go b/src/cmd/go/scriptconds_test.go index 8dd9b0d1cd..13007daba5 100644 --- a/src/cmd/go/scriptconds_test.go +++ b/src/cmd/go/scriptconds_test.go @@ -55,6 +55,7 @@ func scriptConditions() map[string]script.Cond { add("msan", sysCondition("-msan", platform.MSanSupported, true)) add("mustlinkext", script.Condition("platform always requires external linking", mustLinkExt)) add("net", script.PrefixCondition("can connect to external network host ", hasNet)) + add("pielinkext", script.Condition("platform requires external linking for PIE", pieLinkExt)) add("race", sysCondition("-race", platform.RaceDetectorSupported, true)) add("symlink", lazyBool("testenv.HasSymlink()", testenv.HasSymlink)) add("trimpath", script.OnceCondition("test binary was built with -trimpath", isTrimpath)) @@ -233,3 +234,9 @@ func mustLinkExt(s *script.State) (bool, error) { GOARCH, _ := s.LookupEnv("GOARCH") return platform.MustLinkExternal(GOOS, GOARCH, false), nil } + +func pieLinkExt(s *script.State) (bool, error) { + GOOS, _ := s.LookupEnv("GOOS") + GOARCH, _ := s.LookupEnv("GOARCH") + return !platform.InternalLinkPIESupported(GOOS, GOARCH), nil +} diff --git a/src/cmd/go/testdata/script/README b/src/cmd/go/testdata/script/README index 792a158760..39971f8029 100644 --- a/src/cmd/go/testdata/script/README +++ b/src/cmd/go/testdata/script/README @@ -410,6 +410,8 @@ The available conditions are: platform always requires external linking [net:*] can connect to external network host +[pielinkext] + platform requires external linking for PIE [race] GOOS/GOARCH supports -race [root] diff --git a/src/cmd/go/testdata/script/build_issue_65528.txt b/src/cmd/go/testdata/script/build_issue_65528.txt new file mode 100644 index 0000000000..ab4d62bbb2 --- /dev/null +++ b/src/cmd/go/testdata/script/build_issue_65528.txt @@ -0,0 +1,9 @@ +go build + +-- go.mod -- +module test + +go 1.0 + +-- p.go -- +package p diff --git a/src/cmd/go/testdata/script/build_plugin_reproducible.txt b/src/cmd/go/testdata/script/build_plugin_reproducible.txt index 5369954859..3379a6be5f 100644 --- a/src/cmd/go/testdata/script/build_plugin_reproducible.txt +++ b/src/cmd/go/testdata/script/build_plugin_reproducible.txt @@ -1,5 +1,6 @@ [!buildmode:plugin] skip [short] skip +[!cgo] skip '-buildmode=plugin requires external linking' go build -trimpath -buildvcs=false -buildmode=plugin -o a.so main.go go build -trimpath -buildvcs=false -buildmode=plugin -o b.so main.go @@ -8,4 +9,4 @@ cmp -q a.so b.so -- main.go -- package main -func main() {} \ No newline at end of file +func main() {} diff --git a/src/cmd/go/testdata/script/cover_list.txt b/src/cmd/go/testdata/script/cover_list.txt index 6b8aaf45d1..1b1f326662 100644 --- a/src/cmd/go/testdata/script/cover_list.txt +++ b/src/cmd/go/testdata/script/cover_list.txt @@ -38,6 +38,10 @@ cp stdout $WORK/toolbuildid.txt # Build IDs should match here. cmp $WORK/toolbuildid.txt $WORK/listbuildid.txt +# Make sure that the build succeeds regardless of covermode. +go list -export -covermode=atomic m/example +go list -export -covermode=count m/example + -- go.mod -- module m diff --git a/src/cmd/go/testdata/script/gotoolchain_path.txt b/src/cmd/go/testdata/script/gotoolchain_path.txt index 9628348f7a..b7a1c9bd89 100644 --- a/src/cmd/go/testdata/script/gotoolchain_path.txt +++ b/src/cmd/go/testdata/script/gotoolchain_path.txt @@ -8,8 +8,7 @@ env TESTGO_VERSION=go1.21pre3 # Compile a fake toolchain to put in the path under various names. env GOTOOLCHAIN= mkdir $WORK/bin -go build -o $WORK/bin/ ./fakego.go # adds .exe extension implicitly on Windows -cp $WORK/bin/fakego$GOEXE $WORK/bin/go1.50.0$GOEXE +go build -o $WORK/bin/go1.50.0$GOEXE ./fakego.go # adds .exe extension implicitly on Windows [!GOOS:plan9] env PATH=$WORK/bin [GOOS:plan9] env path=$WORK/bin diff --git a/src/cmd/go/testdata/script/list_testdata.txt b/src/cmd/go/testdata/script/list_testdata.txt new file mode 100644 index 0000000000..d62dd55c7d --- /dev/null +++ b/src/cmd/go/testdata/script/list_testdata.txt @@ -0,0 +1,11 @@ +# Issue 65406. The testdata directory in GOROOT/src +# shouldn't be treated as a standard package. + +go list -f '{{.ImportPath}} {{.Dir}}' testdata +! stderr 'found package testdata in multiple modules' +stdout 'testdata '$WORK${/}'gopath'${/}'src' + +-- go.mod -- +module testdata +-- p.go -- +package p \ No newline at end of file diff --git a/src/cmd/go/testdata/script/mod_gomodcache_vendor.txt b/src/cmd/go/testdata/script/mod_gomodcache_vendor.txt new file mode 100644 index 0000000000..164460be84 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_gomodcache_vendor.txt @@ -0,0 +1,32 @@ +# This test verifies that GOMODCACHE does not affect whether checksums are embedded +# with vendored files. +# See issue #46400 +[short] skip 'builds and links a binary twice' +go mod tidy +go mod vendor + +go build -mod=vendor +go version -m example$GOEXE +cp stdout version-m.txt + +env GOMODCACHE=$WORK${/}modcache +go build -mod=vendor +go version -m example$GOEXE +cmp stdout version-m.txt + +-- go.mod -- +module example +go 1.22 +require rsc.io/sampler v1.3.0 + +-- main.go -- +package main + +import ( + "fmt" + "rsc.io/sampler" +) + +func main() { + fmt.Println(sampler.Hello()) +} \ No newline at end of file diff --git a/src/cmd/go/testdata/script/mod_list.txt b/src/cmd/go/testdata/script/mod_list.txt index 06316cc335..40820b3bb5 100644 --- a/src/cmd/go/testdata/script/mod_list.txt +++ b/src/cmd/go/testdata/script/mod_list.txt @@ -44,9 +44,9 @@ stderr '^go: module rsc.io/quote/buggy: not a known dependency' # Module loader does not interfere with list -e (golang.org/issue/24149). go list -e -f '{{.Error.Err}}' database -stdout 'no Go files in ' +stdout 'package database is not in std' ! go list database -stderr 'no Go files in ' +stderr 'package database is not in std' -- go.mod -- module x diff --git a/src/cmd/go/testdata/script/mod_list_m.txt b/src/cmd/go/testdata/script/mod_list_m.txt new file mode 100644 index 0000000000..d579153966 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_list_m.txt @@ -0,0 +1,16 @@ +go mod tidy + +go list -m -json all +stdout '"GoModSum":\s+"h1:.+"' +stdout '"Sum":\s+"h1:.+"' + +-- go.mod -- +module example + +go 1.21 + +require rsc.io/quote v1.5.1 +-- example.go -- +package example + +import _ "rsc.io/quote" \ No newline at end of file diff --git a/src/cmd/go/testdata/script/test_fuzz_deadline.txt b/src/cmd/go/testdata/script/test_fuzz_deadline.txt index 46d3521558..a51df345e9 100644 --- a/src/cmd/go/testdata/script/test_fuzz_deadline.txt +++ b/src/cmd/go/testdata/script/test_fuzz_deadline.txt @@ -2,6 +2,16 @@ [short] skip env GOCACHE=$WORK/cache +# Warm up the build cache with GOMAXPROCS unrestricted. +go test -c -o $devnull + +# For the fuzzing phase, we reduce GOMAXPROCS to avoid consuming too many +# resources during the test. Ideally this would just free up resources to run +# other parallel tests more quickly, but unfortunately it is actually necessary +# in some 32-bit environments to prevent the fuzzing engine from running out of +# address space (see https://go.dev/issue/65434). +env GOMAXPROCS=2 + # The fuzz function should be able to detect whether -timeout # was set with T.Deadline. Note there is no F.Deadline, and # there is no timeout while fuzzing, even if -fuzztime is set. diff --git a/src/cmd/go/testdata/script/test_fuzz_fuzztime.txt b/src/cmd/go/testdata/script/test_fuzz_fuzztime.txt index 28ef3bf7de..027c434a32 100644 --- a/src/cmd/go/testdata/script/test_fuzz_fuzztime.txt +++ b/src/cmd/go/testdata/script/test_fuzz_fuzztime.txt @@ -5,6 +5,13 @@ env GOCACHE=$WORK/cache # There are no seed values, so 'go test' should finish quickly. go test +# For the fuzzing phase, we reduce GOMAXPROCS to avoid consuming too many +# resources during the test. Ideally this would just free up resources to run +# other parallel tests more quickly, but unfortunately it is actually necessary +# in some 32-bit environments to prevent the fuzzing engine from running out of +# address space (see https://go.dev/issue/65434). +env GOMAXPROCS=2 + # Fuzzing should exit 0 after fuzztime, even if timeout is short. go test -timeout=3s -fuzz=FuzzFast -fuzztime=5s diff --git a/src/cmd/go/testdata/script/version.txt b/src/cmd/go/testdata/script/version.txt index 0a2ac1e1d5..a18bcdd915 100644 --- a/src/cmd/go/testdata/script/version.txt +++ b/src/cmd/go/testdata/script/version.txt @@ -57,8 +57,9 @@ stdout '^test2json.exe: .+' stdout '^\tpath\tcmd/test2json$' ! stdout 'mod[^e]' -# Repeat the test with -buildmode=pie. +# Repeat the test with -buildmode=pie and default linking. [!buildmode:pie] stop +[pielinkext] [!cgo] stop go build -buildmode=pie -o external.exe rsc.io/fortune go version external.exe stdout '^external.exe: .+' @@ -68,9 +69,7 @@ stdout '^\tpath\trsc.io/fortune' stdout '^\tmod\trsc.io/fortune\tv1.0.0' # Also test PIE with internal linking. -# currently only supported on linux/amd64, linux/arm64 and windows/amd64. -[!GOOS:linux] [!GOOS:windows] stop -[!GOARCH:amd64] [!GOARCH:arm64] stop +[pielinkext] stop go build -buildmode=pie -ldflags=-linkmode=internal -o internal.exe rsc.io/fortune go version internal.exe stdout '^internal.exe: .+' diff --git a/src/cmd/go/testdata/script/version_cshared.txt b/src/cmd/go/testdata/script/version_cshared.txt index 29e21fc09a..18f257f64a 100644 --- a/src/cmd/go/testdata/script/version_cshared.txt +++ b/src/cmd/go/testdata/script/version_cshared.txt @@ -1,4 +1,5 @@ [short] skip +[!cgo] skip '-buildmode=c-shared requires external linking' [!buildmode:c-shared] stop env GO111MODULE=on diff --git a/src/cmd/internal/obj/ppc64/a.out.go b/src/cmd/internal/obj/ppc64/a.out.go index 13143f5beb..ab1b4eb19f 100644 --- a/src/cmd/internal/obj/ppc64/a.out.go +++ b/src/cmd/internal/obj/ppc64/a.out.go @@ -422,15 +422,18 @@ const ( C_U15CON /* 15 bit unsigned constant */ C_S16CON /* 16 bit signed constant */ C_U16CON /* 16 bit unsigned constant */ + C_16CON /* Any constant which fits into 16 bits. Can be signed or unsigned */ + C_U31CON /* 31 bit unsigned constant */ + C_S32CON /* 32 bit signed constant */ + C_U32CON /* 32 bit unsigned constant */ C_32CON /* Any constant which fits into 32 bits. Can be signed or unsigned */ C_S34CON /* 34 bit signed constant */ C_64CON /* Any constant which fits into 64 bits. Can be signed or unsigned */ C_SACON /* $n(REG) where n <= int16 */ C_LACON /* $n(REG) where n <= int32 */ C_DACON /* $n(REG) where n <= int64 */ - C_SBRA /* A short offset argument to a branching instruction */ - C_LBRA /* A long offset argument to a branching instruction */ - C_LBRAPIC /* Like C_LBRA, but requires an extra NOP for potential TOC restore by the linker. */ + C_BRA /* A short offset argument to a branching instruction */ + C_BRAPIC /* Like C_BRA, but requires an extra NOP for potential TOC restore by the linker. */ C_ZOREG /* An $0+reg memory op */ C_SOREG /* An $n+reg memory arg where n is a 16 bit signed offset */ C_LOREG /* An $n+reg memory arg where n is a 32 bit signed offset */ @@ -446,16 +449,6 @@ const ( C_TEXTSIZE /* An argument with Type obj.TYPE_TEXTSIZE */ C_NCLASS /* must be the last */ - - /* Aliased names which should be cleaned up, or integrated. */ - C_SCON = C_U15CON - C_ADDCON = C_S16CON - C_ANDCON = C_U16CON - C_LCON = C_32CON - - /* Aliased names which may be generated by ppc64map for the optab. */ - C_S32CON = C_32CON - C_U32CON = C_32CON ) const ( diff --git a/src/cmd/internal/obj/ppc64/anames9.go b/src/cmd/internal/obj/ppc64/anames9.go index 72d1f4915d..81f73dcea6 100644 --- a/src/cmd/internal/obj/ppc64/anames9.go +++ b/src/cmd/internal/obj/ppc64/anames9.go @@ -27,15 +27,18 @@ var cnames9 = []string{ "U15CON", "S16CON", "U16CON", + "16CON", + "U31CON", + "S32CON", + "U32CON", "32CON", "S34CON", "64CON", "SACON", "LACON", "DACON", - "SBRA", - "LBRA", - "LBRAPIC", + "BRA", + "BRAPIC", "ZOREG", "SOREG", "LOREG", diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go index 0f01dfa8db..189b0fb5a8 100644 --- a/src/cmd/internal/obj/ppc64/asm9.go +++ b/src/cmd/internal/obj/ppc64/asm9.go @@ -110,60 +110,56 @@ var optab []Optab var optabBase = []Optab{ {as: obj.ATEXT, a1: C_LOREG, a6: C_TEXTSIZE, type_: 0, size: 0}, - {as: obj.ATEXT, a1: C_LOREG, a3: C_LCON, a6: C_TEXTSIZE, type_: 0, size: 0}, + {as: obj.ATEXT, a1: C_LOREG, a3: C_32CON, a6: C_TEXTSIZE, type_: 0, size: 0}, {as: obj.ATEXT, a1: C_ADDR, a6: C_TEXTSIZE, type_: 0, size: 0}, - {as: obj.ATEXT, a1: C_ADDR, a3: C_LCON, a6: C_TEXTSIZE, type_: 0, size: 0}, + {as: obj.ATEXT, a1: C_ADDR, a3: C_32CON, a6: C_TEXTSIZE, type_: 0, size: 0}, /* move register */ {as: AADD, a1: C_REG, a2: C_REG, a6: C_REG, type_: 2, size: 4}, {as: AADD, a1: C_REG, a6: C_REG, type_: 2, size: 4}, - {as: AADD, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, - {as: AADD, a1: C_SCON, a6: C_REG, type_: 4, size: 4}, - {as: AADD, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, - {as: AADD, a1: C_ADDCON, a6: C_REG, type_: 4, size: 4}, - {as: AADD, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 22, size: 8}, - {as: AADD, a1: C_ANDCON, a6: C_REG, type_: 22, size: 8}, - {as: AADDIS, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 20, size: 4}, - {as: AADDIS, a1: C_ADDCON, a6: C_REG, type_: 20, size: 4}, + {as: AADD, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, + {as: AADD, a1: C_S16CON, a6: C_REG, type_: 4, size: 4}, + {as: AADD, a1: C_U16CON, a2: C_REG, a6: C_REG, type_: 22, size: 8}, + {as: AADD, a1: C_U16CON, a6: C_REG, type_: 22, size: 8}, + {as: AADDIS, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 20, size: 4}, + {as: AADDIS, a1: C_S16CON, a6: C_REG, type_: 20, size: 4}, {as: AADDC, a1: C_REG, a2: C_REG, a6: C_REG, type_: 2, size: 4}, {as: AADDC, a1: C_REG, a6: C_REG, type_: 2, size: 4}, - {as: AADDC, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, - {as: AADDC, a1: C_ADDCON, a6: C_REG, type_: 4, size: 4}, - {as: AADDC, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, - {as: AADDC, a1: C_LCON, a6: C_REG, type_: 22, size: 12}, + {as: AADDC, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, + {as: AADDC, a1: C_S16CON, a6: C_REG, type_: 4, size: 4}, + {as: AADDC, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, + {as: AADDC, a1: C_32CON, a6: C_REG, type_: 22, size: 12}, {as: AAND, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, /* logical, no literal */ {as: AAND, a1: C_REG, a6: C_REG, type_: 6, size: 4}, {as: AANDCC, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, {as: AANDCC, a1: C_REG, a6: C_REG, type_: 6, size: 4}, - {as: AANDCC, a1: C_ANDCON, a6: C_REG, type_: 58, size: 4}, - {as: AANDCC, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, - {as: AANDCC, a1: C_ADDCON, a6: C_REG, type_: 23, size: 8}, - {as: AANDCC, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 23, size: 8}, - {as: AANDCC, a1: C_LCON, a6: C_REG, type_: 23, size: 12}, - {as: AANDCC, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 23, size: 12}, - {as: AANDISCC, a1: C_ANDCON, a6: C_REG, type_: 58, size: 4}, - {as: AANDISCC, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, + {as: AANDCC, a1: C_U16CON, a6: C_REG, type_: 58, size: 4}, + {as: AANDCC, a1: C_U16CON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, + {as: AANDCC, a1: C_S16CON, a6: C_REG, type_: 23, size: 8}, + {as: AANDCC, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 23, size: 8}, + {as: AANDCC, a1: C_32CON, a6: C_REG, type_: 23, size: 12}, + {as: AANDCC, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 23, size: 12}, + {as: AANDISCC, a1: C_U16CON, a6: C_REG, type_: 58, size: 4}, + {as: AANDISCC, a1: C_U16CON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, {as: AMULLW, a1: C_REG, a2: C_REG, a6: C_REG, type_: 2, size: 4}, {as: AMULLW, a1: C_REG, a6: C_REG, type_: 2, size: 4}, - {as: AMULLW, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, - {as: AMULLW, a1: C_ADDCON, a6: C_REG, type_: 4, size: 4}, - {as: AMULLW, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, - {as: AMULLW, a1: C_ANDCON, a6: C_REG, type_: 4, size: 4}, - {as: AMULLW, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, - {as: AMULLW, a1: C_LCON, a6: C_REG, type_: 22, size: 12}, + {as: AMULLW, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 4, size: 4}, + {as: AMULLW, a1: C_S16CON, a6: C_REG, type_: 4, size: 4}, + {as: AMULLW, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, + {as: AMULLW, a1: C_32CON, a6: C_REG, type_: 22, size: 12}, {as: ASUBC, a1: C_REG, a2: C_REG, a6: C_REG, type_: 10, size: 4}, {as: ASUBC, a1: C_REG, a6: C_REG, type_: 10, size: 4}, - {as: ASUBC, a1: C_REG, a3: C_ADDCON, a6: C_REG, type_: 27, size: 4}, - {as: ASUBC, a1: C_REG, a3: C_LCON, a6: C_REG, type_: 28, size: 12}, + {as: ASUBC, a1: C_REG, a3: C_S16CON, a6: C_REG, type_: 27, size: 4}, + {as: ASUBC, a1: C_REG, a3: C_32CON, a6: C_REG, type_: 28, size: 12}, {as: AOR, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, /* logical, literal not cc (or/xor) */ {as: AOR, a1: C_REG, a6: C_REG, type_: 6, size: 4}, - {as: AOR, a1: C_ANDCON, a6: C_REG, type_: 58, size: 4}, - {as: AOR, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, - {as: AOR, a1: C_ADDCON, a6: C_REG, type_: 23, size: 8}, - {as: AOR, a1: C_ADDCON, a2: C_REG, a6: C_REG, type_: 23, size: 8}, - {as: AOR, a1: C_LCON, a6: C_REG, type_: 23, size: 12}, - {as: AOR, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 23, size: 12}, - {as: AORIS, a1: C_ANDCON, a6: C_REG, type_: 58, size: 4}, - {as: AORIS, a1: C_ANDCON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, + {as: AOR, a1: C_U16CON, a6: C_REG, type_: 58, size: 4}, + {as: AOR, a1: C_U16CON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, + {as: AOR, a1: C_S16CON, a6: C_REG, type_: 23, size: 8}, + {as: AOR, a1: C_S16CON, a2: C_REG, a6: C_REG, type_: 23, size: 8}, + {as: AOR, a1: C_32CON, a6: C_REG, type_: 23, size: 12}, + {as: AOR, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 23, size: 12}, + {as: AORIS, a1: C_U16CON, a6: C_REG, type_: 58, size: 4}, + {as: AORIS, a1: C_U16CON, a2: C_REG, a6: C_REG, type_: 58, size: 4}, {as: ADIVW, a1: C_REG, a2: C_REG, a6: C_REG, type_: 2, size: 4}, /* op r1[,r2],r3 */ {as: ADIVW, a1: C_REG, a6: C_REG, type_: 2, size: 4}, {as: ASUB, a1: C_REG, a2: C_REG, a6: C_REG, type_: 10, size: 4}, /* op r2[,r1],r3 */ @@ -172,33 +168,33 @@ var optabBase = []Optab{ {as: ASLW, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, {as: ASLD, a1: C_REG, a6: C_REG, type_: 6, size: 4}, {as: ASLD, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, - {as: ASLD, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 25, size: 4}, - {as: ASLD, a1: C_SCON, a6: C_REG, type_: 25, size: 4}, - {as: AEXTSWSLI, a1: C_SCON, a6: C_REG, type_: 25, size: 4}, - {as: AEXTSWSLI, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 25, size: 4}, - {as: ASLW, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 57, size: 4}, - {as: ASLW, a1: C_SCON, a6: C_REG, type_: 57, size: 4}, + {as: ASLD, a1: C_U15CON, a2: C_REG, a6: C_REG, type_: 25, size: 4}, + {as: ASLD, a1: C_U15CON, a6: C_REG, type_: 25, size: 4}, + {as: AEXTSWSLI, a1: C_U15CON, a6: C_REG, type_: 25, size: 4}, + {as: AEXTSWSLI, a1: C_U15CON, a2: C_REG, a6: C_REG, type_: 25, size: 4}, + {as: ASLW, a1: C_U15CON, a2: C_REG, a6: C_REG, type_: 57, size: 4}, + {as: ASLW, a1: C_U15CON, a6: C_REG, type_: 57, size: 4}, {as: ASRAW, a1: C_REG, a6: C_REG, type_: 6, size: 4}, {as: ASRAW, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, - {as: ASRAW, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 56, size: 4}, - {as: ASRAW, a1: C_SCON, a6: C_REG, type_: 56, size: 4}, + {as: ASRAW, a1: C_U15CON, a2: C_REG, a6: C_REG, type_: 56, size: 4}, + {as: ASRAW, a1: C_U15CON, a6: C_REG, type_: 56, size: 4}, {as: ASRAD, a1: C_REG, a6: C_REG, type_: 6, size: 4}, {as: ASRAD, a1: C_REG, a2: C_REG, a6: C_REG, type_: 6, size: 4}, - {as: ASRAD, a1: C_SCON, a2: C_REG, a6: C_REG, type_: 56, size: 4}, - {as: ASRAD, a1: C_SCON, a6: C_REG, type_: 56, size: 4}, - {as: ARLWNM, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 63, size: 4}, - {as: ARLWNM, a1: C_SCON, a2: C_REG, a3: C_SCON, a4: C_SCON, a6: C_REG, type_: 63, size: 4}, - {as: ARLWNM, a1: C_REG, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 63, size: 4}, - {as: ARLWNM, a1: C_REG, a2: C_REG, a3: C_SCON, a4: C_SCON, a6: C_REG, type_: 63, size: 4}, - {as: ACLRLSLWI, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 62, size: 4}, - {as: ARLDMI, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 30, size: 4}, - {as: ARLDC, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 29, size: 4}, + {as: ASRAD, a1: C_U15CON, a2: C_REG, a6: C_REG, type_: 56, size: 4}, + {as: ASRAD, a1: C_U15CON, a6: C_REG, type_: 56, size: 4}, + {as: ARLWNM, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 63, size: 4}, + {as: ARLWNM, a1: C_U15CON, a2: C_REG, a3: C_U15CON, a4: C_U15CON, a6: C_REG, type_: 63, size: 4}, + {as: ARLWNM, a1: C_REG, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 63, size: 4}, + {as: ARLWNM, a1: C_REG, a2: C_REG, a3: C_U15CON, a4: C_U15CON, a6: C_REG, type_: 63, size: 4}, + {as: ACLRLSLWI, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 62, size: 4}, + {as: ARLDMI, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 30, size: 4}, + {as: ARLDC, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 29, size: 4}, {as: ARLDC, a1: C_REG, a3: C_U8CON, a4: C_U8CON, a6: C_REG, type_: 9, size: 4}, - {as: ARLDCL, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 29, size: 4}, - {as: ARLDCL, a1: C_REG, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 14, size: 4}, - {as: ARLDICL, a1: C_REG, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 14, size: 4}, - {as: ARLDICL, a1: C_SCON, a2: C_REG, a3: C_LCON, a6: C_REG, type_: 14, size: 4}, - {as: ARLDCL, a1: C_REG, a3: C_LCON, a6: C_REG, type_: 14, size: 4}, + {as: ARLDCL, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 29, size: 4}, + {as: ARLDCL, a1: C_REG, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 14, size: 4}, + {as: ARLDICL, a1: C_REG, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 14, size: 4}, + {as: ARLDICL, a1: C_U15CON, a2: C_REG, a3: C_32CON, a6: C_REG, type_: 14, size: 4}, + {as: ARLDCL, a1: C_REG, a3: C_32CON, a6: C_REG, type_: 14, size: 4}, {as: AFADD, a1: C_FREG, a6: C_FREG, type_: 2, size: 4}, {as: AFADD, a1: C_FREG, a2: C_FREG, a6: C_FREG, type_: 2, size: 4}, {as: AFABS, a1: C_FREG, a6: C_FREG, type_: 33, size: 4}, @@ -232,8 +228,7 @@ var optabBase = []Optab{ {as: AMOVBZ, a1: C_REG, a6: C_XOREG, type_: 108, size: 4}, {as: AMOVBZ, a1: C_REG, a6: C_REG, type_: 13, size: 4}, - {as: AMOVD, a1: C_ADDCON, a6: C_REG, type_: 3, size: 4}, - {as: AMOVD, a1: C_ANDCON, a6: C_REG, type_: 3, size: 4}, + {as: AMOVD, a1: C_16CON, a6: C_REG, type_: 3, size: 4}, {as: AMOVD, a1: C_SACON, a6: C_REG, type_: 3, size: 4}, {as: AMOVD, a1: C_SOREG, a6: C_REG, type_: 8, size: 4}, {as: AMOVD, a1: C_XOREG, a6: C_REG, type_: 109, size: 4}, @@ -245,8 +240,7 @@ var optabBase = []Optab{ {as: AMOVD, a1: C_REG, a6: C_SPR, type_: 66, size: 4}, {as: AMOVD, a1: C_REG, a6: C_REG, type_: 13, size: 4}, - {as: AMOVW, a1: C_ADDCON, a6: C_REG, type_: 3, size: 4}, - {as: AMOVW, a1: C_ANDCON, a6: C_REG, type_: 3, size: 4}, + {as: AMOVW, a1: C_16CON, a6: C_REG, type_: 3, size: 4}, {as: AMOVW, a1: C_SACON, a6: C_REG, type_: 3, size: 4}, {as: AMOVW, a1: C_CREG, a6: C_REG, type_: 68, size: 4}, {as: AMOVW, a1: C_SOREG, a6: C_REG, type_: 8, size: 4}, @@ -258,7 +252,7 @@ var optabBase = []Optab{ {as: AMOVW, a1: C_REG, a6: C_SPR, type_: 66, size: 4}, {as: AMOVW, a1: C_REG, a6: C_REG, type_: 13, size: 4}, - {as: AFMOVD, a1: C_ADDCON, a6: C_FREG, type_: 24, size: 8}, + {as: AFMOVD, a1: C_S16CON, a6: C_FREG, type_: 24, size: 8}, {as: AFMOVD, a1: C_SOREG, a6: C_FREG, type_: 8, size: 4}, {as: AFMOVD, a1: C_XOREG, a6: C_FREG, type_: 109, size: 4}, {as: AFMOVD, a1: C_ZCON, a6: C_FREG, type_: 24, size: 4}, @@ -275,29 +269,28 @@ var optabBase = []Optab{ {as: AMOVFL, a1: C_CREG, a6: C_CREG, type_: 67, size: 4}, {as: AMOVFL, a1: C_FPSCR, a6: C_CREG, type_: 73, size: 4}, {as: AMOVFL, a1: C_FPSCR, a6: C_FREG, type_: 53, size: 4}, - {as: AMOVFL, a1: C_FREG, a3: C_LCON, a6: C_FPSCR, type_: 64, size: 4}, + {as: AMOVFL, a1: C_FREG, a3: C_32CON, a6: C_FPSCR, type_: 64, size: 4}, {as: AMOVFL, a1: C_FREG, a6: C_FPSCR, type_: 64, size: 4}, - {as: AMOVFL, a1: C_LCON, a6: C_FPSCR, type_: 65, size: 4}, + {as: AMOVFL, a1: C_32CON, a6: C_FPSCR, type_: 65, size: 4}, {as: AMOVFL, a1: C_REG, a6: C_CREG, type_: 69, size: 4}, - {as: AMOVFL, a1: C_REG, a6: C_LCON, type_: 69, size: 4}, + {as: AMOVFL, a1: C_REG, a6: C_32CON, type_: 69, size: 4}, {as: ASYSCALL, type_: 5, size: 4}, {as: ASYSCALL, a1: C_REG, type_: 77, size: 12}, - {as: ASYSCALL, a1: C_SCON, type_: 77, size: 12}, - {as: ABEQ, a6: C_SBRA, type_: 16, size: 4}, - {as: ABEQ, a1: C_CREG, a6: C_SBRA, type_: 16, size: 4}, - {as: ABR, a6: C_LBRA, type_: 11, size: 4}, // b label - {as: ABR, a6: C_LBRAPIC, type_: 11, size: 8}, // b label; nop - {as: ABR, a6: C_LR, type_: 18, size: 4}, // blr - {as: ABR, a6: C_CTR, type_: 18, size: 4}, // bctr - {as: ABC, a1: C_SCON, a2: C_CRBIT, a6: C_SBRA, type_: 16, size: 4}, // bc bo, bi, label - {as: ABC, a1: C_SCON, a2: C_CRBIT, a6: C_LBRA, type_: 17, size: 4}, // bc bo, bi, label - {as: ABC, a1: C_SCON, a2: C_CRBIT, a6: C_LR, type_: 18, size: 4}, // bclr bo, bi - {as: ABC, a1: C_SCON, a2: C_CRBIT, a3: C_SCON, a6: C_LR, type_: 18, size: 4}, // bclr bo, bi, bh - {as: ABC, a1: C_SCON, a2: C_CRBIT, a6: C_CTR, type_: 18, size: 4}, // bcctr bo, bi - {as: ABDNZ, a6: C_SBRA, type_: 16, size: 4}, + {as: ASYSCALL, a1: C_U15CON, type_: 77, size: 12}, + {as: ABEQ, a6: C_BRA, type_: 16, size: 4}, + {as: ABEQ, a1: C_CREG, a6: C_BRA, type_: 16, size: 4}, + {as: ABR, a6: C_BRA, type_: 11, size: 4}, // b label + {as: ABR, a6: C_BRAPIC, type_: 11, size: 8}, // b label; nop + {as: ABR, a6: C_LR, type_: 18, size: 4}, // blr + {as: ABR, a6: C_CTR, type_: 18, size: 4}, // bctr + {as: ABC, a1: C_U15CON, a2: C_CRBIT, a6: C_BRA, type_: 16, size: 4}, // bc bo, bi, label + {as: ABC, a1: C_U15CON, a2: C_CRBIT, a6: C_LR, type_: 18, size: 4}, // bclr bo, bi + {as: ABC, a1: C_U15CON, a2: C_CRBIT, a3: C_U15CON, a6: C_LR, type_: 18, size: 4}, // bclr bo, bi, bh + {as: ABC, a1: C_U15CON, a2: C_CRBIT, a6: C_CTR, type_: 18, size: 4}, // bcctr bo, bi + {as: ABDNZ, a6: C_BRA, type_: 16, size: 4}, {as: ASYNC, type_: 46, size: 4}, - {as: AWORD, a1: C_LCON, type_: 40, size: 4}, + {as: AWORD, a1: C_32CON, type_: 40, size: 4}, {as: ADWORD, a1: C_64CON, type_: 31, size: 8}, {as: ADWORD, a1: C_LACON, type_: 31, size: 8}, {as: AADDME, a1: C_REG, a6: C_REG, type_: 47, size: 4}, @@ -313,19 +306,19 @@ var optabBase = []Optab{ {as: AREMU, a1: C_REG, a2: C_REG, a6: C_REG, type_: 50, size: 16}, {as: AREMD, a1: C_REG, a6: C_REG, type_: 51, size: 12}, {as: AREMD, a1: C_REG, a2: C_REG, a6: C_REG, type_: 51, size: 12}, - {as: AMTFSB0, a1: C_SCON, type_: 52, size: 4}, + {as: AMTFSB0, a1: C_U15CON, type_: 52, size: 4}, /* Other ISA 2.05+ instructions */ {as: APOPCNTD, a1: C_REG, a6: C_REG, type_: 93, size: 4}, /* population count, x-form */ {as: ACMPB, a1: C_REG, a2: C_REG, a6: C_REG, type_: 92, size: 4}, /* compare byte, x-form */ {as: ACMPEQB, a1: C_REG, a2: C_REG, a6: C_CREG, type_: 92, size: 4}, /* compare equal byte, x-form, ISA 3.0 */ {as: ACMPEQB, a1: C_REG, a6: C_REG, type_: 70, size: 4}, - {as: AFTDIV, a1: C_FREG, a2: C_FREG, a6: C_SCON, type_: 92, size: 4}, /* floating test for sw divide, x-form */ - {as: AFTSQRT, a1: C_FREG, a6: C_SCON, type_: 93, size: 4}, /* floating test for sw square root, x-form */ - {as: ACOPY, a1: C_REG, a6: C_REG, type_: 92, size: 4}, /* copy/paste facility, x-form */ - {as: ADARN, a1: C_SCON, a6: C_REG, type_: 92, size: 4}, /* deliver random number, x-form */ - {as: AMADDHD, a1: C_REG, a2: C_REG, a3: C_REG, a6: C_REG, type_: 83, size: 4}, /* multiply-add high/low doubleword, va-form */ - {as: AADDEX, a1: C_REG, a2: C_REG, a3: C_SCON, a6: C_REG, type_: 94, size: 4}, /* add extended using alternate carry, z23-form */ - {as: ACRAND, a1: C_CRBIT, a2: C_CRBIT, a6: C_CRBIT, type_: 2, size: 4}, /* logical ops for condition register bits xl-form */ + {as: AFTDIV, a1: C_FREG, a2: C_FREG, a6: C_U15CON, type_: 92, size: 4}, /* floating test for sw divide, x-form */ + {as: AFTSQRT, a1: C_FREG, a6: C_U15CON, type_: 93, size: 4}, /* floating test for sw square root, x-form */ + {as: ACOPY, a1: C_REG, a6: C_REG, type_: 92, size: 4}, /* copy/paste facility, x-form */ + {as: ADARN, a1: C_U15CON, a6: C_REG, type_: 92, size: 4}, /* deliver random number, x-form */ + {as: AMADDHD, a1: C_REG, a2: C_REG, a3: C_REG, a6: C_REG, type_: 83, size: 4}, /* multiply-add high/low doubleword, va-form */ + {as: AADDEX, a1: C_REG, a2: C_REG, a3: C_U15CON, a6: C_REG, type_: 94, size: 4}, /* add extended using alternate carry, z23-form */ + {as: ACRAND, a1: C_CRBIT, a2: C_CRBIT, a6: C_CRBIT, type_: 2, size: 4}, /* logical ops for condition register bits xl-form */ /* Misc ISA 3.0 instructions */ {as: ASETB, a1: C_CREG, a6: C_REG, type_: 110, size: 4}, @@ -368,7 +361,7 @@ var optabBase = []Optab{ /* Vector shift */ {as: AVS, a1: C_VREG, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, /* vector shift, vx-form */ {as: AVSA, a1: C_VREG, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, /* vector shift algebraic, vx-form */ - {as: AVSOI, a1: C_ANDCON, a2: C_VREG, a3: C_VREG, a6: C_VREG, type_: 83, size: 4}, /* vector shift by octet immediate, va-form */ + {as: AVSOI, a1: C_U16CON, a2: C_VREG, a3: C_VREG, a6: C_VREG, type_: 83, size: 4}, /* vector shift by octet immediate, va-form */ /* Vector count */ {as: AVCLZ, a1: C_VREG, a6: C_VREG, type_: 85, size: 4}, /* vector count leading zeros, vx-form */ @@ -392,10 +385,8 @@ var optabBase = []Optab{ {as: AVSEL, a1: C_VREG, a2: C_VREG, a3: C_VREG, a6: C_VREG, type_: 83, size: 4}, /* vector select, va-form */ /* Vector splat */ - {as: AVSPLTB, a1: C_SCON, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, /* vector splat, vx-form */ - {as: AVSPLTB, a1: C_ADDCON, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, - {as: AVSPLTISB, a1: C_SCON, a6: C_VREG, type_: 82, size: 4}, /* vector splat immediate, vx-form */ - {as: AVSPLTISB, a1: C_ADDCON, a6: C_VREG, type_: 82, size: 4}, + {as: AVSPLTB, a1: C_S16CON, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, + {as: AVSPLTISB, a1: C_S16CON, a6: C_VREG, type_: 82, size: 4}, /* Vector AES */ {as: AVCIPH, a1: C_VREG, a2: C_VREG, a6: C_VREG, type_: 82, size: 4}, /* vector AES cipher, vx-form */ @@ -403,7 +394,7 @@ var optabBase = []Optab{ {as: AVSBOX, a1: C_VREG, a6: C_VREG, type_: 82, size: 4}, /* vector AES subbytes, vx-form */ /* Vector SHA */ - {as: AVSHASIGMA, a1: C_ANDCON, a2: C_VREG, a3: C_ANDCON, a6: C_VREG, type_: 82, size: 4}, /* vector SHA sigma, vx-form */ + {as: AVSHASIGMA, a1: C_U16CON, a2: C_VREG, a3: C_U16CON, a6: C_VREG, type_: 82, size: 4}, /* vector SHA sigma, vx-form */ /* VSX vector load */ {as: ALXVD2X, a1: C_XOREG, a6: C_VSREG, type_: 87, size: 4}, /* vsx vector load, xx1-form */ @@ -447,14 +438,14 @@ var optabBase = []Optab{ {as: AXXMRGHW, a1: C_VSREG, a2: C_VSREG, a6: C_VSREG, type_: 90, size: 4}, /* vsx merge, xx3-form */ /* VSX splat */ - {as: AXXSPLTW, a1: C_VSREG, a3: C_SCON, a6: C_VSREG, type_: 89, size: 4}, /* vsx splat, xx2-form */ - {as: AXXSPLTIB, a1: C_SCON, a6: C_VSREG, type_: 100, size: 4}, /* vsx splat, xx2-form */ + {as: AXXSPLTW, a1: C_VSREG, a3: C_U15CON, a6: C_VSREG, type_: 89, size: 4}, /* vsx splat, xx2-form */ + {as: AXXSPLTIB, a1: C_U15CON, a6: C_VSREG, type_: 100, size: 4}, /* vsx splat, xx2-form */ /* VSX permute */ {as: AXXPERM, a1: C_VSREG, a2: C_VSREG, a6: C_VSREG, type_: 90, size: 4}, /* vsx permute, xx3-form */ /* VSX shift */ - {as: AXXSLDWI, a1: C_VSREG, a2: C_VSREG, a3: C_SCON, a6: C_VSREG, type_: 90, size: 4}, /* vsx shift immediate, xx3-form */ + {as: AXXSLDWI, a1: C_VSREG, a2: C_VSREG, a3: C_U15CON, a6: C_VSREG, type_: 90, size: 4}, /* vsx shift immediate, xx3-form */ /* VSX reverse bytes */ {as: AXXBRQ, a1: C_VSREG, a6: C_VSREG, type_: 101, size: 4}, /* vsx reverse bytes */ @@ -479,45 +470,45 @@ var optabBase = []Optab{ {as: ACMP, a1: C_REG, a6: C_REG, type_: 70, size: 4}, {as: ACMP, a1: C_REG, a2: C_CREG, a6: C_REG, type_: 70, size: 4}, - {as: ACMP, a1: C_REG, a6: C_ADDCON, type_: 71, size: 4}, - {as: ACMP, a1: C_REG, a2: C_CREG, a6: C_ADDCON, type_: 71, size: 4}, + {as: ACMP, a1: C_REG, a6: C_S16CON, type_: 71, size: 4}, + {as: ACMP, a1: C_REG, a2: C_CREG, a6: C_S16CON, type_: 71, size: 4}, {as: ACMPU, a1: C_REG, a6: C_REG, type_: 70, size: 4}, {as: ACMPU, a1: C_REG, a2: C_CREG, a6: C_REG, type_: 70, size: 4}, - {as: ACMPU, a1: C_REG, a6: C_ANDCON, type_: 71, size: 4}, - {as: ACMPU, a1: C_REG, a2: C_CREG, a6: C_ANDCON, type_: 71, size: 4}, + {as: ACMPU, a1: C_REG, a6: C_U16CON, type_: 71, size: 4}, + {as: ACMPU, a1: C_REG, a2: C_CREG, a6: C_U16CON, type_: 71, size: 4}, {as: AFCMPO, a1: C_FREG, a6: C_FREG, type_: 70, size: 4}, {as: AFCMPO, a1: C_FREG, a2: C_CREG, a6: C_FREG, type_: 70, size: 4}, - {as: ATW, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 60, size: 4}, - {as: ATW, a1: C_LCON, a2: C_REG, a6: C_ADDCON, type_: 61, size: 4}, + {as: ATW, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 60, size: 4}, + {as: ATW, a1: C_32CON, a2: C_REG, a6: C_S16CON, type_: 61, size: 4}, {as: ADCBF, a1: C_SOREG, type_: 43, size: 4}, {as: ADCBF, a1: C_XOREG, type_: 43, size: 4}, - {as: ADCBF, a1: C_XOREG, a2: C_REG, a6: C_SCON, type_: 43, size: 4}, - {as: ADCBF, a1: C_SOREG, a6: C_SCON, type_: 43, size: 4}, - {as: ADCBF, a1: C_XOREG, a6: C_SCON, type_: 43, size: 4}, + {as: ADCBF, a1: C_XOREG, a2: C_REG, a6: C_U15CON, type_: 43, size: 4}, + {as: ADCBF, a1: C_SOREG, a6: C_U15CON, type_: 43, size: 4}, + {as: ADCBF, a1: C_XOREG, a6: C_U15CON, type_: 43, size: 4}, {as: ASTDCCC, a1: C_REG, a2: C_REG, a6: C_XOREG, type_: 44, size: 4}, {as: ASTDCCC, a1: C_REG, a6: C_XOREG, type_: 44, size: 4}, {as: ALDAR, a1: C_XOREG, a6: C_REG, type_: 45, size: 4}, - {as: ALDAR, a1: C_XOREG, a3: C_ANDCON, a6: C_REG, type_: 45, size: 4}, + {as: ALDAR, a1: C_XOREG, a3: C_U16CON, a6: C_REG, type_: 45, size: 4}, {as: AEIEIO, type_: 46, size: 4}, {as: ATLBIE, a1: C_REG, type_: 49, size: 4}, - {as: ATLBIE, a1: C_SCON, a6: C_REG, type_: 49, size: 4}, + {as: ATLBIE, a1: C_U15CON, a6: C_REG, type_: 49, size: 4}, {as: ASLBMFEE, a1: C_REG, a6: C_REG, type_: 55, size: 4}, {as: ASLBMTE, a1: C_REG, a6: C_REG, type_: 55, size: 4}, {as: ASTSW, a1: C_REG, a6: C_XOREG, type_: 44, size: 4}, - {as: ASTSW, a1: C_REG, a3: C_LCON, a6: C_ZOREG, type_: 41, size: 4}, + {as: ASTSW, a1: C_REG, a3: C_32CON, a6: C_ZOREG, type_: 41, size: 4}, {as: ALSW, a1: C_XOREG, a6: C_REG, type_: 45, size: 4}, - {as: ALSW, a1: C_ZOREG, a3: C_LCON, a6: C_REG, type_: 42, size: 4}, + {as: ALSW, a1: C_ZOREG, a3: C_32CON, a6: C_REG, type_: 42, size: 4}, {as: obj.AUNDEF, type_: 78, size: 4}, - {as: obj.APCDATA, a1: C_LCON, a6: C_LCON, type_: 0, size: 0}, - {as: obj.AFUNCDATA, a1: C_SCON, a6: C_ADDR, type_: 0, size: 0}, + {as: obj.APCDATA, a1: C_32CON, a6: C_32CON, type_: 0, size: 0}, + {as: obj.AFUNCDATA, a1: C_U15CON, a6: C_ADDR, type_: 0, size: 0}, {as: obj.ANOP, type_: 0, size: 0}, - {as: obj.ANOP, a1: C_LCON, type_: 0, size: 0}, // NOP operand variations added for #40689 - {as: obj.ANOP, a1: C_REG, type_: 0, size: 0}, // to preserve previous behavior + {as: obj.ANOP, a1: C_32CON, type_: 0, size: 0}, // NOP operand variations added for #40689 + {as: obj.ANOP, a1: C_REG, type_: 0, size: 0}, // to preserve previous behavior {as: obj.ANOP, a1: C_FREG, type_: 0, size: 0}, - {as: obj.ADUFFZERO, a6: C_LBRA, type_: 11, size: 4}, // same as ABR/ABL - {as: obj.ADUFFCOPY, a6: C_LBRA, type_: 11, size: 4}, // same as ABR/ABL - {as: obj.APCALIGN, a1: C_LCON, type_: 0, size: 0}, // align code + {as: obj.ADUFFZERO, a6: C_BRA, type_: 11, size: 4}, // same as ABR/ABL + {as: obj.ADUFFCOPY, a6: C_BRA, type_: 11, size: 4}, // same as ABR/ABL + {as: obj.APCALIGN, a1: C_32CON, type_: 0, size: 0}, // align code } // These are opcodes above which may generate different sequences depending on whether prefix opcode support @@ -552,7 +543,7 @@ var prefixableOptab = []PrefixableOptab{ {Optab: Optab{as: AMOVD, a1: C_REG, a6: C_LOREG, type_: 35, size: 8}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AMOVD, a1: C_REG, a6: C_ADDR, type_: 74, size: 8}, minGOPPC64: 10, pfxsize: 8}, - {Optab: Optab{as: AMOVW, a1: C_LCON, a6: C_REG, type_: 19, size: 8}, minGOPPC64: 10, pfxsize: 8}, + {Optab: Optab{as: AMOVW, a1: C_32CON, a6: C_REG, type_: 19, size: 8}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AMOVW, a1: C_LACON, a6: C_REG, type_: 26, size: 8}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AMOVW, a1: C_LOREG, a6: C_REG, type_: 36, size: 8}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AMOVW, a1: C_ADDR, a6: C_REG, type_: 75, size: 8}, minGOPPC64: 10, pfxsize: 8}, @@ -574,8 +565,8 @@ var prefixableOptab = []PrefixableOptab{ {Optab: Optab{as: AFMOVD, a1: C_FREG, a6: C_LOREG, type_: 35, size: 8}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AFMOVD, a1: C_FREG, a6: C_ADDR, type_: 74, size: 8}, minGOPPC64: 10, pfxsize: 8}, - {Optab: Optab{as: AADD, a1: C_LCON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, minGOPPC64: 10, pfxsize: 8}, - {Optab: Optab{as: AADD, a1: C_LCON, a6: C_REG, type_: 22, size: 12}, minGOPPC64: 10, pfxsize: 8}, + {Optab: Optab{as: AADD, a1: C_32CON, a2: C_REG, a6: C_REG, type_: 22, size: 12}, minGOPPC64: 10, pfxsize: 8}, + {Optab: Optab{as: AADD, a1: C_32CON, a6: C_REG, type_: 22, size: 12}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AADD, a1: C_S34CON, a2: C_REG, a6: C_REG, type_: 22, size: 20}, minGOPPC64: 10, pfxsize: 8}, {Optab: Optab{as: AADD, a1: C_S34CON, a6: C_REG, type_: 22, size: 20}, minGOPPC64: 10, pfxsize: 8}, } @@ -955,7 +946,7 @@ func (c *ctxt9) aclass(a *obj.Addr) int { f64 := a.Val.(float64) if f64 == 0 { if math.Signbit(f64) { - return C_ADDCON + return C_S16CON } return C_ZCON } @@ -1017,7 +1008,7 @@ func (c *ctxt9) aclass(a *obj.Addr) int { case sbits <= 16: return C_U16CON case sbits <= 31: - return C_U32CON + return C_U31CON case sbits <= 32: return C_U32CON case sbits <= 33: @@ -1041,9 +1032,9 @@ func (c *ctxt9) aclass(a *obj.Addr) int { case obj.TYPE_BRANCH: if a.Sym != nil && c.ctxt.Flag_dynlink && !pfxEnabled { - return C_LBRAPIC + return C_BRAPIC } - return C_SBRA + return C_BRA } return C_GOK @@ -1114,7 +1105,7 @@ func (c *ctxt9) oplook(p *obj.Prog) *Optab { return &ops[0] } -// Compare two operand types (ex C_REG, or C_SCON) +// Compare two operand types (ex C_REG, or C_U15CON) // and return true if b is compatible with a. // // Argument comparison isn't reflexitive, so care must be taken. @@ -1145,13 +1136,20 @@ func cmp(a int, b int) bool { return cmp(C_U5CON, b) case C_U15CON: return cmp(C_U8CON, b) - case C_U16CON: - return cmp(C_U15CON, b) - case C_S16CON: return cmp(C_U15CON, b) - case C_32CON: + case C_U16CON: + return cmp(C_U15CON, b) + case C_16CON: return cmp(C_S16CON, b) || cmp(C_U16CON, b) + case C_U31CON: + return cmp(C_U16CON, b) + case C_U32CON: + return cmp(C_U31CON, b) + case C_S32CON: + return cmp(C_U31CON, b) || cmp(C_S16CON, b) + case C_32CON: + return cmp(C_S32CON, b) || cmp(C_U32CON, b) case C_S34CON: return cmp(C_32CON, b) case C_64CON: @@ -1160,9 +1158,6 @@ func cmp(a int, b int) bool { case C_LACON: return cmp(C_SACON, b) - case C_LBRA: - return cmp(C_SBRA, b) - case C_SOREG: return cmp(C_ZOREG, b) @@ -2541,34 +2536,26 @@ func asmout(c *ctxt9, p *obj.Prog, o *Optab, out *[5]uint32) { } o1 = AOP_RRR(c.oprrr(p.As), uint32(p.To.Reg), uint32(r), uint32(p.From.Reg)) - case 3: /* mov $soreg/addcon/andcon/ucon, r ==> addis/oris/addi/ori $i,reg',r */ + case 3: /* mov $soreg/16con, r ==> addi/ori $i,reg',r */ d := c.vregoff(&p.From) v := int32(d) r := int(p.From.Reg) - // p.From may be a constant value or an offset(reg) type argument. - isZeroOrR0 := r&0x1f == 0 if r0iszero != 0 /*TypeKind(100016)*/ && p.To.Reg == 0 && (r != 0 || v != 0) { c.ctxt.Diag("literal operation on R0\n%v", p) } - a := OP_ADDI - if int64(int16(d)) != d { - // Operand is 16 bit value with sign bit set - if o.a1 == C_ANDCON { - // Needs unsigned 16 bit so use ORI - if isZeroOrR0 { - o1 = LOP_IRR(uint32(OP_ORI), uint32(p.To.Reg), uint32(0), uint32(v)) - break - } - // With ADDCON, needs signed 16 bit value, fall through to use ADDI - } else if o.a1 != C_ADDCON { - log.Fatalf("invalid handling of %v", p) + if int64(int16(d)) == d { + // MOVD $int16, Ry or MOVD $offset(Rx), Ry + o1 = AOP_IRR(uint32(OP_ADDI), uint32(p.To.Reg), uint32(r), uint32(v)) + } else { + // MOVD $uint16, Ry + if int64(uint16(d)) != d || (r != 0 && r != REGZERO) { + c.ctxt.Diag("Rule expects a uint16 constant load. got:\n%v", p) } + o1 = LOP_IRR(uint32(OP_ORI), uint32(p.To.Reg), uint32(0), uint32(v)) } - o1 = AOP_IRR(uint32(a), uint32(p.To.Reg), uint32(r), uint32(v)) - case 4: /* add/mul $scon,[r1],r2 */ v := c.regoff(&p.From) @@ -2654,7 +2641,7 @@ func asmout(c *ctxt9, p *obj.Prog, o *Optab, out *[5]uint32) { } o1 = AOP_RRR(c.oprrr(p.As), uint32(p.To.Reg), uint32(p.From.Reg), uint32(r)) - case 11: /* br/bl lbra */ + case 11: /* br/bl bra */ v := int32(0) if p.To.Target() != nil { @@ -2688,7 +2675,7 @@ func asmout(c *ctxt9, p *obj.Prog, o *Optab, out *[5]uint32) { case 13: /* mov[bhwd]{z,} r,r */ // This needs to handle "MOV* $0, Rx". This shows up because $0 also - // matches C_REG if r0iszero. This happens because C_REG sorts before C_ANDCON + // matches C_REG if r0iszero. This happens because C_REG sorts before C_U16CON // TODO: fix the above behavior and cleanup this exception. if p.From.Type == obj.TYPE_CONST { o1 = LOP_IRR(OP_ADDI, REGZERO, uint32(p.To.Reg), 0) @@ -2776,8 +2763,7 @@ func asmout(c *ctxt9, p *obj.Prog, o *Optab, out *[5]uint32) { c.ctxt.Diag("unexpected op in rldc case\n%v", p) } - case 17, /* bc bo,bi,lbra (same for now) */ - 16: /* bc bo,bi,sbra */ + case 16: /* bc bo,bi,bra */ a := 0 r := int(p.Reg) @@ -2921,8 +2907,8 @@ func asmout(c *ctxt9, p *obj.Prog, o *Optab, out *[5]uint32) { r = int(p.To.Reg) } - // With ADDCON operand, generate 2 instructions using ADDI for signed value, - // with LCON operand generate 3 instructions. + // With S16CON operand, generate 2 instructions using ADDI for signed value, + // with 32CON operand generate 3 instructions. if o.size == 8 { o1 = LOP_IRR(OP_ADDI, REGZERO, REGTMP, uint32(int32(d))) o2 = LOP_RRR(c.oprrr(p.As), uint32(p.To.Reg), REGTMP, uint32(r)) diff --git a/src/cmd/internal/obj/ppc64/asm_test.go b/src/cmd/internal/obj/ppc64/asm_test.go index 7167a6a947..0ef457e8d0 100644 --- a/src/cmd/internal/obj/ppc64/asm_test.go +++ b/src/cmd/internal/obj/ppc64/asm_test.go @@ -516,17 +516,19 @@ func TestAddrClassifier(t *testing.T) { {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 32}, C_U8CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 << 14}, C_U15CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 << 15}, C_U16CON}, - {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 + 1<<16}, C_U32CON}, + {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 + 1<<16}, C_U31CON}, + {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 << 31}, C_U32CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 << 32}, C_S34CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 1 << 33}, C_64CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: -1}, C_S16CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: -0x10001}, C_S32CON}, + {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: 0x10001}, C_U31CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: -(1 << 33)}, C_S34CON}, {obj.Addr{Type: obj.TYPE_CONST, Name: obj.NAME_NONE, Offset: -(1 << 34)}, C_64CON}, // Branch like arguments - {obj.Addr{Type: obj.TYPE_BRANCH, Sym: &obj.LSym{Type: objabi.SDATA}}, cmplx{C_SBRA, C_LBRAPIC, C_LBRAPIC, C_SBRA}}, - {obj.Addr{Type: obj.TYPE_BRANCH}, C_SBRA}, + {obj.Addr{Type: obj.TYPE_BRANCH, Sym: &obj.LSym{Type: objabi.SDATA}}, cmplx{C_BRA, C_BRAPIC, C_BRAPIC, C_BRA}}, + {obj.Addr{Type: obj.TYPE_BRANCH}, C_BRA}, } pic_ctxt9 := ctxt9{ctxt: &obj.Link{Flag_shared: true, Arch: &Linkppc64}, autosize: 0} diff --git a/src/cmd/link/internal/dwtest/dwtest.go b/src/cmd/link/internal/dwtest/dwtest.go index 3fb02ee1db..c69a5aa4fc 100644 --- a/src/cmd/link/internal/dwtest/dwtest.go +++ b/src/cmd/link/internal/dwtest/dwtest.go @@ -69,8 +69,8 @@ func (ex *Examiner) Populate(rdr *dwarf.Reader) error { return nil } -func (e *Examiner) DIEs() []*dwarf.Entry { - return e.dies +func (ex *Examiner) DIEs() []*dwarf.Entry { + return ex.dies } func indent(ilevel int) { diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index 896d773124..b4930277e4 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -45,6 +45,7 @@ import ( "fmt" "internal/abi" "log" + "math/rand" "os" "sort" "strconv" @@ -122,10 +123,11 @@ func trampoline(ctxt *Link, s loader.Sym) { } if ldr.SymValue(rs) == 0 && ldr.SymType(rs) != sym.SDYNIMPORT && ldr.SymType(rs) != sym.SUNDEFEXT { - // Symbols in the same package are laid out together. + // Symbols in the same package are laid out together (if we + // don't randomize the function order). // Except that if SymPkg(s) == "", it is a host object symbol // which may call an external symbol via PLT. - if ldr.SymPkg(s) != "" && ldr.SymPkg(rs) == ldr.SymPkg(s) { + if ldr.SymPkg(s) != "" && ldr.SymPkg(rs) == ldr.SymPkg(s) && *flagRandLayout == 0 { // RISC-V is only able to reach +/-1MiB via a JAL instruction. // We need to generate a trampoline when an address is // currently unknown. @@ -134,7 +136,7 @@ func trampoline(ctxt *Link, s loader.Sym) { } } // Runtime packages are laid out together. - if isRuntimeDepPkg(ldr.SymPkg(s)) && isRuntimeDepPkg(ldr.SymPkg(rs)) { + if isRuntimeDepPkg(ldr.SymPkg(s)) && isRuntimeDepPkg(ldr.SymPkg(rs)) && *flagRandLayout == 0 { continue } } @@ -2397,6 +2399,26 @@ func (ctxt *Link) textaddress() { ldr := ctxt.loader + if *flagRandLayout != 0 { + r := rand.New(rand.NewSource(*flagRandLayout)) + textp := ctxt.Textp + i := 0 + // don't move the buildid symbol + if len(textp) > 0 && ldr.SymName(textp[0]) == "go:buildid" { + i++ + } + // Skip over C symbols, as functions in a (C object) section must stay together. + // TODO: maybe we can move a section as a whole. + // Note: we load C symbols before Go symbols, so we can scan from the start. + for i < len(textp) && (ldr.SubSym(textp[i]) != 0 || ldr.AttrSubSymbol(textp[i])) { + i++ + } + textp = textp[i:] + r.Shuffle(len(textp), func(i, j int) { + textp[i], textp[j] = textp[j], textp[i] + }) + } + text := ctxt.xdefine("runtime.text", sym.STEXT, 0) etext := ctxt.xdefine("runtime.etext", sym.STEXT, 0) ldr.SetSymSect(text, sect) diff --git a/src/cmd/link/internal/ld/deadcode.go b/src/cmd/link/internal/ld/deadcode.go index 70b4a7ca30..de4395d5df 100644 --- a/src/cmd/link/internal/ld/deadcode.go +++ b/src/cmd/link/internal/ld/deadcode.go @@ -201,7 +201,7 @@ func (d *deadcodePass) flood() { rs := r.Sym() if d.ldr.IsItab(rs) { // This relocation can also point at an itab, in which case it - // means "the _type field of that itab". + // means "the Type field of that itab". rs = decodeItabType(d.ldr, d.ctxt.Arch, rs) } if !d.ldr.IsGoType(rs) && !d.ctxt.linkShared { diff --git a/src/cmd/link/internal/ld/decodesym.go b/src/cmd/link/internal/ld/decodesym.go index 05da11ec1e..aa40496492 100644 --- a/src/cmd/link/internal/ld/decodesym.go +++ b/src/cmd/link/internal/ld/decodesym.go @@ -301,8 +301,8 @@ func decodetypeGcprogShlib(ctxt *Link, data []byte) uint64 { return decodeInuxi(ctxt.Arch, data[2*int32(ctxt.Arch.PtrSize)+8+1*int32(ctxt.Arch.PtrSize):], ctxt.Arch.PtrSize) } -// decodeItabType returns the itab._type field from an itab. +// decodeItabType returns the itab.Type field from an itab. func decodeItabType(ldr *loader.Loader, arch *sys.Arch, symIdx loader.Sym) loader.Sym { relocs := ldr.Relocs(symIdx) - return decodeRelocSym(ldr, symIdx, &relocs, int32(arch.PtrSize)) + return decodeRelocSym(ldr, symIdx, &relocs, int32(abi.ITabTypeOff(arch.PtrSize))) } diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go index f3296e1728..e2bb3f45f9 100644 --- a/src/cmd/link/internal/ld/dwarf.go +++ b/src/cmd/link/internal/ld/dwarf.go @@ -1786,7 +1786,7 @@ func dwarfGenerateDebugInfo(ctxt *Link) { "type:internal/abi.SliceType", "type:internal/abi.StructType", "type:internal/abi.InterfaceType", - "type:runtime.itab", + "type:internal/abi.ITab", "type:internal/abi.Imethod"} { d.defgotype(d.lookupOrDiag(typ)) } diff --git a/src/cmd/link/internal/ld/dwarf_test.go b/src/cmd/link/internal/ld/dwarf_test.go index 9c581953d5..8cea573999 100644 --- a/src/cmd/link/internal/ld/dwarf_test.go +++ b/src/cmd/link/internal/ld/dwarf_test.go @@ -65,7 +65,7 @@ func TestRuntimeTypesPresent(t *testing.T) { "internal/abi.SliceType": true, "internal/abi.StructType": true, "internal/abi.InterfaceType": true, - "runtime.itab": true, + "internal/abi.ITab": true, } found := findTypes(t, dwarf, want) diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index fc38b0d99d..91e908c97f 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -478,13 +478,11 @@ func (ctxt *Link) domacho() { if ctxt.LinkMode == LinkInternal && machoPlatform == PLATFORM_MACOS { var version uint32 switch ctxt.Arch.Family { - case sys.AMD64: + case sys.ARM64, sys.AMD64: // This must be fairly recent for Apple signing (go.dev/issue/30488). // Having too old a version here was also implicated in some problems // calling into macOS libraries (go.dev/issue/56784). // In general this can be the most recent supported macOS version. - version = 10<<16 | 13<<8 | 0<<0 // 10.13.0 - case sys.ARM64: version = 11<<16 | 0<<8 | 0<<0 // 11.0.0 } ml := newMachoLoad(ctxt.Arch, LC_BUILD_VERSION, 4) diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go index feb4ba5c17..877b3a6be8 100644 --- a/src/cmd/link/internal/ld/main.go +++ b/src/cmd/link/internal/ld/main.go @@ -102,6 +102,7 @@ var ( FlagTextAddr = flag.Int64("T", -1, "set the start address of text symbols") flagEntrySymbol = flag.String("E", "", "set `entry` symbol name") flagPruneWeakMap = flag.Bool("pruneweakmap", true, "prune weak mapinit refs") + flagRandLayout = flag.Int64("randlayout", 0, "randomize function layout") cpuprofile = flag.String("cpuprofile", "", "write cpu profile to `file`") memprofile = flag.String("memprofile", "", "write memory profile to `file`") memprofilerate = flag.Int64("memprofilerate", 0, "set runtime.MemProfileRate to `rate`") diff --git a/src/cmd/link/internal/ld/pcln.go b/src/cmd/link/internal/ld/pcln.go index 170ebe5ebe..c5996f11d3 100644 --- a/src/cmd/link/internal/ld/pcln.go +++ b/src/cmd/link/internal/ld/pcln.go @@ -827,9 +827,8 @@ func expandGoroot(s string) string { } const ( - BUCKETSIZE = 256 * abi.MINFUNC SUBBUCKETS = 16 - SUBBUCKETSIZE = BUCKETSIZE / SUBBUCKETS + SUBBUCKETSIZE = abi.FuncTabBucketSize / SUBBUCKETS NOIDX = 0x7fffffff ) @@ -847,7 +846,7 @@ func (ctxt *Link) findfunctab(state *pclntab, container loader.Bitmap) { // that map to that subbucket. n := int32((max - min + SUBBUCKETSIZE - 1) / SUBBUCKETSIZE) - nbuckets := int32((max - min + BUCKETSIZE - 1) / BUCKETSIZE) + nbuckets := int32((max - min + abi.FuncTabBucketSize - 1) / abi.FuncTabBucketSize) size := 4*int64(nbuckets) + int64(n) @@ -878,7 +877,7 @@ func (ctxt *Link) findfunctab(state *pclntab, container loader.Bitmap) { q = ldr.SymValue(e) } - //print("%d: [%lld %lld] %s\n", idx, p, q, s->name); + //fmt.Printf("%d: [%x %x] %s\n", idx, p, q, ldr.SymName(s)) for ; p < q; p += SUBBUCKETSIZE { i = int((p - min) / SUBBUCKETSIZE) if indexes[i] > idx { diff --git a/src/cmd/link/internal/loadelf/ldelf.go b/src/cmd/link/internal/loadelf/ldelf.go index 82e7dc30b7..c5ea6f7f89 100644 --- a/src/cmd/link/internal/loadelf/ldelf.go +++ b/src/cmd/link/internal/loadelf/ldelf.go @@ -242,10 +242,6 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) (found bool, ehdrFlags // object, and the returned ehdrFlags contains what this Load function computes. // TODO: find a better place for this logic. func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, f *bio.Reader, pkg string, length int64, pn string, initEhdrFlags uint32) (textp []loader.Sym, ehdrFlags uint32, err error) { - newSym := func(name string, version int) loader.Sym { - return l.CreateStaticSym(name) - } - lookup := l.LookupOrCreateCgoExport errorf := func(str string, args ...interface{}) ([]loader.Sym, uint32, error) { return nil, 0, fmt.Errorf("loadelf: %s: %v", pn, fmt.Sprintf(str, args...)) } @@ -515,7 +511,7 @@ func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, f *bio.Reader, } sectsymNames[name] = true - sb := l.MakeSymbolUpdater(lookup(name, localSymVersion)) + sb := l.MakeSymbolUpdater(l.LookupOrCreateCgoExport(name, localSymVersion)) switch sect.flags & (elf.SHF_ALLOC | elf.SHF_WRITE | elf.SHF_EXECINSTR) { default: @@ -556,7 +552,7 @@ func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, f *bio.Reader, for i := 1; i < elfobj.nsymtab; i++ { var elfsym ElfSym - if err := readelfsym(newSym, lookup, l, arch, elfobj, i, &elfsym, 1, localSymVersion); err != nil { + if err := readelfsym(l, arch, elfobj, i, &elfsym, 1, localSymVersion); err != nil { return errorf("%s: malformed elf file: %v", pn, err) } symbols[i] = elfsym.sym @@ -770,7 +766,7 @@ func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, f *bio.Reader, rSym = 0 } else { var elfsym ElfSym - if err := readelfsym(newSym, lookup, l, arch, elfobj, int(symIdx), &elfsym, 0, 0); err != nil { + if err := readelfsym(l, arch, elfobj, int(symIdx), &elfsym, 0, 0); err != nil { return errorf("malformed elf file: %v", err) } elfsym.sym = symbols[symIdx] @@ -847,7 +843,7 @@ func elfmap(elfobj *ElfObj, sect *ElfSect) (err error) { return nil } -func readelfsym(newSym, lookup func(string, int) loader.Sym, l *loader.Loader, arch *sys.Arch, elfobj *ElfObj, i int, elfsym *ElfSym, needSym int, localSymVersion int) (err error) { +func readelfsym(l *loader.Loader, arch *sys.Arch, elfobj *ElfObj, i int, elfsym *ElfSym, needSym int, localSymVersion int) (err error) { if i >= elfobj.nsymtab || i < 0 { err = fmt.Errorf("invalid elf symbol index") return err @@ -898,7 +894,7 @@ func readelfsym(newSym, lookup func(string, int) loader.Sym, l *loader.Loader, a switch elfsym.bind { case elf.STB_GLOBAL: if needSym != 0 { - s = lookup(elfsym.name, 0) + s = l.LookupOrCreateCgoExport(elfsym.name, 0) // for global scoped hidden symbols we should insert it into // symbol hash table, but mark them as hidden. @@ -927,7 +923,7 @@ func readelfsym(newSym, lookup func(string, int) loader.Sym, l *loader.Loader, a // We need to be able to look this up, // so put it in the hash table. if needSym != 0 { - s = lookup(elfsym.name, localSymVersion) + s = l.LookupOrCreateCgoExport(elfsym.name, localSymVersion) l.SetAttrVisibilityHidden(s, true) } break @@ -940,13 +936,13 @@ func readelfsym(newSym, lookup func(string, int) loader.Sym, l *loader.Loader, a // FIXME: pass empty string here for name? This would // reduce mem use, but also (possibly) make it harder // to debug problems. - s = newSym(elfsym.name, localSymVersion) + s = l.CreateStaticSym(elfsym.name) l.SetAttrVisibilityHidden(s, true) } case elf.STB_WEAK: if needSym != 0 { - s = lookup(elfsym.name, 0) + s = l.LookupOrCreateCgoExport(elfsym.name, 0) if elfsym.other == 2 { l.SetAttrVisibilityHidden(s, true) } diff --git a/src/cmd/link/link_test.go b/src/cmd/link/link_test.go index 897607c4fa..6afde4b085 100644 --- a/src/cmd/link/link_test.go +++ b/src/cmd/link/link_test.go @@ -348,7 +348,7 @@ func TestXFlag(t *testing.T) { } } -var testMachOBuildVersionSrc = ` +var trivialSrc = ` package main func main() { } ` @@ -361,7 +361,7 @@ func TestMachOBuildVersion(t *testing.T) { tmpdir := t.TempDir() src := filepath.Join(tmpdir, "main.go") - err := os.WriteFile(src, []byte(testMachOBuildVersionSrc), 0666) + err := os.WriteFile(src, []byte(trivialSrc), 0666) if err != nil { t.Fatal(err) } @@ -388,9 +388,9 @@ func TestMachOBuildVersion(t *testing.T) { found := false const LC_BUILD_VERSION = 0x32 checkMin := func(ver uint32) { - major, minor := (ver>>16)&0xff, (ver>>8)&0xff - if major != 10 || minor < 9 { - t.Errorf("LC_BUILD_VERSION version %d.%d < 10.9", major, minor) + major, minor, patch := (ver>>16)&0xff, (ver>>8)&0xff, (ver>>0)&0xff + if major < 11 { + t.Errorf("LC_BUILD_VERSION version %d.%d.%d < 11.0.0", major, minor, patch) } } for _, cmd := range exem.Loads { @@ -1375,3 +1375,43 @@ func TestFlagS(t *testing.T) { } } } + +func TestRandLayout(t *testing.T) { + // Test that the -randlayout flag randomizes function order and + // generates a working binary. + testenv.MustHaveGoBuild(t) + + t.Parallel() + + tmpdir := t.TempDir() + + src := filepath.Join(tmpdir, "hello.go") + err := os.WriteFile(src, []byte(trivialSrc), 0666) + if err != nil { + t.Fatal(err) + } + + var syms [2]string + for i, seed := range []string{"123", "456"} { + exe := filepath.Join(tmpdir, "hello"+seed+".exe") + cmd := testenv.Command(t, testenv.GoToolPath(t), "build", "-ldflags=-randlayout="+seed, "-o", exe, src) + out, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("build failed: %v\n%s", err, out) + } + cmd = testenv.Command(t, exe) + err = cmd.Run() + if err != nil { + t.Fatalf("executable failed to run: %v\n%s", err, out) + } + cmd = testenv.Command(t, testenv.GoToolPath(t), "tool", "nm", exe) + out, err = cmd.CombinedOutput() + if err != nil { + t.Fatalf("fail to run \"go tool nm\": %v\n%s", err, out) + } + syms[i] = string(out) + } + if syms[0] == syms[1] { + t.Errorf("randlayout with different seeds produced same layout:\n%s\n===\n\n%s", syms[0], syms[1]) + } +} diff --git a/src/cmd/preprofile/main.go b/src/cmd/preprofile/main.go new file mode 100644 index 0000000000..806f25fee8 --- /dev/null +++ b/src/cmd/preprofile/main.go @@ -0,0 +1,187 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Preprofile handles pprof files. +// +// Usage: +// +// go tool preprofile [-v] [-o output] [-i (pprof)input] +// +// + +package main + +import ( + "bufio" + "flag" + "fmt" + "internal/profile" + "log" + "os" + "path/filepath" + "strconv" +) + +// The current Go Compiler consumes significantly long compilation time when the PGO +// is enabled. To optimize the existing flow and reduce build time of multiple Go +// services, we create a standalone tool, PGO preprocessor, to extract information +// from collected profiling files and to cache the WeightedCallGraph in one time +// fashion. By adding the new tool to the Go compiler, it will reduce the time +// of repeated profiling file parsing and avoid WeightedCallGraph reconstruction +// in current Go Compiler. +// The format of the pre-processed output is as follows. +// +// Header +// caller_name +// callee_name +// "call site offset" "call edge weight" +// ... +// caller_name +// callee_name +// "call site offset" "call edge weight" + +func usage() { + fmt.Fprintf(os.Stderr, "MUST have (pprof) input file \n") + fmt.Fprintf(os.Stderr, "usage: go tool preprofile [-v] [-o output] [-i (pprof)input] \n\n") + flag.PrintDefaults() + os.Exit(2) +} + +type NodeMapKey struct { + CallerName string + CalleeName string + CallSiteOffset int // Line offset from function start line. +} + +func readPprofFile(profileFile string, outputFile string, verbose bool) bool { + // open the pprof profile file + f, err := os.Open(profileFile) + if err != nil { + log.Fatal("failed to open file " + profileFile) + return false + } + defer f.Close() + p, err := profile.Parse(f) + if err != nil { + log.Fatal("failed to Parse profile file.") + return false + } + + if len(p.Sample) == 0 { + // We accept empty profiles, but there is nothing to do. + return false + } + + valueIndex := -1 + for i, s := range p.SampleType { + // Samples count is the raw data collected, and CPU nanoseconds is just + // a scaled version of it, so either one we can find is fine. + if (s.Type == "samples" && s.Unit == "count") || + (s.Type == "cpu" && s.Unit == "nanoseconds") { + valueIndex = i + break + } + } + + if valueIndex == -1 { + log.Fatal("failed to find CPU samples count or CPU nanoseconds value-types in profile.") + return false + } + + // The processing here is equivalent to cmd/compile/internal/pgo.createNamedEdgeMap. + g := profile.NewGraph(p, &profile.Options{ + SampleValue: func(v []int64) int64 { return v[valueIndex] }, + }) + + TotalEdgeWeight := int64(0) + + NodeMap := make(map[NodeMapKey]int64) + + for _, n := range g.Nodes { + canonicalName := n.Info.Name + // Create the key to the nodeMapKey. + nodeinfo := NodeMapKey{ + CallerName: canonicalName, + CallSiteOffset: n.Info.Lineno - n.Info.StartLine, + } + + if n.Info.StartLine == 0 { + if verbose { + log.Println("[PGO] warning: " + canonicalName + " relative line number is missing from the profile") + } + } + + for _, e := range n.Out { + TotalEdgeWeight += e.WeightValue() + nodeinfo.CalleeName = e.Dest.Info.Name + if w, ok := NodeMap[nodeinfo]; ok { + w += e.WeightValue() + } else { + w = e.WeightValue() + NodeMap[nodeinfo] = w + } + } + } + + var fNodeMap *os.File + if outputFile == "" { + fNodeMap = os.Stdout + } else { + dirPath := filepath.Dir(outputFile) + _, err := os.Stat(dirPath) + if err != nil { + log.Fatal("Directory does not exist: ", dirPath) + } + base := filepath.Base(outputFile) + outputFile = filepath.Join(dirPath, base) + + // write out NodeMap to a file + fNodeMap, err = os.Create(outputFile) + if err != nil { + log.Fatal("Error creating output file:", err) + return false + } + + defer fNodeMap.Close() // Close the file when done writing + } + + w := bufio.NewWriter(fNodeMap) + w.WriteString("GO PREPROFILE V1\n") + count := 1 + separator := " " + for key, element := range NodeMap { + line := key.CallerName + "\n" + w.WriteString(line) + line = key.CalleeName + "\n" + w.WriteString(line) + line = strconv.Itoa(key.CallSiteOffset) + line = line + separator + strconv.FormatInt(element, 10) + "\n" + w.WriteString(line) + w.Flush() + count += 1 + } + + if TotalEdgeWeight == 0 { + return false + } + + return true +} + +var dumpCode = flag.String("o", "", "dump output file ") +var input = flag.String("i", "", "input pprof file ") +var verbose = flag.Bool("v", false, "verbose log") + +func main() { + log.SetFlags(0) + log.SetPrefix("preprofile: ") + + flag.Usage = usage + flag.Parse() + if *input == "" { + usage() + } else { + readPprofFile(*input, *dumpCode, *verbose) + } +} diff --git a/src/cmd/relnote/relnote_test.go b/src/cmd/relnote/relnote_test.go index ba3a059704..c20f80efc4 100644 --- a/src/cmd/relnote/relnote_test.go +++ b/src/cmd/relnote/relnote_test.go @@ -32,7 +32,7 @@ func TestCheckAPIFragments(t *testing.T) { docFS := os.DirFS(filepath.Join(root, "doc", "next")) // Check that each api/next file has a corresponding release note fragment. for _, apiFile := range files { - if err := relnote.CheckAPIFile(rootFS, apiFile, docFS); err != nil { + if err := relnote.CheckAPIFile(rootFS, apiFile, docFS, "doc/next"); err != nil { t.Errorf("%s: %v", apiFile, err) } } diff --git a/src/cmd/trace/v2/goroutines.go b/src/cmd/trace/v2/goroutines.go index 44febeba88..3cf366635a 100644 --- a/src/cmd/trace/v2/goroutines.go +++ b/src/cmd/trace/v2/goroutines.go @@ -17,7 +17,6 @@ import ( "net/http" "slices" "sort" - "strconv" "strings" "time" ) @@ -25,31 +24,23 @@ import ( // GoroutinesHandlerFunc returns a HandlerFunc that serves list of goroutine groups. func GoroutinesHandlerFunc(summaries map[tracev2.GoID]*trace.GoroutineSummary) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - // goroutineGroup describes a group of goroutines grouped by start PC. + // goroutineGroup describes a group of goroutines grouped by name. type goroutineGroup struct { - ID uint64 // Unique identifier (PC). Name string // Start function. N int // Total number of goroutines in this group. ExecTime time.Duration // Total execution time of all goroutines in this group. } - // Accumulate groups by PC. - groupsByPC := make(map[uint64]goroutineGroup) + // Accumulate groups by Name. + groupsByName := make(map[string]goroutineGroup) for _, summary := range summaries { - group := groupsByPC[summary.PC] - group.ID = summary.PC + group := groupsByName[summary.Name] group.Name = summary.Name group.N++ group.ExecTime += summary.ExecTime - groupsByPC[summary.PC] = group + groupsByName[summary.Name] = group } var groups []goroutineGroup - for pc, group := range groupsByPC { - group.ID = pc - // If goroutine didn't run during the trace (no sampled PC), - // the v.ID and v.Name will be zero value. - if group.ID == 0 && group.Name == "" { - group.Name = "(Inactive, no stack trace sampled)" - } + for _, group := range groupsByName { groups = append(groups, group) } slices.SortFunc(groups, func(a, b goroutineGroup) int { @@ -92,7 +83,7 @@ Click a start location to view more details about that group.
{{range $}} - {{.Name}} + {{or .Name "(Inactive, no stack trace sampled)"}} {{.N}} {{.ExecTime}} @@ -106,11 +97,7 @@ Click a start location to view more details about that group.
// goroutines in a particular group. func GoroutineHandler(summaries map[tracev2.GoID]*trace.GoroutineSummary) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - pc, err := strconv.ParseUint(r.FormValue("id"), 10, 64) - if err != nil { - http.Error(w, fmt.Sprintf("failed to parse id parameter '%v': %v", r.FormValue("id"), err), http.StatusInternalServerError) - return - } + goroutineName := r.FormValue("name") type goroutine struct { *trace.GoroutineSummary @@ -130,7 +117,7 @@ func GoroutineHandler(summaries map[tracev2.GoID]*trace.GoroutineSummary) http.H for _, summary := range summaries { totalExecTime += summary.ExecTime - if summary.PC != pc { + if summary.Name != goroutineName { continue } nonOverlappingStats := summary.NonOverlappingStats() @@ -198,9 +185,8 @@ func GoroutineHandler(summaries map[tracev2.GoID]*trace.GoroutineSummary) http.H } sort.Strings(allRangeStats) - err = templGoroutine.Execute(w, struct { + err := templGoroutine.Execute(w, struct { Name string - PC uint64 N int ExecTimePercent string MaxTotal time.Duration @@ -209,7 +195,6 @@ func GoroutineHandler(summaries map[tracev2.GoID]*trace.GoroutineSummary) http.H RangeStats []string }{ Name: name, - PC: pc, N: len(goroutines), ExecTimePercent: execTimePercent, MaxTotal: maxTotalTime, @@ -339,19 +324,19 @@ Table of contents Network wait profile: - graph (download) + graph (download) Sync block profile: - graph (download) + graph (download) Syscall profile: - graph (download) + graph (download) Scheduler wait profile: - graph (download) + graph (download) diff --git a/src/cmd/trace/v2/jsontrace_test.go b/src/cmd/trace/v2/jsontrace_test.go index ac988b7240..65ce041c4f 100644 --- a/src/cmd/trace/v2/jsontrace_test.go +++ b/src/cmd/trace/v2/jsontrace_test.go @@ -167,8 +167,8 @@ func checkNetworkUnblock(t *testing.T, data format.Data) { if netBlockEv == nil { t.Error("failed to find a network unblock") } - if count == 0 || count > 2 { - t.Errorf("found too many network block events: want 1 or 2, found %d", count) + if count == 0 { + t.Errorf("found zero network block events, want at least one") } // TODO(mknyszek): Check for the flow of this event to some slice event of a goroutine running. } diff --git a/src/cmd/trace/v2/pprof.go b/src/cmd/trace/v2/pprof.go index 4ec7b3a598..05895eda3d 100644 --- a/src/cmd/trace/v2/pprof.go +++ b/src/cmd/trace/v2/pprof.go @@ -14,15 +14,14 @@ import ( tracev2 "internal/trace/v2" "net/http" "slices" - "strconv" "strings" "time" ) func pprofByGoroutine(compute computePprofFunc, t *parsedTrace) traceviewer.ProfileFunc { return func(r *http.Request) ([]traceviewer.ProfileRecord, error) { - id := r.FormValue("id") - gToIntervals, err := pprofMatchingGoroutines(id, t) + name := r.FormValue("name") + gToIntervals, err := pprofMatchingGoroutines(name, t) if err != nil { return nil, err } @@ -44,20 +43,12 @@ func pprofByRegion(compute computePprofFunc, t *parsedTrace) traceviewer.Profile } } -// pprofMatchingGoroutines parses the goroutine type id string (i.e. pc) -// and returns the ids of goroutines of the matching type and its interval. +// pprofMatchingGoroutines returns the ids of goroutines of the matching name and its interval. // If the id string is empty, returns nil without an error. -func pprofMatchingGoroutines(id string, t *parsedTrace) (map[tracev2.GoID][]interval, error) { - if id == "" { - return nil, nil - } - pc, err := strconv.ParseUint(id, 10, 64) // id is string - if err != nil { - return nil, fmt.Errorf("invalid goroutine type: %v", id) - } +func pprofMatchingGoroutines(name string, t *parsedTrace) (map[tracev2.GoID][]interval, error) { res := make(map[tracev2.GoID][]interval) for _, g := range t.summary.Goroutines { - if g.PC != pc { + if g.Name != name { continue } endTime := g.EndTime @@ -66,8 +57,8 @@ func pprofMatchingGoroutines(id string, t *parsedTrace) (map[tracev2.GoID][]inte } res[g.ID] = []interval{{start: g.StartTime, end: endTime}} } - if len(res) == 0 && id != "" { - return nil, fmt.Errorf("failed to find matching goroutines for ID: %s", id) + if len(res) == 0 { + return nil, fmt.Errorf("failed to find matching goroutines for name: %s", name) } return res, nil } diff --git a/src/cmd/trace/v2/testdata/go122.test b/src/cmd/trace/v2/testdata/go122.test index 36a035d0a2..2ec9e88f4f 100644 --- a/src/cmd/trace/v2/testdata/go122.test +++ b/src/cmd/trace/v2/testdata/go122.test @@ -1,3950 +1,4221 @@ Trace Go1.22 -EventBatch gen=1 m=18446744073709551615 time=420903766321 size=5 +EventBatch gen=1 m=18446744073709551615 time=7689672466239 size=5 Frequency freq=15625000 -EventBatch gen=1 m=2852347 time=420902165664 size=321 -ProcStart dt=1006 p=6 p_seq=1 -GoStart dt=38 g=14 g_seq=1 -GoStop dt=299059 reason_string=16 stack=52 -GoStart dt=17 g=14 g_seq=2 -GoStop dt=316380 reason_string=16 stack=52 -GoStart dt=10 g=14 g_seq=3 -GoUnblock dt=165829 g=1 g_seq=59 stack=53 -GoDestroy dt=195 -GoStart dt=19 g=1 g_seq=60 -HeapAlloc dt=44 heapalloc_value=23256928 -HeapAlloc dt=19 heapalloc_value=23265088 -GoCreate dt=32 new_g=66 new_stack=54 stack=55 -GoBlock dt=12 reason_string=12 stack=56 -GoStart dt=5 g=66 g_seq=1 -HeapAlloc dt=199 heapalloc_value=23273224 -HeapAlloc dt=13 heapalloc_value=23281032 -GoSyscallBegin dt=19 p_seq=2 stack=57 -GoSyscallEnd dt=30 -GoSyscallBegin dt=10 p_seq=3 stack=58 -GoSyscallEnd dt=17 -GoSyscallBegin dt=295 p_seq=4 stack=59 -GoSyscallEnd dt=16 -GoSyscallBegin dt=6 p_seq=5 stack=60 -GoSyscallEnd dt=14 -HeapAlloc dt=216 heapalloc_value=23289000 -HeapAlloc dt=15 heapalloc_value=23296376 -HeapAlloc dt=19 heapalloc_value=23304328 -GoSyscallBegin dt=16 p_seq=6 stack=61 -GoSyscallEnd dt=15 -GoSyscallBegin dt=7 p_seq=7 stack=62 -GoSyscallEnd dt=14 -GoSyscallBegin dt=12 p_seq=8 stack=63 -ProcStart dt=787812 p=7 p_seq=8 -GoSyscallEndBlocked dt=6 -GoStart dt=1 g=66 g_seq=2 -GoUnblock dt=40 g=1 g_seq=61 stack=66 -GoDestroy dt=191 -GoStart dt=23 g=1 g_seq=62 -GoStop dt=27 reason_string=16 stack=67 -GoStart dt=12 g=1 g_seq=63 -HeapAlloc dt=433 heapalloc_value=23321416 -HeapAlloc dt=23 heapalloc_value=23329608 -HeapAlloc dt=27 heapalloc_value=23337800 -HeapAlloc dt=113 heapalloc_value=23344536 -HeapAlloc dt=447 heapalloc_value=23352728 -HeapAlloc dt=38 heapalloc_value=23360856 -GoSyscallBegin dt=19 p_seq=9 stack=68 -GoSyscallEnd dt=927 -HeapAlloc dt=22 heapalloc_value=23368952 -GoSyscallBegin dt=16 p_seq=10 stack=69 -GoSyscallEnd dt=30 -GoSyscallBegin dt=10 p_seq=11 stack=70 -GoSyscallEnd dt=20 -HeapAlloc dt=287 heapalloc_value=23434488 -GoSyscallBegin dt=45 p_seq=12 stack=71 -GoSyscallEnd dt=234 -GoSyscallBegin dt=11 p_seq=13 stack=71 -GoSyscallEnd dt=109 -GoSyscallBegin dt=77 p_seq=14 stack=72 -GoSyscallEnd dt=54 -GoSyscallBegin dt=22 p_seq=15 stack=73 -GoSyscallEnd dt=41 -GoSyscallBegin dt=24 p_seq=16 stack=74 -GoSyscallEnd dt=173 -GoSyscallBegin dt=11 p_seq=17 stack=75 -GoSyscallEnd dt=68 -HeapAlloc dt=134 heapalloc_value=23442648 -HeapAlloc dt=18 heapalloc_value=23450744 -GoCreate dt=23 new_g=82 new_stack=76 stack=77 -HeapAlloc dt=256 heapalloc_value=23458456 -GoSyscallBegin dt=293 p_seq=18 stack=78 -GoSyscallEnd dt=1156 -GoBlock dt=522 reason_string=7 stack=80 -ProcStop dt=25 -EventBatch gen=1 m=2852346 time=420902051246 size=68 -ProcStart dt=304 p=5 p_seq=1 -ProcStop dt=237 -ProcStart dt=1645 p=5 p_seq=2 -ProcStop dt=30 -ProcStart dt=2505 p=1 p_seq=31 -GoStart dt=199 g=34 g_seq=5 -GoBlock dt=29 reason_string=15 stack=26 -ProcStop dt=25 -ProcStart dt=103771 p=1 p_seq=32 -GoStart dt=185 g=10 g_seq=1 -GoStop dt=304886 reason_string=16 stack=52 -GoStart dt=20 g=10 g_seq=2 -GoStop dt=316414 reason_string=16 stack=52 -GoStart dt=20 g=10 g_seq=3 -GoDestroy dt=159939 -ProcStop dt=47 -EventBatch gen=1 m=2852345 time=420901844115 size=3554 -ProcStart dt=108 p=4 p_seq=1 -ProcStop dt=283 -ProcStart dt=3670 p=0 p_seq=27 -GoStart dt=473 g=1 g_seq=19 -GCMarkAssistEnd dt=34 -HeapAlloc dt=33 heapalloc_value=4117744 -HeapAlloc dt=544 heapalloc_value=4124912 -GCSweepBegin dt=49 stack=38 -GCSweepEnd dt=1131 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=64 heapalloc_value=4133104 -GCSweepBegin dt=44 stack=38 -GCSweepEnd dt=192 swept_value=139264 reclaimed_value=0 -HeapAlloc dt=12 heapalloc_value=4141296 -HeapAlloc dt=29 heapalloc_value=4149488 -HeapAlloc dt=19 heapalloc_value=4157680 -HeapAlloc dt=24 heapalloc_value=4165872 -HeapAlloc dt=23 heapalloc_value=4174064 -GCSweepBegin dt=34 stack=39 -GCSweepEnd dt=33 swept_value=67108864 reclaimed_value=0 -HeapAlloc dt=8 heapalloc_value=4182256 -HeapAlloc dt=117 heapalloc_value=4190448 -HeapAlloc dt=27 heapalloc_value=4198640 -HeapAlloc dt=19 heapalloc_value=4206832 -HeapAlloc dt=23 heapalloc_value=4215024 -HeapAlloc dt=20 heapalloc_value=4223216 -HeapAlloc dt=18 heapalloc_value=4231408 -HeapAlloc dt=70 heapalloc_value=4239600 -HeapAlloc dt=19 heapalloc_value=4247792 -HeapAlloc dt=16 heapalloc_value=4255984 -HeapAlloc dt=16 heapalloc_value=4264176 -HeapAlloc dt=15 heapalloc_value=4272368 -HeapAlloc dt=18 heapalloc_value=4280560 -HeapAlloc dt=15 heapalloc_value=4288752 -HeapAlloc dt=15 heapalloc_value=4296944 -HeapAlloc dt=17 heapalloc_value=4305136 -HeapAlloc dt=18 heapalloc_value=4313328 -HeapAlloc dt=17 heapalloc_value=4321520 -HeapAlloc dt=14 heapalloc_value=4329712 -HeapAlloc dt=15 heapalloc_value=4337904 -HeapAlloc dt=16 heapalloc_value=4346096 -HeapAlloc dt=15 heapalloc_value=4354288 -HeapAlloc dt=17 heapalloc_value=4362480 -HeapAlloc dt=38 heapalloc_value=4370672 -HeapAlloc dt=22 heapalloc_value=4378864 -HeapAlloc dt=23 heapalloc_value=4387056 -HeapAlloc dt=22 heapalloc_value=4395248 -HeapAlloc dt=27 heapalloc_value=4403440 -HeapAlloc dt=27 heapalloc_value=4411632 -HeapAlloc dt=29 heapalloc_value=4419824 -HeapAlloc dt=25 heapalloc_value=4428016 -HeapAlloc dt=25 heapalloc_value=4436208 -HeapAlloc dt=21 heapalloc_value=4444400 -GoBlock dt=45 reason_string=19 stack=21 -ProcStop dt=283 -ProcStart dt=17671 p=1 p_seq=16 -ProcStop dt=21 -ProcStart dt=2566 p=0 p_seq=30 -ProcStop dt=12 -ProcStart dt=16741 p=0 p_seq=31 -GoUnblock dt=27 g=1 g_seq=22 stack=0 -GoStart dt=174 g=1 g_seq=23 -HeapAlloc dt=39 heapalloc_value=5574896 -HeapAlloc dt=20 heapalloc_value=5583088 -HeapAlloc dt=13 heapalloc_value=5591280 -HeapAlloc dt=12 heapalloc_value=5599472 -HeapAlloc dt=12 heapalloc_value=5607664 -HeapAlloc dt=12 heapalloc_value=5615856 -HeapAlloc dt=13 heapalloc_value=5624048 -HeapAlloc dt=41 heapalloc_value=5632240 -HeapAlloc dt=12 heapalloc_value=5640432 -HeapAlloc dt=13 heapalloc_value=5648624 -HeapAlloc dt=11 heapalloc_value=5656816 -HeapAlloc dt=12 heapalloc_value=5665008 -HeapAlloc dt=8 heapalloc_value=5673200 -HeapAlloc dt=39 heapalloc_value=5804272 -HeapAlloc dt=2903 heapalloc_value=5812464 -HeapAlloc dt=14 heapalloc_value=5820656 -HeapAlloc dt=77 heapalloc_value=5828848 -HeapAlloc dt=10 heapalloc_value=5837040 -HeapAlloc dt=8 heapalloc_value=5845232 -HeapAlloc dt=48 heapalloc_value=5853424 -HeapAlloc dt=9 heapalloc_value=5861616 -HeapAlloc dt=8 heapalloc_value=5869808 -HeapAlloc dt=8 heapalloc_value=5878000 -HeapAlloc dt=9 heapalloc_value=5886192 -HeapAlloc dt=8 heapalloc_value=5894384 -HeapAlloc dt=8 heapalloc_value=5902576 -HeapAlloc dt=8 heapalloc_value=5910768 -HeapAlloc dt=8 heapalloc_value=5918960 -HeapAlloc dt=8 heapalloc_value=5927152 -HeapAlloc dt=8 heapalloc_value=5935344 -HeapAlloc dt=8 heapalloc_value=5943536 -HeapAlloc dt=17 heapalloc_value=5951728 -HeapAlloc dt=8 heapalloc_value=5959920 -HeapAlloc dt=6 heapalloc_value=5968112 -HeapAlloc dt=6 heapalloc_value=5976304 -HeapAlloc dt=6 heapalloc_value=5984496 -HeapAlloc dt=7 heapalloc_value=5992688 -HeapAlloc dt=6 heapalloc_value=6000880 -HeapAlloc dt=6 heapalloc_value=6009072 -HeapAlloc dt=7 heapalloc_value=6017264 -HeapAlloc dt=6 heapalloc_value=6025456 -HeapAlloc dt=6 heapalloc_value=6033648 -HeapAlloc dt=6 heapalloc_value=6041840 -HeapAlloc dt=6 heapalloc_value=6050032 -HeapAlloc dt=7 heapalloc_value=6058224 -HeapAlloc dt=44 heapalloc_value=6066416 -HeapAlloc dt=8 heapalloc_value=6074608 -HeapAlloc dt=71 heapalloc_value=6082800 -HeapAlloc dt=8 heapalloc_value=6090992 -HeapAlloc dt=6 heapalloc_value=6099184 -HeapAlloc dt=7 heapalloc_value=6107376 -HeapAlloc dt=6 heapalloc_value=6115568 -HeapAlloc dt=6 heapalloc_value=6123760 -HeapAlloc dt=7 heapalloc_value=6131952 -HeapAlloc dt=6 heapalloc_value=6140144 -HeapAlloc dt=6 heapalloc_value=6148336 -HeapAlloc dt=6 heapalloc_value=6156528 -HeapAlloc dt=7 heapalloc_value=6164720 -HeapAlloc dt=6 heapalloc_value=6172912 -HeapAlloc dt=6 heapalloc_value=6181104 -HeapAlloc dt=6 heapalloc_value=6189296 -HeapAlloc dt=6 heapalloc_value=6197488 -HeapAlloc dt=7 heapalloc_value=6205680 -HeapAlloc dt=6 heapalloc_value=6213872 -HeapAlloc dt=6 heapalloc_value=6222064 -HeapAlloc dt=6 heapalloc_value=6230256 -HeapAlloc dt=6 heapalloc_value=6238448 -HeapAlloc dt=7 heapalloc_value=6246640 -HeapAlloc dt=6 heapalloc_value=6254832 -HeapAlloc dt=6 heapalloc_value=6263024 -HeapAlloc dt=6 heapalloc_value=6271216 -HeapAlloc dt=6 heapalloc_value=6279408 -HeapAlloc dt=6 heapalloc_value=6287600 -HeapAlloc dt=7 heapalloc_value=6295792 -HeapAlloc dt=6 heapalloc_value=6303984 -HeapAlloc dt=7 heapalloc_value=6312176 -HeapAlloc dt=6 heapalloc_value=6320368 -HeapAlloc dt=6 heapalloc_value=6328560 -HeapAlloc dt=6 heapalloc_value=6336752 -HeapAlloc dt=70 heapalloc_value=6344944 -HeapAlloc dt=139 heapalloc_value=6353136 -HeapAlloc dt=8 heapalloc_value=6361328 -HeapAlloc dt=7 heapalloc_value=6369520 -HeapAlloc dt=6 heapalloc_value=6377712 -HeapAlloc dt=6 heapalloc_value=6385904 -HeapAlloc dt=6 heapalloc_value=6394096 -HeapAlloc dt=6 heapalloc_value=6402288 -HeapAlloc dt=7 heapalloc_value=6410480 -HeapAlloc dt=6 heapalloc_value=6418672 -HeapAlloc dt=6 heapalloc_value=6426864 -HeapAlloc dt=6 heapalloc_value=6435056 -HeapAlloc dt=6 heapalloc_value=6443248 -HeapAlloc dt=6 heapalloc_value=6451440 -HeapAlloc dt=7 heapalloc_value=6459632 -HeapAlloc dt=6 heapalloc_value=6467824 -HeapAlloc dt=6 heapalloc_value=6476016 -HeapAlloc dt=6 heapalloc_value=6484208 -HeapAlloc dt=42 heapalloc_value=6492400 -HeapAlloc dt=8 heapalloc_value=6500592 -HeapAlloc dt=6 heapalloc_value=6508784 -HeapAlloc dt=6 heapalloc_value=6516976 -HeapAlloc dt=7 heapalloc_value=6525168 -HeapAlloc dt=6 heapalloc_value=6533360 -HeapAlloc dt=6 heapalloc_value=6541552 -HeapAlloc dt=6 heapalloc_value=6549744 -HeapAlloc dt=6 heapalloc_value=6557936 -HeapAlloc dt=7 heapalloc_value=6566128 -HeapAlloc dt=6 heapalloc_value=6574320 -HeapAlloc dt=6 heapalloc_value=6582512 -HeapAlloc dt=7 heapalloc_value=6590704 -HeapAlloc dt=6 heapalloc_value=6598896 -HeapAlloc dt=66 heapalloc_value=6607088 -HeapAlloc dt=8 heapalloc_value=6615280 -HeapAlloc dt=6 heapalloc_value=6623472 -HeapAlloc dt=6 heapalloc_value=6631664 -HeapAlloc dt=7 heapalloc_value=6639856 -HeapAlloc dt=6 heapalloc_value=6648048 -HeapAlloc dt=6 heapalloc_value=6656240 -HeapAlloc dt=7 heapalloc_value=6664432 -HeapAlloc dt=6 heapalloc_value=6672624 -HeapAlloc dt=6 heapalloc_value=6680816 -HeapAlloc dt=6 heapalloc_value=6689008 -HeapAlloc dt=6 heapalloc_value=6697200 -HeapAlloc dt=7 heapalloc_value=6705392 -HeapAlloc dt=6 heapalloc_value=6713584 -HeapAlloc dt=6 heapalloc_value=6721776 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=220 -ProcStart dt=17605 p=1 p_seq=18 -ProcStop dt=18 -ProcStart dt=8830 p=4 p_seq=2 -ProcStop dt=26 -ProcStart dt=16773 p=0 p_seq=36 -ProcStop dt=12 -ProcStart dt=1445 p=1 p_seq=20 -ProcStop dt=12 -ProcStart dt=16751 p=1 p_seq=21 -GoUnblock dt=16 g=1 g_seq=33 stack=0 -GoStart dt=189 g=1 g_seq=34 -HeapAlloc dt=54 heapalloc_value=9892080 -HeapAlloc dt=21 heapalloc_value=9900272 -HeapAlloc dt=64 heapalloc_value=9908464 -HeapAlloc dt=13 heapalloc_value=9916656 -HeapAlloc dt=13 heapalloc_value=9924848 -HeapAlloc dt=12 heapalloc_value=9933040 -HeapAlloc dt=11 heapalloc_value=9941232 -HeapAlloc dt=13 heapalloc_value=9949424 -HeapAlloc dt=12 heapalloc_value=9957616 -HeapAlloc dt=48 heapalloc_value=9965808 -HeapAlloc dt=338 heapalloc_value=9974000 -HeapAlloc dt=16 heapalloc_value=9982192 -HeapAlloc dt=10 heapalloc_value=9990384 -HeapAlloc dt=8 heapalloc_value=9998576 -HeapAlloc dt=8 heapalloc_value=10006768 -HeapAlloc dt=10 heapalloc_value=10014960 -HeapAlloc dt=8 heapalloc_value=10023152 -HeapAlloc dt=7 heapalloc_value=10031344 -HeapAlloc dt=9 heapalloc_value=10039536 -HeapAlloc dt=6 heapalloc_value=10047728 -HeapAlloc dt=52 heapalloc_value=10055920 -HeapAlloc dt=8 heapalloc_value=10064112 -HeapAlloc dt=7 heapalloc_value=10072304 -HeapAlloc dt=7 heapalloc_value=10080496 -HeapAlloc dt=7 heapalloc_value=10088688 -HeapAlloc dt=7 heapalloc_value=10096880 -HeapAlloc dt=90 heapalloc_value=10105072 -HeapAlloc dt=8 heapalloc_value=10113264 -HeapAlloc dt=8 heapalloc_value=10121456 -HeapAlloc dt=7 heapalloc_value=10129648 -HeapAlloc dt=7 heapalloc_value=10137840 -HeapAlloc dt=7 heapalloc_value=10146032 -HeapAlloc dt=6 heapalloc_value=10154224 -HeapAlloc dt=7 heapalloc_value=10162416 -HeapAlloc dt=7 heapalloc_value=10170608 -HeapAlloc dt=7 heapalloc_value=10178800 -HeapAlloc dt=6 heapalloc_value=10186992 -HeapAlloc dt=7 heapalloc_value=10195184 -HeapAlloc dt=7 heapalloc_value=10203376 -HeapAlloc dt=7 heapalloc_value=10211568 -HeapAlloc dt=6 heapalloc_value=10219760 -HeapAlloc dt=8 heapalloc_value=10227952 -HeapAlloc dt=97 heapalloc_value=10236144 -HeapAlloc dt=9 heapalloc_value=10244336 -HeapAlloc dt=6 heapalloc_value=10252528 -HeapAlloc dt=7 heapalloc_value=10260720 -HeapAlloc dt=7 heapalloc_value=10268912 -HeapAlloc dt=6 heapalloc_value=10277104 -HeapAlloc dt=7 heapalloc_value=10285296 -HeapAlloc dt=7 heapalloc_value=10293488 -HeapAlloc dt=73 heapalloc_value=10301680 -HeapAlloc dt=8 heapalloc_value=10309872 -HeapAlloc dt=6 heapalloc_value=10318064 -HeapAlloc dt=7 heapalloc_value=10326256 -HeapAlloc dt=7 heapalloc_value=10334448 -HeapAlloc dt=6 heapalloc_value=10342640 -HeapAlloc dt=7 heapalloc_value=10350832 -HeapAlloc dt=7 heapalloc_value=10359024 -HeapAlloc dt=7 heapalloc_value=10367216 -HeapAlloc dt=6 heapalloc_value=10375408 -HeapAlloc dt=7 heapalloc_value=10383600 -HeapAlloc dt=7 heapalloc_value=10391792 -HeapAlloc dt=7 heapalloc_value=10399984 -HeapAlloc dt=6 heapalloc_value=10408176 -HeapAlloc dt=7 heapalloc_value=10416368 -HeapAlloc dt=7 heapalloc_value=10424560 -HeapAlloc dt=6 heapalloc_value=10432752 -HeapAlloc dt=7 heapalloc_value=10440944 -HeapAlloc dt=7 heapalloc_value=10449136 -HeapAlloc dt=6 heapalloc_value=10457328 -HeapAlloc dt=7 heapalloc_value=10465520 -HeapAlloc dt=96 heapalloc_value=10473712 -HeapAlloc dt=8 heapalloc_value=10481904 -HeapAlloc dt=6 heapalloc_value=10490096 -HeapAlloc dt=68 heapalloc_value=10498288 -HeapAlloc dt=8 heapalloc_value=10506480 -HeapAlloc dt=7 heapalloc_value=10514672 -HeapAlloc dt=7 heapalloc_value=10522864 -HeapAlloc dt=6 heapalloc_value=10531056 -HeapAlloc dt=7 heapalloc_value=10539248 -HeapAlloc dt=7 heapalloc_value=10547440 -HeapAlloc dt=7 heapalloc_value=10555632 -HeapAlloc dt=6 heapalloc_value=10563824 -HeapAlloc dt=7 heapalloc_value=10572016 -HeapAlloc dt=7 heapalloc_value=10580208 -HeapAlloc dt=6 heapalloc_value=10588400 -HeapAlloc dt=7 heapalloc_value=10596592 -HeapAlloc dt=7 heapalloc_value=10604784 -HeapAlloc dt=7 heapalloc_value=10612976 -HeapAlloc dt=7 heapalloc_value=10621168 -HeapAlloc dt=6 heapalloc_value=10629360 -HeapAlloc dt=7 heapalloc_value=10637552 -HeapAlloc dt=7 heapalloc_value=10645744 -HeapAlloc dt=6 heapalloc_value=10653936 -HeapAlloc dt=7 heapalloc_value=10662128 -HeapAlloc dt=7 heapalloc_value=10670320 -HeapAlloc dt=6 heapalloc_value=10678512 -HeapAlloc dt=7 heapalloc_value=10686704 -HeapAlloc dt=7 heapalloc_value=10694896 -HeapAlloc dt=7 heapalloc_value=10703088 -HeapAlloc dt=7 heapalloc_value=10711280 -HeapAlloc dt=6 heapalloc_value=10719472 -HeapAlloc dt=7 heapalloc_value=10727664 -HeapAlloc dt=7 heapalloc_value=10735856 -HeapAlloc dt=7 heapalloc_value=10744048 -HeapAlloc dt=6 heapalloc_value=10752240 -HeapAlloc dt=78 heapalloc_value=10760432 -HeapAlloc dt=8 heapalloc_value=10768624 -HeapAlloc dt=6 heapalloc_value=10776816 -HeapAlloc dt=7 heapalloc_value=10785008 -HeapAlloc dt=7 heapalloc_value=10793200 -HeapAlloc dt=7 heapalloc_value=10801392 -HeapAlloc dt=6 heapalloc_value=10809584 -HeapAlloc dt=7 heapalloc_value=10817776 -HeapAlloc dt=65 heapalloc_value=10825968 -HeapAlloc dt=9 heapalloc_value=10834160 -HeapAlloc dt=6 heapalloc_value=10842352 -HeapAlloc dt=7 heapalloc_value=10850544 -HeapAlloc dt=6 heapalloc_value=10858736 -HeapAlloc dt=7 heapalloc_value=10866928 -HeapAlloc dt=7 heapalloc_value=10875120 -HeapAlloc dt=7 heapalloc_value=10883312 -HeapAlloc dt=6 heapalloc_value=10891504 -HeapAlloc dt=44 heapalloc_value=10899696 -HeapAlloc dt=7 heapalloc_value=10907888 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=198 -ProcStart dt=17586 p=0 p_seq=38 -ProcStop dt=21 -ProcStart dt=5052 p=1 p_seq=24 -ProcStop dt=13 -ProcStart dt=16760 p=1 p_seq=26 -GoUnblock dt=19 g=1 g_seq=39 stack=0 -GoStart dt=169 g=1 g_seq=40 -HeapAlloc dt=52 heapalloc_value=13250800 -HeapAlloc dt=19 heapalloc_value=13258992 -HeapAlloc dt=9 heapalloc_value=13267184 -HeapAlloc dt=82 heapalloc_value=13275376 -HeapAlloc dt=12 heapalloc_value=13283568 -HeapAlloc dt=9 heapalloc_value=13291760 -HeapAlloc dt=9 heapalloc_value=13299952 -HeapAlloc dt=10 heapalloc_value=13308144 -HeapAlloc dt=10 heapalloc_value=13316336 -HeapAlloc dt=7 heapalloc_value=13324528 -HeapAlloc dt=6 heapalloc_value=13332720 -HeapAlloc dt=6 heapalloc_value=13340912 -HeapAlloc dt=6 heapalloc_value=13349104 -HeapAlloc dt=7 heapalloc_value=13357296 -HeapAlloc dt=6 heapalloc_value=13365488 -HeapAlloc dt=6 heapalloc_value=13373680 -HeapAlloc dt=520 heapalloc_value=13381872 -HeapAlloc dt=15 heapalloc_value=13390064 -HeapAlloc dt=7 heapalloc_value=13398256 -HeapAlloc dt=6 heapalloc_value=13406448 -HeapAlloc dt=8 heapalloc_value=13414640 -HeapAlloc dt=6 heapalloc_value=13422832 -HeapAlloc dt=6 heapalloc_value=13431024 -HeapAlloc dt=7 heapalloc_value=13439216 -HeapAlloc dt=8 heapalloc_value=13447408 -HeapAlloc dt=7 heapalloc_value=13455600 -HeapAlloc dt=6 heapalloc_value=13463792 -HeapAlloc dt=6 heapalloc_value=13471984 -HeapAlloc dt=48 heapalloc_value=13480176 -HeapAlloc dt=7 heapalloc_value=13488368 -HeapAlloc dt=6 heapalloc_value=13496560 -HeapAlloc dt=7 heapalloc_value=13504752 -HeapAlloc dt=9 heapalloc_value=13512944 -HeapAlloc dt=6 heapalloc_value=13521136 -HeapAlloc dt=7 heapalloc_value=13529328 -HeapAlloc dt=6 heapalloc_value=13537520 -HeapAlloc dt=7 heapalloc_value=13545712 -HeapAlloc dt=6 heapalloc_value=13553904 -HeapAlloc dt=7 heapalloc_value=13562096 -HeapAlloc dt=6 heapalloc_value=13570288 -HeapAlloc dt=8 heapalloc_value=13578480 -HeapAlloc dt=6 heapalloc_value=13586672 -HeapAlloc dt=6 heapalloc_value=13594864 -HeapAlloc dt=6 heapalloc_value=13603056 -HeapAlloc dt=6 heapalloc_value=13611248 -HeapAlloc dt=7 heapalloc_value=13619440 -HeapAlloc dt=6 heapalloc_value=13627632 -HeapAlloc dt=6 heapalloc_value=13635824 -HeapAlloc dt=76 heapalloc_value=13644016 -HeapAlloc dt=8 heapalloc_value=13652208 -HeapAlloc dt=6 heapalloc_value=13660400 -HeapAlloc dt=6 heapalloc_value=13668592 -HeapAlloc dt=6 heapalloc_value=13676784 -HeapAlloc dt=7 heapalloc_value=13684976 -HeapAlloc dt=6 heapalloc_value=13693168 -HeapAlloc dt=6 heapalloc_value=13701360 -HeapAlloc dt=8 heapalloc_value=13709552 -HeapAlloc dt=6 heapalloc_value=13717744 -HeapAlloc dt=64 heapalloc_value=13725936 -HeapAlloc dt=7 heapalloc_value=13734128 -HeapAlloc dt=7 heapalloc_value=13742320 -HeapAlloc dt=6 heapalloc_value=13750512 -HeapAlloc dt=6 heapalloc_value=13758704 -HeapAlloc dt=6 heapalloc_value=13766896 -HeapAlloc dt=8 heapalloc_value=13775088 -HeapAlloc dt=7 heapalloc_value=13783280 -HeapAlloc dt=6 heapalloc_value=13791472 -HeapAlloc dt=7 heapalloc_value=13799664 -HeapAlloc dt=6 heapalloc_value=13807856 -HeapAlloc dt=6 heapalloc_value=13816048 -HeapAlloc dt=6 heapalloc_value=13824240 -HeapAlloc dt=6 heapalloc_value=13832432 -HeapAlloc dt=9 heapalloc_value=13840624 -HeapAlloc dt=6 heapalloc_value=13848816 -HeapAlloc dt=6 heapalloc_value=13857008 -HeapAlloc dt=6 heapalloc_value=13865200 -HeapAlloc dt=7 heapalloc_value=13873392 -HeapAlloc dt=7 heapalloc_value=13881584 -HeapAlloc dt=6 heapalloc_value=13889776 -HeapAlloc dt=45 heapalloc_value=13897968 -HeapAlloc dt=75 heapalloc_value=13906160 -HeapAlloc dt=8 heapalloc_value=13914352 -HeapAlloc dt=6 heapalloc_value=13922544 -HeapAlloc dt=6 heapalloc_value=13930736 -HeapAlloc dt=7 heapalloc_value=13938928 -HeapAlloc dt=6 heapalloc_value=13947120 -HeapAlloc dt=6 heapalloc_value=13955312 -HeapAlloc dt=6 heapalloc_value=13963504 -HeapAlloc dt=6 heapalloc_value=13971696 -HeapAlloc dt=7 heapalloc_value=13979888 -HeapAlloc dt=6 heapalloc_value=13988080 -HeapAlloc dt=6 heapalloc_value=13996272 -HeapAlloc dt=6 heapalloc_value=14004464 -HeapAlloc dt=6 heapalloc_value=14012656 -HeapAlloc dt=6 heapalloc_value=14020848 -HeapAlloc dt=7 heapalloc_value=14029040 -HeapAlloc dt=6 heapalloc_value=14037232 -HeapAlloc dt=6 heapalloc_value=14045424 -HeapAlloc dt=7 heapalloc_value=14053616 -HeapAlloc dt=6 heapalloc_value=14061808 -HeapAlloc dt=6 heapalloc_value=14070000 -HeapAlloc dt=6 heapalloc_value=14078192 -HeapAlloc dt=6 heapalloc_value=14086384 -HeapAlloc dt=6 heapalloc_value=14094576 -HeapAlloc dt=9 heapalloc_value=14102768 -HeapAlloc dt=6 heapalloc_value=14110960 -HeapAlloc dt=7 heapalloc_value=14119152 -HeapAlloc dt=6 heapalloc_value=14127344 -HeapAlloc dt=7 heapalloc_value=14135536 -HeapAlloc dt=6 heapalloc_value=14143728 -HeapAlloc dt=6 heapalloc_value=14151920 -HeapAlloc dt=6 heapalloc_value=14160112 -HeapAlloc dt=69 heapalloc_value=14168304 -HeapAlloc dt=8 heapalloc_value=14176496 -HeapAlloc dt=6 heapalloc_value=14184688 -HeapAlloc dt=6 heapalloc_value=14192880 -HeapAlloc dt=7 heapalloc_value=14201072 -HeapAlloc dt=6 heapalloc_value=14209264 -HeapAlloc dt=6 heapalloc_value=14217456 -HeapAlloc dt=16 heapalloc_value=14586096 -HeapAlloc dt=3676 heapalloc_value=14594288 -HeapAlloc dt=11 heapalloc_value=14602480 -HeapAlloc dt=72 heapalloc_value=14610672 -HeapAlloc dt=10 heapalloc_value=14618864 -HeapAlloc dt=7 heapalloc_value=14627056 -HeapAlloc dt=9 heapalloc_value=14635248 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=219 -ProcStart dt=17778 p=2 p_seq=19 -ProcStop dt=25 -ProcStart dt=2221 p=1 p_seq=29 -ProcStop dt=18 -ProcStart dt=16821 p=1 p_seq=30 -GoUnblock dt=23 g=1 g_seq=43 stack=0 -GoStart dt=193 g=1 g_seq=44 -HeapAlloc dt=59 heapalloc_value=15667440 -HeapAlloc dt=26 heapalloc_value=15675632 -HeapAlloc dt=15 heapalloc_value=15683824 -HeapAlloc dt=10 heapalloc_value=15692016 -HeapAlloc dt=9 heapalloc_value=15700208 -HeapAlloc dt=10 heapalloc_value=15708400 -HeapAlloc dt=11 heapalloc_value=15716592 -HeapAlloc dt=9 heapalloc_value=15724784 -HeapAlloc dt=96 heapalloc_value=15732976 -HeapAlloc dt=324 heapalloc_value=15741168 -HeapAlloc dt=17 heapalloc_value=15749360 -HeapAlloc dt=9 heapalloc_value=15757552 -HeapAlloc dt=9 heapalloc_value=15765744 -HeapAlloc dt=7 heapalloc_value=15773936 -HeapAlloc dt=8 heapalloc_value=15782128 -HeapAlloc dt=6 heapalloc_value=15790320 -HeapAlloc dt=6 heapalloc_value=15798512 -HeapAlloc dt=8 heapalloc_value=15806704 -HeapAlloc dt=5 heapalloc_value=15814896 -HeapAlloc dt=7 heapalloc_value=15823088 -HeapAlloc dt=6 heapalloc_value=15831280 -HeapAlloc dt=6 heapalloc_value=15839472 -HeapAlloc dt=6 heapalloc_value=15847664 -HeapAlloc dt=6 heapalloc_value=15855856 -HeapAlloc dt=7 heapalloc_value=15864048 -HeapAlloc dt=10 heapalloc_value=15872240 -HeapAlloc dt=6 heapalloc_value=15880432 -HeapAlloc dt=6 heapalloc_value=15888624 -HeapAlloc dt=6 heapalloc_value=15896816 -HeapAlloc dt=7 heapalloc_value=15905008 -HeapAlloc dt=6 heapalloc_value=15913200 -HeapAlloc dt=6 heapalloc_value=15921392 -HeapAlloc dt=7 heapalloc_value=15929584 -HeapAlloc dt=8 heapalloc_value=15937776 -HeapAlloc dt=48 heapalloc_value=15945968 -HeapAlloc dt=7 heapalloc_value=15954160 -HeapAlloc dt=7 heapalloc_value=15962352 -HeapAlloc dt=6 heapalloc_value=15970544 -HeapAlloc dt=8 heapalloc_value=15978736 -HeapAlloc dt=6 heapalloc_value=15986928 -HeapAlloc dt=7 heapalloc_value=15995120 -HeapAlloc dt=104 heapalloc_value=16003312 -HeapAlloc dt=9 heapalloc_value=16011504 -HeapAlloc dt=8 heapalloc_value=16019696 -HeapAlloc dt=9 heapalloc_value=16027888 -HeapAlloc dt=8 heapalloc_value=16036080 -HeapAlloc dt=7 heapalloc_value=16044272 -HeapAlloc dt=6 heapalloc_value=16052464 -HeapAlloc dt=7 heapalloc_value=16060656 -HeapAlloc dt=6 heapalloc_value=16068848 -HeapAlloc dt=6 heapalloc_value=16077040 -HeapAlloc dt=6 heapalloc_value=16085232 -HeapAlloc dt=7 heapalloc_value=16093424 -HeapAlloc dt=6 heapalloc_value=16101616 -HeapAlloc dt=6 heapalloc_value=16109808 -HeapAlloc dt=6 heapalloc_value=16118000 -HeapAlloc dt=7 heapalloc_value=16126192 -HeapAlloc dt=6 heapalloc_value=16134384 -HeapAlloc dt=6 heapalloc_value=16142576 -HeapAlloc dt=6 heapalloc_value=16150768 -HeapAlloc dt=7 heapalloc_value=16158960 -HeapAlloc dt=6 heapalloc_value=16167152 -HeapAlloc dt=6 heapalloc_value=16175344 -HeapAlloc dt=78 heapalloc_value=16183536 -HeapAlloc dt=7 heapalloc_value=16191728 -HeapAlloc dt=6 heapalloc_value=16199920 -HeapAlloc dt=6 heapalloc_value=16208112 -HeapAlloc dt=7 heapalloc_value=16216304 -HeapAlloc dt=6 heapalloc_value=16224496 -HeapAlloc dt=6 heapalloc_value=16232688 -HeapAlloc dt=6 heapalloc_value=16240880 -HeapAlloc dt=6 heapalloc_value=16249072 -HeapAlloc dt=7 heapalloc_value=16257264 -HeapAlloc dt=73 heapalloc_value=16265456 -HeapAlloc dt=8 heapalloc_value=16273648 -HeapAlloc dt=6 heapalloc_value=16281840 -HeapAlloc dt=6 heapalloc_value=16290032 -HeapAlloc dt=6 heapalloc_value=16298224 -HeapAlloc dt=7 heapalloc_value=16306416 -HeapAlloc dt=6 heapalloc_value=16314608 -HeapAlloc dt=6 heapalloc_value=16322800 -HeapAlloc dt=6 heapalloc_value=16330992 -HeapAlloc dt=7 heapalloc_value=16339184 -HeapAlloc dt=6 heapalloc_value=16347376 -HeapAlloc dt=8 heapalloc_value=16355568 -HeapAlloc dt=44 heapalloc_value=16363760 -HeapAlloc dt=7 heapalloc_value=16371952 -HeapAlloc dt=6 heapalloc_value=16380144 -HeapAlloc dt=6 heapalloc_value=16388336 -HeapAlloc dt=6 heapalloc_value=16396528 -HeapAlloc dt=7 heapalloc_value=16404720 -HeapAlloc dt=6 heapalloc_value=16412912 -HeapAlloc dt=6 heapalloc_value=16421104 -HeapAlloc dt=6 heapalloc_value=16429296 -HeapAlloc dt=7 heapalloc_value=16437488 -HeapAlloc dt=6 heapalloc_value=16445680 -HeapAlloc dt=6 heapalloc_value=16453872 -HeapAlloc dt=6 heapalloc_value=16462064 -HeapAlloc dt=6 heapalloc_value=16470256 -HeapAlloc dt=6 heapalloc_value=16478448 -HeapAlloc dt=7 heapalloc_value=16486640 -HeapAlloc dt=6 heapalloc_value=16494832 -GCBegin dt=18 gc_seq=5 stack=41 -STWBegin dt=46 kind_string=22 stack=42 -GoUnblock dt=209 g=4 g_seq=7 stack=43 -ProcsChange dt=70 procs_value=8 stack=44 -STWEnd dt=24 -GCMarkAssistBegin dt=182 stack=30 -GCMarkAssistEnd dt=3877 -HeapAlloc dt=628 heapalloc_value=16509392 -HeapAlloc dt=22 heapalloc_value=16517584 -HeapAlloc dt=18 heapalloc_value=16525776 -HeapAlloc dt=371 heapalloc_value=16533968 -HeapAlloc dt=14 heapalloc_value=16542160 -HeapAlloc dt=11 heapalloc_value=16550352 -HeapAlloc dt=13 heapalloc_value=16558544 -HeapAlloc dt=13 heapalloc_value=16566736 -HeapAlloc dt=10 heapalloc_value=16574928 -HeapAlloc dt=10 heapalloc_value=16583120 -HeapAlloc dt=8 heapalloc_value=16591312 -HeapAlloc dt=8 heapalloc_value=16599504 -HeapAlloc dt=8 heapalloc_value=16607696 -HeapAlloc dt=7 heapalloc_value=16615888 -HeapAlloc dt=8 heapalloc_value=16624080 -HeapAlloc dt=8 heapalloc_value=16632272 -HeapAlloc dt=9 heapalloc_value=16640464 -HeapAlloc dt=7 heapalloc_value=16648656 -HeapAlloc dt=8 heapalloc_value=16656848 -HeapAlloc dt=9 heapalloc_value=16665040 -HeapAlloc dt=8 heapalloc_value=16673232 -HeapAlloc dt=9 heapalloc_value=16681424 -HeapAlloc dt=8 heapalloc_value=16689616 -GoBlock dt=17 reason_string=19 stack=21 -ProcStop dt=2869 -ProcStart dt=110180 p=4 p_seq=5 -GoStart dt=268 g=15 g_seq=1 -GoStop dt=304685 reason_string=16 stack=52 -GoStart dt=20 g=15 g_seq=2 -GoStop dt=316415 reason_string=16 stack=52 -GoStart dt=23 g=15 g_seq=3 -GoDestroy dt=160136 -ProcStop dt=32 -EventBatch gen=1 m=2852344 time=420901833895 size=3430 -ProcStart dt=383 p=2 p_seq=3 -GoStart dt=284 g=7 g_seq=1 -HeapAlloc dt=35 heapalloc_value=4055040 -GoBlock dt=148 reason_string=15 stack=26 -ProcStop dt=12 -ProcStart dt=791 p=1 p_seq=8 -ProcStop dt=4 -ProcStart dt=817 p=1 p_seq=9 -ProcStop dt=14 -ProcStart dt=796 p=0 p_seq=21 -ProcStop dt=9 -ProcStart dt=393 p=1 p_seq=11 -ProcStop dt=19 -ProcStart dt=324 p=2 p_seq=9 -GoStart dt=339 g=25 g_seq=1 -GoBlock dt=112 reason_string=15 stack=26 -ProcStop dt=4 -ProcStart dt=1331 p=1 p_seq=15 -GoUnblock dt=13 g=9 g_seq=2 stack=0 -GoStart dt=145 g=9 g_seq=3 -GoLabel dt=1 label_string=2 -STWBegin dt=4838 kind_string=23 stack=34 -GoUnblock dt=44 g=1 g_seq=18 stack=35 -HeapAlloc dt=17 heapalloc_value=4112624 -GoStatus dt=15 g=3 m=18446744073709551615 gstatus=4 -GoUnblock dt=5 g=3 g_seq=1 stack=36 -GCEnd dt=4 gc_seq=2 -HeapGoal dt=5 heapgoal_value=8644048 -ProcsChange dt=37 procs_value=8 stack=37 -STWEnd dt=1475 -GoBlock dt=2304 reason_string=15 stack=26 -GoStart dt=12 g=3 g_seq=2 -GoBlock dt=2449 reason_string=14 stack=40 -ProcStop dt=16 -ProcStart dt=67967 p=1 p_seq=19 -GoUnblock dt=21 g=9 g_seq=4 stack=0 -GoStart dt=191 g=9 g_seq=5 -GoLabel dt=1 label_string=2 -GoStop dt=4205 reason_string=16 stack=45 -GoStart dt=189 g=9 g_seq=6 -STWBegin dt=1152 kind_string=23 stack=34 -GoUnblock dt=46 g=1 g_seq=29 stack=35 -HeapAlloc dt=17 heapalloc_value=8626416 -GoUnblock dt=11 g=3 g_seq=3 stack=36 -GCEnd dt=5 gc_seq=4 -HeapGoal dt=5 heapgoal_value=17671632 -ProcsChange dt=43 procs_value=8 stack=37 -STWEnd dt=28 -GoBlock dt=1941 reason_string=15 stack=26 -GoStart dt=12 g=3 g_seq=4 -GoBlock dt=4694 reason_string=14 stack=40 -GoUnblock dt=33 g=1 g_seq=31 stack=0 -GoStart dt=214 g=1 g_seq=32 -HeapAlloc dt=62 heapalloc_value=8646896 -HeapAlloc dt=32 heapalloc_value=8655088 -HeapAlloc dt=18 heapalloc_value=8663280 -HeapAlloc dt=18 heapalloc_value=8671472 -HeapAlloc dt=15 heapalloc_value=8679664 -HeapAlloc dt=18 heapalloc_value=8687856 -HeapAlloc dt=17 heapalloc_value=8696048 -HeapAlloc dt=17 heapalloc_value=8704240 -HeapAlloc dt=19 heapalloc_value=8712432 -HeapAlloc dt=24 heapalloc_value=8720624 -HeapAlloc dt=20 heapalloc_value=8728816 -HeapAlloc dt=31 heapalloc_value=8737008 -HeapAlloc dt=19 heapalloc_value=8745200 -HeapAlloc dt=14 heapalloc_value=8753392 -HeapAlloc dt=14 heapalloc_value=8761584 -HeapAlloc dt=15 heapalloc_value=8769776 -HeapAlloc dt=17 heapalloc_value=8777968 -HeapAlloc dt=16 heapalloc_value=8786160 -HeapAlloc dt=16 heapalloc_value=8794352 -HeapAlloc dt=13 heapalloc_value=8802544 -HeapAlloc dt=14 heapalloc_value=8810736 -HeapAlloc dt=12 heapalloc_value=8818928 -HeapAlloc dt=38 heapalloc_value=9040112 -HeapAlloc dt=3065 heapalloc_value=9048304 -HeapAlloc dt=21 heapalloc_value=9056496 -HeapAlloc dt=16 heapalloc_value=9064688 -HeapAlloc dt=22 heapalloc_value=9072880 -HeapAlloc dt=37 heapalloc_value=9081072 -HeapAlloc dt=28 heapalloc_value=9089264 -HeapAlloc dt=30 heapalloc_value=9097456 -HeapAlloc dt=22 heapalloc_value=9105648 -HeapAlloc dt=36 heapalloc_value=9113840 -HeapAlloc dt=30 heapalloc_value=9122032 -HeapAlloc dt=28 heapalloc_value=9130224 -HeapAlloc dt=26 heapalloc_value=9138416 -HeapAlloc dt=27 heapalloc_value=9146608 -HeapAlloc dt=31 heapalloc_value=9154800 -HeapAlloc dt=37 heapalloc_value=9162992 -HeapAlloc dt=24 heapalloc_value=9171184 -HeapAlloc dt=27 heapalloc_value=9179376 -HeapAlloc dt=26 heapalloc_value=9187568 -HeapAlloc dt=34 heapalloc_value=9195760 -HeapAlloc dt=30 heapalloc_value=9203952 -HeapAlloc dt=30 heapalloc_value=9212144 -HeapAlloc dt=30 heapalloc_value=9220336 -HeapAlloc dt=29 heapalloc_value=9228528 -HeapAlloc dt=28 heapalloc_value=9236720 -HeapAlloc dt=46 heapalloc_value=9244912 -HeapAlloc dt=118 heapalloc_value=9253104 -HeapAlloc dt=31 heapalloc_value=9261296 -HeapAlloc dt=39 heapalloc_value=9269488 -HeapAlloc dt=27 heapalloc_value=9277680 -HeapAlloc dt=32 heapalloc_value=9285872 -HeapAlloc dt=27 heapalloc_value=9294064 -HeapAlloc dt=32 heapalloc_value=9302256 -HeapAlloc dt=33 heapalloc_value=9310448 -HeapAlloc dt=39 heapalloc_value=9318640 -HeapAlloc dt=30 heapalloc_value=9326832 -HeapAlloc dt=33 heapalloc_value=9335024 -HeapAlloc dt=28 heapalloc_value=9343216 -HeapAlloc dt=27 heapalloc_value=9351408 -HeapAlloc dt=27 heapalloc_value=9359600 -HeapAlloc dt=26 heapalloc_value=9367792 -HeapAlloc dt=36 heapalloc_value=9375984 -HeapAlloc dt=20 heapalloc_value=9384176 -HeapAlloc dt=16 heapalloc_value=9392368 -HeapAlloc dt=17 heapalloc_value=9400560 -HeapAlloc dt=22 heapalloc_value=9408752 -HeapAlloc dt=7 heapalloc_value=9416944 -HeapAlloc dt=49 heapalloc_value=9425136 -HeapAlloc dt=7 heapalloc_value=9433328 -HeapAlloc dt=7 heapalloc_value=9441520 -HeapAlloc dt=74 heapalloc_value=9449712 -HeapAlloc dt=8 heapalloc_value=9457904 -HeapAlloc dt=6 heapalloc_value=9466096 -HeapAlloc dt=7 heapalloc_value=9474288 -HeapAlloc dt=6 heapalloc_value=9482480 -HeapAlloc dt=6 heapalloc_value=9490672 -HeapAlloc dt=7 heapalloc_value=9498864 -HeapAlloc dt=6 heapalloc_value=9507056 -HeapAlloc dt=6 heapalloc_value=9515248 -HeapAlloc dt=6 heapalloc_value=9523440 -HeapAlloc dt=6 heapalloc_value=9531632 -HeapAlloc dt=6 heapalloc_value=9539824 -HeapAlloc dt=7 heapalloc_value=9548016 -HeapAlloc dt=7 heapalloc_value=9556208 -HeapAlloc dt=5 heapalloc_value=9564400 -HeapAlloc dt=7 heapalloc_value=9572592 -HeapAlloc dt=6 heapalloc_value=9580784 -HeapAlloc dt=6 heapalloc_value=9588976 -HeapAlloc dt=6 heapalloc_value=9597168 -HeapAlloc dt=6 heapalloc_value=9605360 -HeapAlloc dt=6 heapalloc_value=9613552 -HeapAlloc dt=7 heapalloc_value=9621744 -HeapAlloc dt=6 heapalloc_value=9629936 -HeapAlloc dt=43 heapalloc_value=9638128 -HeapAlloc dt=7 heapalloc_value=9646320 -HeapAlloc dt=7 heapalloc_value=9654512 -HeapAlloc dt=6 heapalloc_value=9662704 -HeapAlloc dt=6 heapalloc_value=9670896 -HeapAlloc dt=6 heapalloc_value=9679088 -HeapAlloc dt=10 heapalloc_value=9687280 -HeapAlloc dt=7 heapalloc_value=9695472 -HeapAlloc dt=8 heapalloc_value=9703664 -HeapAlloc dt=726 heapalloc_value=9711856 -HeapAlloc dt=16 heapalloc_value=9720048 -HeapAlloc dt=7 heapalloc_value=9728240 -HeapAlloc dt=6 heapalloc_value=9736432 -HeapAlloc dt=6 heapalloc_value=9744624 -HeapAlloc dt=6 heapalloc_value=9752816 -HeapAlloc dt=7 heapalloc_value=9761008 -HeapAlloc dt=6 heapalloc_value=9769200 -HeapAlloc dt=63 heapalloc_value=9777392 -HeapAlloc dt=8 heapalloc_value=9785584 -HeapAlloc dt=6 heapalloc_value=9793776 -HeapAlloc dt=7 heapalloc_value=9801968 -HeapAlloc dt=7 heapalloc_value=9810160 -HeapAlloc dt=6 heapalloc_value=9818352 -HeapAlloc dt=6 heapalloc_value=9826544 -HeapAlloc dt=7 heapalloc_value=9834736 -HeapAlloc dt=43 heapalloc_value=9842928 -HeapAlloc dt=7 heapalloc_value=9851120 -HeapAlloc dt=7 heapalloc_value=9859312 -HeapAlloc dt=6 heapalloc_value=9867504 -HeapAlloc dt=6 heapalloc_value=9875696 -HeapAlloc dt=6 heapalloc_value=9883888 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=225 -ProcStart dt=17576 p=0 p_seq=37 -ProcStop dt=18 -ProcStart dt=2169 p=1 p_seq=22 -ProcStop dt=14 -ProcStart dt=16799 p=1 p_seq=23 -GoUnblock dt=15 g=1 g_seq=35 stack=0 -GoStart dt=168 g=1 g_seq=36 -HeapAlloc dt=44 heapalloc_value=10916080 -HeapAlloc dt=18 heapalloc_value=10924272 -HeapAlloc dt=13 heapalloc_value=10932464 -HeapAlloc dt=12 heapalloc_value=10940656 -HeapAlloc dt=11 heapalloc_value=10948848 -HeapAlloc dt=12 heapalloc_value=10957040 -HeapAlloc dt=9 heapalloc_value=10965232 -HeapAlloc dt=11 heapalloc_value=10973424 -HeapAlloc dt=9 heapalloc_value=10981616 -HeapAlloc dt=9 heapalloc_value=10989808 -HeapAlloc dt=6 heapalloc_value=10998000 -HeapAlloc dt=6 heapalloc_value=11006192 -HeapAlloc dt=7 heapalloc_value=11014384 -HeapAlloc dt=303 heapalloc_value=11022576 -HeapAlloc dt=15 heapalloc_value=11030768 -HeapAlloc dt=8 heapalloc_value=11038960 -HeapAlloc dt=6 heapalloc_value=11047152 -HeapAlloc dt=7 heapalloc_value=11055344 -HeapAlloc dt=6 heapalloc_value=11063536 -HeapAlloc dt=6 heapalloc_value=11071728 -HeapAlloc dt=6 heapalloc_value=11079920 -HeapAlloc dt=9 heapalloc_value=11088112 -HeapAlloc dt=6 heapalloc_value=11096304 -HeapAlloc dt=52 heapalloc_value=11104496 -HeapAlloc dt=8 heapalloc_value=11112688 -HeapAlloc dt=7 heapalloc_value=11120880 -HeapAlloc dt=6 heapalloc_value=11129072 -HeapAlloc dt=7 heapalloc_value=11137264 -HeapAlloc dt=396 heapalloc_value=11423984 -HeapAlloc dt=2772 heapalloc_value=11432176 -HeapAlloc dt=23 heapalloc_value=11440368 -HeapAlloc dt=13 heapalloc_value=11448560 -HeapAlloc dt=10 heapalloc_value=11456752 -HeapAlloc dt=9 heapalloc_value=11464944 -HeapAlloc dt=9 heapalloc_value=11473136 -HeapAlloc dt=9 heapalloc_value=11481328 -HeapAlloc dt=9 heapalloc_value=11489520 -HeapAlloc dt=9 heapalloc_value=11497712 -HeapAlloc dt=12 heapalloc_value=11505904 -HeapAlloc dt=9 heapalloc_value=11514096 -HeapAlloc dt=10 heapalloc_value=11522288 -HeapAlloc dt=9 heapalloc_value=11530480 -HeapAlloc dt=10 heapalloc_value=11538672 -HeapAlloc dt=10 heapalloc_value=11546864 -HeapAlloc dt=10 heapalloc_value=11555056 -HeapAlloc dt=9 heapalloc_value=11563248 -HeapAlloc dt=21 heapalloc_value=11571440 -HeapAlloc dt=9 heapalloc_value=11579632 -HeapAlloc dt=6 heapalloc_value=11587824 -HeapAlloc dt=7 heapalloc_value=11596016 -HeapAlloc dt=6 heapalloc_value=11604208 -HeapAlloc dt=6 heapalloc_value=11612400 -HeapAlloc dt=6 heapalloc_value=11620592 -HeapAlloc dt=103 heapalloc_value=11628784 -HeapAlloc dt=9 heapalloc_value=11636976 -HeapAlloc dt=7 heapalloc_value=11645168 -HeapAlloc dt=6 heapalloc_value=11653360 -HeapAlloc dt=7 heapalloc_value=11661552 -HeapAlloc dt=6 heapalloc_value=11669744 -HeapAlloc dt=6 heapalloc_value=11677936 -HeapAlloc dt=6 heapalloc_value=11686128 -HeapAlloc dt=6 heapalloc_value=11694320 -HeapAlloc dt=7 heapalloc_value=11702512 -HeapAlloc dt=6 heapalloc_value=11710704 -HeapAlloc dt=6 heapalloc_value=11718896 -HeapAlloc dt=6 heapalloc_value=11727088 -HeapAlloc dt=6 heapalloc_value=11735280 -HeapAlloc dt=6 heapalloc_value=11743472 -HeapAlloc dt=6 heapalloc_value=11751664 -HeapAlloc dt=6 heapalloc_value=11759856 -HeapAlloc dt=7 heapalloc_value=11768048 -HeapAlloc dt=5 heapalloc_value=11776240 -HeapAlloc dt=7 heapalloc_value=11784432 -HeapAlloc dt=6 heapalloc_value=11792624 -HeapAlloc dt=44 heapalloc_value=11800816 -HeapAlloc dt=82 heapalloc_value=11809008 -HeapAlloc dt=9 heapalloc_value=11817200 -HeapAlloc dt=6 heapalloc_value=11825392 -HeapAlloc dt=6 heapalloc_value=11833584 -HeapAlloc dt=7 heapalloc_value=11841776 -HeapAlloc dt=6 heapalloc_value=11849968 -HeapAlloc dt=6 heapalloc_value=11858160 -HeapAlloc dt=6 heapalloc_value=11866352 -HeapAlloc dt=7 heapalloc_value=11874544 -HeapAlloc dt=6 heapalloc_value=11882736 -HeapAlloc dt=6 heapalloc_value=11890928 -HeapAlloc dt=6 heapalloc_value=11899120 -HeapAlloc dt=6 heapalloc_value=11907312 -HeapAlloc dt=7 heapalloc_value=11915504 -HeapAlloc dt=6 heapalloc_value=11923696 -HeapAlloc dt=6 heapalloc_value=11931888 -HeapAlloc dt=6 heapalloc_value=11940080 -HeapAlloc dt=6 heapalloc_value=11948272 -HeapAlloc dt=6 heapalloc_value=11956464 -HeapAlloc dt=6 heapalloc_value=11964656 -HeapAlloc dt=6 heapalloc_value=11972848 -HeapAlloc dt=7 heapalloc_value=11981040 -HeapAlloc dt=6 heapalloc_value=11989232 -HeapAlloc dt=6 heapalloc_value=11997424 -HeapAlloc dt=6 heapalloc_value=12005616 -HeapAlloc dt=7 heapalloc_value=12013808 -HeapAlloc dt=6 heapalloc_value=12022000 -HeapAlloc dt=6 heapalloc_value=12030192 -HeapAlloc dt=6 heapalloc_value=12038384 -HeapAlloc dt=6 heapalloc_value=12046576 -HeapAlloc dt=6 heapalloc_value=12054768 -HeapAlloc dt=6 heapalloc_value=12062960 -HeapAlloc dt=67 heapalloc_value=12071152 -HeapAlloc dt=8 heapalloc_value=12079344 -HeapAlloc dt=7 heapalloc_value=12087536 -HeapAlloc dt=6 heapalloc_value=12095728 -HeapAlloc dt=6 heapalloc_value=12103920 -HeapAlloc dt=6 heapalloc_value=12112112 -HeapAlloc dt=6 heapalloc_value=12120304 -HeapAlloc dt=6 heapalloc_value=12128496 -HeapAlloc dt=6 heapalloc_value=12136688 -HeapAlloc dt=6 heapalloc_value=12144880 -HeapAlloc dt=59 heapalloc_value=12153072 -HeapAlloc dt=8 heapalloc_value=12161264 -HeapAlloc dt=6 heapalloc_value=12169456 -HeapAlloc dt=6 heapalloc_value=12177648 -HeapAlloc dt=6 heapalloc_value=12185840 -HeapAlloc dt=6 heapalloc_value=12194032 -HeapAlloc dt=7 heapalloc_value=12202224 -HeapAlloc dt=6 heapalloc_value=12210416 -HeapAlloc dt=6 heapalloc_value=12218608 -GoBlock dt=12 reason_string=19 stack=21 -ProcStop dt=223 -ProcStart dt=12071 p=1 p_seq=25 -GoUnblock dt=11 g=1 g_seq=37 stack=0 -GoStart dt=161 g=1 g_seq=38 -HeapAlloc dt=75 heapalloc_value=12226800 -HeapAlloc dt=11 heapalloc_value=12234992 -HeapAlloc dt=6 heapalloc_value=12243184 -HeapAlloc dt=6 heapalloc_value=12251376 -HeapAlloc dt=7 heapalloc_value=12259568 -HeapAlloc dt=6 heapalloc_value=12267760 -HeapAlloc dt=6 heapalloc_value=12275952 -HeapAlloc dt=6 heapalloc_value=12284144 -HeapAlloc dt=6 heapalloc_value=12292336 -HeapAlloc dt=7 heapalloc_value=12300528 -HeapAlloc dt=6 heapalloc_value=12308720 -HeapAlloc dt=6 heapalloc_value=12316912 -HeapAlloc dt=7 heapalloc_value=12325104 -HeapAlloc dt=87 heapalloc_value=12333296 -HeapAlloc dt=25 heapalloc_value=12341488 -HeapAlloc dt=7 heapalloc_value=12349680 -HeapAlloc dt=6 heapalloc_value=12357872 -HeapAlloc dt=7 heapalloc_value=12366064 -HeapAlloc dt=10 heapalloc_value=12374256 -HeapAlloc dt=7 heapalloc_value=12382448 -HeapAlloc dt=9 heapalloc_value=12390640 -HeapAlloc dt=6 heapalloc_value=12398832 -HeapAlloc dt=6 heapalloc_value=12407024 -HeapAlloc dt=7 heapalloc_value=12415216 -HeapAlloc dt=6 heapalloc_value=12423408 -HeapAlloc dt=44 heapalloc_value=12431600 -HeapAlloc dt=7 heapalloc_value=12439792 -HeapAlloc dt=7 heapalloc_value=12447984 -HeapAlloc dt=6 heapalloc_value=12456176 -HeapAlloc dt=6 heapalloc_value=12464368 -HeapAlloc dt=6 heapalloc_value=12472560 -HeapAlloc dt=6 heapalloc_value=12480752 -HeapAlloc dt=7 heapalloc_value=12488944 -HeapAlloc dt=6 heapalloc_value=12497136 -HeapAlloc dt=6 heapalloc_value=12505328 -HeapAlloc dt=6 heapalloc_value=12513520 -HeapAlloc dt=6 heapalloc_value=12521712 -HeapAlloc dt=7 heapalloc_value=12529904 -HeapAlloc dt=6 heapalloc_value=12538096 -HeapAlloc dt=6 heapalloc_value=12546288 -HeapAlloc dt=6 heapalloc_value=12554480 -HeapAlloc dt=6 heapalloc_value=12562672 -HeapAlloc dt=6 heapalloc_value=12570864 -HeapAlloc dt=11 heapalloc_value=12579056 -HeapAlloc dt=6 heapalloc_value=12587248 -HeapAlloc dt=455 heapalloc_value=12595440 -HeapAlloc dt=12 heapalloc_value=12603632 -HeapAlloc dt=7 heapalloc_value=12611824 -HeapAlloc dt=6 heapalloc_value=12620016 -HeapAlloc dt=7 heapalloc_value=12628208 -HeapAlloc dt=6 heapalloc_value=12636400 -HeapAlloc dt=6 heapalloc_value=12644592 -HeapAlloc dt=6 heapalloc_value=12652784 -HeapAlloc dt=7 heapalloc_value=12660976 -HeapAlloc dt=6 heapalloc_value=12669168 -HeapAlloc dt=97 heapalloc_value=12677360 -HeapAlloc dt=8 heapalloc_value=12685552 -HeapAlloc dt=6 heapalloc_value=12693744 -HeapAlloc dt=6 heapalloc_value=12701936 -HeapAlloc dt=6 heapalloc_value=12710128 -HeapAlloc dt=6 heapalloc_value=12718320 -HeapAlloc dt=6 heapalloc_value=12726512 -HeapAlloc dt=7 heapalloc_value=12734704 -HeapAlloc dt=6 heapalloc_value=12742896 -HeapAlloc dt=6 heapalloc_value=12751088 -HeapAlloc dt=6 heapalloc_value=12759280 -HeapAlloc dt=7 heapalloc_value=12767472 -HeapAlloc dt=7 heapalloc_value=12775664 -HeapAlloc dt=6 heapalloc_value=12783856 -HeapAlloc dt=6 heapalloc_value=12792048 -HeapAlloc dt=6 heapalloc_value=12800240 -HeapAlloc dt=7 heapalloc_value=12808432 -HeapAlloc dt=6 heapalloc_value=12816624 -HeapAlloc dt=6 heapalloc_value=12824816 -HeapAlloc dt=6 heapalloc_value=12833008 -HeapAlloc dt=6 heapalloc_value=12841200 -HeapAlloc dt=42 heapalloc_value=12849392 -HeapAlloc dt=79 heapalloc_value=12857584 -HeapAlloc dt=8 heapalloc_value=12865776 -HeapAlloc dt=6 heapalloc_value=12873968 -HeapAlloc dt=6 heapalloc_value=12882160 -HeapAlloc dt=7 heapalloc_value=12890352 -HeapAlloc dt=6 heapalloc_value=12898544 -HeapAlloc dt=6 heapalloc_value=12906736 -HeapAlloc dt=6 heapalloc_value=12914928 -HeapAlloc dt=7 heapalloc_value=12923120 -HeapAlloc dt=6 heapalloc_value=12931312 -HeapAlloc dt=6 heapalloc_value=12939504 -HeapAlloc dt=6 heapalloc_value=12947696 -HeapAlloc dt=6 heapalloc_value=12955888 -HeapAlloc dt=6 heapalloc_value=12964080 -HeapAlloc dt=6 heapalloc_value=12972272 -HeapAlloc dt=6 heapalloc_value=12980464 -HeapAlloc dt=7 heapalloc_value=12988656 -HeapAlloc dt=6 heapalloc_value=12996848 -HeapAlloc dt=6 heapalloc_value=13005040 -HeapAlloc dt=6 heapalloc_value=13013232 -HeapAlloc dt=7 heapalloc_value=13021424 -HeapAlloc dt=6 heapalloc_value=13029616 -HeapAlloc dt=6 heapalloc_value=13037808 -HeapAlloc dt=6 heapalloc_value=13046000 -HeapAlloc dt=6 heapalloc_value=13054192 -HeapAlloc dt=7 heapalloc_value=13062384 -HeapAlloc dt=6 heapalloc_value=13070576 -HeapAlloc dt=6 heapalloc_value=13078768 -HeapAlloc dt=6 heapalloc_value=13086960 -HeapAlloc dt=6 heapalloc_value=13095152 -HeapAlloc dt=7 heapalloc_value=13103344 -HeapAlloc dt=6 heapalloc_value=13111536 -HeapAlloc dt=67 heapalloc_value=13119728 -HeapAlloc dt=8 heapalloc_value=13127920 -HeapAlloc dt=6 heapalloc_value=13136112 -HeapAlloc dt=6 heapalloc_value=13144304 -HeapAlloc dt=7 heapalloc_value=13152496 -HeapAlloc dt=6 heapalloc_value=13160688 -HeapAlloc dt=6 heapalloc_value=13168880 -HeapAlloc dt=6 heapalloc_value=13177072 -HeapAlloc dt=6 heapalloc_value=13185264 -HeapAlloc dt=6 heapalloc_value=13193456 -HeapAlloc dt=105 heapalloc_value=13201648 -HeapAlloc dt=8 heapalloc_value=13209840 -HeapAlloc dt=6 heapalloc_value=13218032 -HeapAlloc dt=6 heapalloc_value=13226224 -HeapAlloc dt=6 heapalloc_value=13234416 -HeapAlloc dt=6 heapalloc_value=13242608 -GoBlock dt=10 reason_string=19 stack=21 -ProcStop dt=13 -ProcStart dt=3484 p=2 p_seq=18 -ProcStop dt=18 -ProcStart dt=5821 p=1 p_seq=27 -ProcStop dt=12 -ProcStart dt=16793 p=1 p_seq=28 -GoUnblock dt=16 g=1 g_seq=41 stack=0 -GoStart dt=193 g=1 g_seq=42 -HeapAlloc dt=36 heapalloc_value=14643440 -HeapAlloc dt=29 heapalloc_value=14651632 -HeapAlloc dt=16 heapalloc_value=14659824 -HeapAlloc dt=20 heapalloc_value=14668016 -HeapAlloc dt=13 heapalloc_value=14676208 -HeapAlloc dt=84 heapalloc_value=14684400 -HeapAlloc dt=17 heapalloc_value=14692592 -HeapAlloc dt=12 heapalloc_value=14700784 -HeapAlloc dt=12 heapalloc_value=14708976 -HeapAlloc dt=12 heapalloc_value=14717168 -HeapAlloc dt=12 heapalloc_value=14725360 -HeapAlloc dt=22 heapalloc_value=14733552 -HeapAlloc dt=12 heapalloc_value=14741744 -HeapAlloc dt=13 heapalloc_value=14749936 -HeapAlloc dt=12 heapalloc_value=14758128 -HeapAlloc dt=11 heapalloc_value=14766320 -HeapAlloc dt=13 heapalloc_value=14774512 -HeapAlloc dt=12 heapalloc_value=14782704 -HeapAlloc dt=12 heapalloc_value=14790896 -HeapAlloc dt=61 heapalloc_value=14799088 -HeapAlloc dt=13 heapalloc_value=14807280 -HeapAlloc dt=7 heapalloc_value=14815472 -HeapAlloc dt=11 heapalloc_value=14823664 -HeapAlloc dt=9 heapalloc_value=14831856 -HeapAlloc dt=11 heapalloc_value=14840048 -HeapAlloc dt=6 heapalloc_value=14848240 -HeapAlloc dt=7 heapalloc_value=14856432 -HeapAlloc dt=9 heapalloc_value=14864624 -HeapAlloc dt=6 heapalloc_value=14872816 -HeapAlloc dt=6 heapalloc_value=14881008 -HeapAlloc dt=46 heapalloc_value=14889200 -HeapAlloc dt=8 heapalloc_value=14897392 -HeapAlloc dt=6 heapalloc_value=14905584 -HeapAlloc dt=7 heapalloc_value=14913776 -HeapAlloc dt=6 heapalloc_value=14921968 -HeapAlloc dt=7 heapalloc_value=14930160 -HeapAlloc dt=7 heapalloc_value=14938352 -HeapAlloc dt=6 heapalloc_value=14946544 -HeapAlloc dt=155 heapalloc_value=14954736 -HeapAlloc dt=9 heapalloc_value=14962928 -HeapAlloc dt=6 heapalloc_value=14971120 -HeapAlloc dt=7 heapalloc_value=14979312 -HeapAlloc dt=6 heapalloc_value=14987504 -HeapAlloc dt=6 heapalloc_value=14995696 -HeapAlloc dt=6 heapalloc_value=15003888 -HeapAlloc dt=6 heapalloc_value=15012080 -HeapAlloc dt=8 heapalloc_value=15020272 -HeapAlloc dt=6 heapalloc_value=15028464 -HeapAlloc dt=7 heapalloc_value=15036656 -HeapAlloc dt=6 heapalloc_value=15044848 -HeapAlloc dt=6 heapalloc_value=15053040 -HeapAlloc dt=6 heapalloc_value=15061232 -HeapAlloc dt=6 heapalloc_value=15069424 -HeapAlloc dt=6 heapalloc_value=15077616 -HeapAlloc dt=8 heapalloc_value=15085808 -HeapAlloc dt=6 heapalloc_value=15094000 -HeapAlloc dt=7 heapalloc_value=15102192 -HeapAlloc dt=6 heapalloc_value=15110384 -HeapAlloc dt=6 heapalloc_value=15118576 -HeapAlloc dt=6 heapalloc_value=15126768 -HeapAlloc dt=68 heapalloc_value=15134960 -HeapAlloc dt=8 heapalloc_value=15143152 -HeapAlloc dt=6 heapalloc_value=15151344 -HeapAlloc dt=6 heapalloc_value=15159536 -HeapAlloc dt=6 heapalloc_value=15167728 -HeapAlloc dt=6 heapalloc_value=15175920 -HeapAlloc dt=6 heapalloc_value=15184112 -HeapAlloc dt=6 heapalloc_value=15192304 -HeapAlloc dt=6 heapalloc_value=15200496 -HeapAlloc dt=6 heapalloc_value=15208688 -HeapAlloc dt=68 heapalloc_value=15216880 -HeapAlloc dt=8 heapalloc_value=15225072 -HeapAlloc dt=7 heapalloc_value=15233264 -HeapAlloc dt=6 heapalloc_value=15241456 -HeapAlloc dt=6 heapalloc_value=15249648 -HeapAlloc dt=7 heapalloc_value=15257840 -HeapAlloc dt=6 heapalloc_value=15266032 -HeapAlloc dt=6 heapalloc_value=15274224 -HeapAlloc dt=8 heapalloc_value=15282416 -HeapAlloc dt=6 heapalloc_value=15290608 -HeapAlloc dt=7 heapalloc_value=15298800 -HeapAlloc dt=43 heapalloc_value=15306992 -HeapAlloc dt=7 heapalloc_value=15315184 -HeapAlloc dt=6 heapalloc_value=15323376 -HeapAlloc dt=7 heapalloc_value=15331568 -HeapAlloc dt=6 heapalloc_value=15339760 -HeapAlloc dt=8 heapalloc_value=15347952 -HeapAlloc dt=6 heapalloc_value=15356144 -HeapAlloc dt=6 heapalloc_value=15364336 -HeapAlloc dt=7 heapalloc_value=15372528 -HeapAlloc dt=6 heapalloc_value=15380720 -HeapAlloc dt=6 heapalloc_value=15388912 -HeapAlloc dt=6 heapalloc_value=15397104 -HeapAlloc dt=7 heapalloc_value=15405296 -HeapAlloc dt=8 heapalloc_value=15413488 -HeapAlloc dt=6 heapalloc_value=15421680 -HeapAlloc dt=6 heapalloc_value=15429872 -HeapAlloc dt=6 heapalloc_value=15438064 -HeapAlloc dt=7 heapalloc_value=15446256 -HeapAlloc dt=7 heapalloc_value=15454448 -HeapAlloc dt=6 heapalloc_value=15462640 -HeapAlloc dt=6 heapalloc_value=15470832 -HeapAlloc dt=470 heapalloc_value=15479024 -HeapAlloc dt=14 heapalloc_value=15487216 -HeapAlloc dt=6 heapalloc_value=15495408 -HeapAlloc dt=7 heapalloc_value=15503600 -HeapAlloc dt=6 heapalloc_value=15511792 -HeapAlloc dt=7 heapalloc_value=15519984 -HeapAlloc dt=6 heapalloc_value=15528176 -HeapAlloc dt=6 heapalloc_value=15536368 -HeapAlloc dt=6 heapalloc_value=15544560 -HeapAlloc dt=5 heapalloc_value=15552752 -HeapAlloc dt=6 heapalloc_value=15560944 -HeapAlloc dt=6 heapalloc_value=15569136 -HeapAlloc dt=6 heapalloc_value=15577328 -HeapAlloc dt=6 heapalloc_value=15585520 -HeapAlloc dt=6 heapalloc_value=15593712 -HeapAlloc dt=6 heapalloc_value=15601904 -HeapAlloc dt=6 heapalloc_value=15610096 -HeapAlloc dt=6 heapalloc_value=15618288 -HeapAlloc dt=6 heapalloc_value=15626480 -HeapAlloc dt=6 heapalloc_value=15634672 -HeapAlloc dt=6 heapalloc_value=15642864 -HeapAlloc dt=6 heapalloc_value=15651056 -HeapAlloc dt=77 heapalloc_value=15659248 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=214 -ProcStart dt=17833 p=2 p_seq=20 -ProcStop dt=18 -ProcStart dt=9948 p=4 p_seq=4 -ProcStop dt=23 -ProcStart dt=5868 p=3 p_seq=6 -ProcStop dt=25 -ProcStart dt=94440 p=3 p_seq=7 -ProcStop dt=17 -ProcStart dt=7801 p=3 p_seq=8 -GoStart dt=172 g=13 g_seq=1 -GoStop dt=306385 reason_string=16 stack=52 -GoStart dt=19 g=13 g_seq=2 -GoStop dt=316412 reason_string=16 stack=52 -GoStart dt=14 g=13 g_seq=3 -GoDestroy dt=158437 -ProcStop dt=31 -EventBatch gen=1 m=2852342 time=420901452973 size=3683 -ProcStart dt=335 p=2 p_seq=1 -GoStart dt=164 g=21 g_seq=1 -HeapAlloc dt=242 heapalloc_value=1654784 -GoSyscallBegin dt=3053 p_seq=2 stack=17 -GoSyscallEnd dt=264 -GoBlock dt=22 reason_string=15 stack=18 -ProcStop dt=21 -ProcStart dt=370120 p=0 p_seq=11 -ProcStop dt=21 -ProcStart dt=7624 p=1 p_seq=5 -ProcStop dt=18 -ProcStart dt=386 p=2 p_seq=4 -GoStart dt=180 g=24 g_seq=1 -GoBlock dt=122 reason_string=15 stack=26 -ProcStop dt=14 -ProcStart dt=378 p=2 p_seq=7 -ProcStop dt=16 -ProcStart dt=1400 p=2 p_seq=8 -GoStart dt=127 g=9 g_seq=1 -GoBlock dt=106 reason_string=15 stack=26 -ProcStop dt=5 -ProcStart dt=482 p=1 p_seq=14 -ProcStop dt=11 -ProcStart dt=2026 p=3 p_seq=2 -HeapAlloc dt=470 heapalloc_value=4079616 -HeapAlloc dt=451 heapalloc_value=4128768 -HeapAlloc dt=21 heapalloc_value=4136960 -GoStart dt=1190 g=4 g_seq=2 -GoBlock dt=29 reason_string=15 stack=32 -ProcStop dt=34 -ProcStart dt=77810 p=3 p_seq=3 -ProcStop dt=32 -ProcStart dt=600 p=3 p_seq=4 -GoUnblock dt=14 g=25 g_seq=6 stack=0 -GoStart dt=184 g=25 g_seq=7 -GoLabel dt=3 label_string=2 -GoBlock dt=145 reason_string=15 stack=26 -ProcStop dt=27 -ProcStart dt=122643 p=3 p_seq=5 -GoStart dt=236 g=4 g_seq=8 -GoBlock dt=24 reason_string=15 stack=32 -GoUnblock dt=25 g=8 g_seq=4 stack=0 -GoStart dt=9 g=8 g_seq=5 -GoLabel dt=1 label_string=4 -GoBlock dt=1341 reason_string=15 stack=26 -GoUnblock dt=4399 g=1 g_seq=45 stack=0 -GoStart dt=12 g=1 g_seq=46 -HeapAlloc dt=416 heapalloc_value=16705232 -HeapAlloc dt=47 heapalloc_value=16721328 -HeapAlloc dt=35 heapalloc_value=16729520 -HeapAlloc dt=24 heapalloc_value=16737712 -HeapAlloc dt=26 heapalloc_value=16745904 -HeapAlloc dt=24 heapalloc_value=16754096 -HeapAlloc dt=13 heapalloc_value=16762288 -HeapAlloc dt=15 heapalloc_value=16770480 -HeapAlloc dt=14 heapalloc_value=16778672 -HeapAlloc dt=14 heapalloc_value=16786864 -HeapAlloc dt=14 heapalloc_value=16795056 -HeapAlloc dt=13 heapalloc_value=16803248 -HeapAlloc dt=12 heapalloc_value=16811440 -HeapAlloc dt=14 heapalloc_value=16819632 -HeapAlloc dt=13 heapalloc_value=16827824 -HeapAlloc dt=13 heapalloc_value=16836016 -HeapAlloc dt=14 heapalloc_value=16844208 -HeapAlloc dt=14 heapalloc_value=16852400 -HeapAlloc dt=13 heapalloc_value=16860592 -HeapAlloc dt=13 heapalloc_value=16868784 -HeapAlloc dt=12 heapalloc_value=16876976 -HeapAlloc dt=19 heapalloc_value=16885168 -HeapAlloc dt=15 heapalloc_value=16893360 -HeapAlloc dt=14 heapalloc_value=16901552 -HeapAlloc dt=14 heapalloc_value=16909744 -HeapAlloc dt=13 heapalloc_value=16917936 -HeapAlloc dt=13 heapalloc_value=16926128 -HeapAlloc dt=12 heapalloc_value=16934320 -HeapAlloc dt=14 heapalloc_value=16942512 -HeapAlloc dt=14 heapalloc_value=16950704 -HeapAlloc dt=12 heapalloc_value=16958896 -HeapAlloc dt=13 heapalloc_value=16967088 -HeapAlloc dt=479 heapalloc_value=16975280 -HeapAlloc dt=207 heapalloc_value=16983472 -HeapAlloc dt=15 heapalloc_value=16991664 -HeapAlloc dt=111 heapalloc_value=16999856 -HeapAlloc dt=14 heapalloc_value=17008048 -HeapAlloc dt=13 heapalloc_value=17016240 -HeapAlloc dt=13 heapalloc_value=17024432 -HeapAlloc dt=13 heapalloc_value=17032624 -HeapAlloc dt=12 heapalloc_value=17040816 -HeapAlloc dt=14 heapalloc_value=17049008 -HeapAlloc dt=13 heapalloc_value=17057200 -HeapAlloc dt=15 heapalloc_value=17065392 -HeapAlloc dt=14 heapalloc_value=17073584 -HeapAlloc dt=15 heapalloc_value=17081776 -HeapAlloc dt=14 heapalloc_value=17089968 -HeapAlloc dt=14 heapalloc_value=17098160 -HeapAlloc dt=14 heapalloc_value=17106352 -HeapAlloc dt=15 heapalloc_value=17114544 -HeapAlloc dt=14 heapalloc_value=17122736 -HeapAlloc dt=19 heapalloc_value=17130928 -HeapAlloc dt=20 heapalloc_value=17139120 -HeapAlloc dt=19 heapalloc_value=17147312 -HeapAlloc dt=14 heapalloc_value=17155504 -HeapAlloc dt=14 heapalloc_value=17163696 -HeapAlloc dt=15 heapalloc_value=17171888 -HeapAlloc dt=14 heapalloc_value=17180080 -HeapAlloc dt=14 heapalloc_value=17188272 -HeapAlloc dt=16 heapalloc_value=17196464 -HeapAlloc dt=147 heapalloc_value=17204656 -HeapAlloc dt=17 heapalloc_value=17212848 -HeapAlloc dt=14 heapalloc_value=17221040 -HeapAlloc dt=15 heapalloc_value=17229232 -HeapAlloc dt=133 heapalloc_value=17237424 -HeapAlloc dt=66 heapalloc_value=17245616 -HeapAlloc dt=17 heapalloc_value=17253808 -HeapAlloc dt=14 heapalloc_value=17262000 -HeapAlloc dt=14 heapalloc_value=17270192 -HeapAlloc dt=15 heapalloc_value=17278384 -HeapAlloc dt=14 heapalloc_value=17286576 -HeapAlloc dt=14 heapalloc_value=17294768 -HeapAlloc dt=17 heapalloc_value=17302960 -HeapAlloc dt=14 heapalloc_value=17311152 -GoStop dt=24 reason_string=16 stack=46 -GoStart dt=859 g=1 g_seq=47 -HeapAlloc dt=19 heapalloc_value=17319344 -HeapAlloc dt=16 heapalloc_value=17327536 -HeapAlloc dt=14 heapalloc_value=17335728 -HeapAlloc dt=14 heapalloc_value=17343920 -HeapAlloc dt=15 heapalloc_value=17352112 -HeapAlloc dt=14 heapalloc_value=17360304 -HeapAlloc dt=14 heapalloc_value=17368496 -HeapAlloc dt=14 heapalloc_value=17376688 -HeapAlloc dt=18 heapalloc_value=17384880 -HeapAlloc dt=17 heapalloc_value=17393072 -HeapAlloc dt=14 heapalloc_value=17401264 -HeapAlloc dt=18 heapalloc_value=17409456 -HeapAlloc dt=14 heapalloc_value=17417648 -HeapAlloc dt=14 heapalloc_value=17425840 -HeapAlloc dt=15 heapalloc_value=17434032 -HeapAlloc dt=12 heapalloc_value=17442224 -HeapAlloc dt=18 heapalloc_value=17450416 -HeapAlloc dt=69 heapalloc_value=17458608 -HeapAlloc dt=15 heapalloc_value=17466800 -HeapAlloc dt=14 heapalloc_value=17474992 -HeapAlloc dt=12 heapalloc_value=17483184 -HeapAlloc dt=14 heapalloc_value=17491376 -HeapAlloc dt=405 heapalloc_value=17499568 -GoStop dt=11 reason_string=16 stack=31 -ProcStop dt=10 -ProcStart dt=1071 p=0 p_seq=41 -GoStart dt=509 g=1 g_seq=48 -HeapAlloc dt=31 heapalloc_value=16800656 -GCSweepBegin dt=40 stack=38 -GCSweepEnd dt=407 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=25 heapalloc_value=16808848 -GCSweepBegin dt=25 stack=38 -GCSweepEnd dt=1029 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=20 heapalloc_value=16817040 -GCSweepBegin dt=33 stack=38 -GCSweepEnd dt=1076 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=13 heapalloc_value=16825232 -GCSweepBegin dt=30 stack=38 -GCSweepEnd dt=1298 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=17 heapalloc_value=16833424 -GCSweepBegin dt=29 stack=38 -GCSweepEnd dt=1140 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=11 heapalloc_value=16841616 -GCSweepBegin dt=32 stack=38 -GCSweepEnd dt=1161 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=14 heapalloc_value=16849808 -GCSweepBegin dt=31 stack=38 -GCSweepEnd dt=763 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=12 heapalloc_value=16858000 -GCSweepBegin dt=29 stack=38 -GCSweepEnd dt=1113 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=9 heapalloc_value=16866192 -GCSweepBegin dt=25 stack=38 -GCSweepEnd dt=1068 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=21 heapalloc_value=16874384 -GCSweepBegin dt=36 stack=38 -GCSweepEnd dt=478 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=7 heapalloc_value=16882576 -GCSweepBegin dt=16 stack=38 -GCSweepEnd dt=32 swept_value=90112 reclaimed_value=0 -HeapAlloc dt=11 heapalloc_value=16890768 -HeapAlloc dt=31 heapalloc_value=16898960 -HeapAlloc dt=24 heapalloc_value=16907152 -HeapAlloc dt=17 heapalloc_value=16915344 -HeapAlloc dt=17 heapalloc_value=16923536 -HeapAlloc dt=23 heapalloc_value=16931728 -HeapAlloc dt=18 heapalloc_value=16939920 -HeapAlloc dt=22 heapalloc_value=16948112 -HeapAlloc dt=17 heapalloc_value=16956304 -HeapAlloc dt=16 heapalloc_value=16964496 -HeapAlloc dt=16 heapalloc_value=16972688 -HeapAlloc dt=106 heapalloc_value=16980880 -HeapAlloc dt=19 heapalloc_value=16989072 -HeapAlloc dt=16 heapalloc_value=16997264 -HeapAlloc dt=13 heapalloc_value=17005456 -HeapAlloc dt=13 heapalloc_value=17013648 -HeapAlloc dt=96 heapalloc_value=17021840 -HeapAlloc dt=16 heapalloc_value=17030032 -GoBlock dt=18 reason_string=19 stack=21 -ProcStop dt=315 -ProcStart dt=17450 p=2 p_seq=23 -ProcStop dt=14 -ProcStart dt=6669 p=0 p_seq=44 -ProcStop dt=11 -ProcStart dt=16752 p=0 p_seq=45 -GoUnblock dt=14 g=1 g_seq=51 stack=0 -GoStart dt=146 g=1 g_seq=52 -HeapAlloc dt=31 heapalloc_value=18529168 -HeapAlloc dt=21 heapalloc_value=18537360 -HeapAlloc dt=13 heapalloc_value=18545552 -HeapAlloc dt=77 heapalloc_value=18553744 -HeapAlloc dt=21 heapalloc_value=18561936 -HeapAlloc dt=15 heapalloc_value=18570128 -HeapAlloc dt=12 heapalloc_value=18578320 -HeapAlloc dt=12 heapalloc_value=18586512 -HeapAlloc dt=12 heapalloc_value=18594704 -HeapAlloc dt=16 heapalloc_value=18602896 -HeapAlloc dt=14 heapalloc_value=18611088 -HeapAlloc dt=13 heapalloc_value=18619280 -HeapAlloc dt=17 heapalloc_value=18627472 -HeapAlloc dt=13 heapalloc_value=18635664 -HeapAlloc dt=14 heapalloc_value=18643856 -HeapAlloc dt=12 heapalloc_value=18652048 -HeapAlloc dt=12 heapalloc_value=18660240 -HeapAlloc dt=12 heapalloc_value=18668432 -HeapAlloc dt=12 heapalloc_value=18676624 -HeapAlloc dt=12 heapalloc_value=18684816 -HeapAlloc dt=93 heapalloc_value=18693008 -HeapAlloc dt=17 heapalloc_value=18701200 -HeapAlloc dt=12 heapalloc_value=18709392 -HeapAlloc dt=13 heapalloc_value=18717584 -HeapAlloc dt=15 heapalloc_value=18725776 -HeapAlloc dt=12 heapalloc_value=18733968 -HeapAlloc dt=13 heapalloc_value=18742160 -HeapAlloc dt=14 heapalloc_value=18750352 -HeapAlloc dt=12 heapalloc_value=18758544 -HeapAlloc dt=54 heapalloc_value=18766736 -HeapAlloc dt=13 heapalloc_value=18774928 -HeapAlloc dt=13 heapalloc_value=18783120 -HeapAlloc dt=12 heapalloc_value=18791312 -HeapAlloc dt=13 heapalloc_value=18799504 -HeapAlloc dt=12 heapalloc_value=18807696 -HeapAlloc dt=13 heapalloc_value=18815888 -HeapAlloc dt=12 heapalloc_value=18824080 -HeapAlloc dt=13 heapalloc_value=18832272 -HeapAlloc dt=12 heapalloc_value=18840464 -HeapAlloc dt=13 heapalloc_value=18848656 -HeapAlloc dt=12 heapalloc_value=18856848 -HeapAlloc dt=13 heapalloc_value=18865040 -HeapAlloc dt=13 heapalloc_value=18873232 -HeapAlloc dt=12 heapalloc_value=18881424 -HeapAlloc dt=14 heapalloc_value=18889616 -HeapAlloc dt=13 heapalloc_value=18897808 -HeapAlloc dt=12 heapalloc_value=18906000 -HeapAlloc dt=13 heapalloc_value=18914192 -HeapAlloc dt=13 heapalloc_value=18922384 -HeapAlloc dt=86 heapalloc_value=18930576 -HeapAlloc dt=15 heapalloc_value=18938768 -HeapAlloc dt=13 heapalloc_value=18946960 -HeapAlloc dt=26 heapalloc_value=18955152 -HeapAlloc dt=19 heapalloc_value=18963344 -HeapAlloc dt=12 heapalloc_value=18971536 -HeapAlloc dt=14 heapalloc_value=18979728 -HeapAlloc dt=14 heapalloc_value=18987920 -HeapAlloc dt=13 heapalloc_value=18996112 -HeapAlloc dt=12 heapalloc_value=19004304 -HeapAlloc dt=64 heapalloc_value=19012496 -HeapAlloc dt=15 heapalloc_value=19020688 -HeapAlloc dt=14 heapalloc_value=19028880 -HeapAlloc dt=14 heapalloc_value=19037072 -HeapAlloc dt=16 heapalloc_value=19045264 -HeapAlloc dt=77 heapalloc_value=19053456 -HeapAlloc dt=16 heapalloc_value=19061648 -HeapAlloc dt=13 heapalloc_value=19069840 -HeapAlloc dt=16 heapalloc_value=19078032 -HeapAlloc dt=12 heapalloc_value=19086224 -HeapAlloc dt=12 heapalloc_value=19094416 -HeapAlloc dt=13 heapalloc_value=19102608 -HeapAlloc dt=14 heapalloc_value=19110800 -HeapAlloc dt=15 heapalloc_value=19118992 -HeapAlloc dt=14 heapalloc_value=19127184 -HeapAlloc dt=13 heapalloc_value=19135376 -HeapAlloc dt=13 heapalloc_value=19143568 -HeapAlloc dt=15 heapalloc_value=19151760 -HeapAlloc dt=18 heapalloc_value=19159952 -HeapAlloc dt=16 heapalloc_value=19168144 -HeapAlloc dt=15 heapalloc_value=19176336 -HeapAlloc dt=113 heapalloc_value=19184528 -HeapAlloc dt=17 heapalloc_value=19192720 -HeapAlloc dt=13 heapalloc_value=19200912 -HeapAlloc dt=18 heapalloc_value=19209104 -HeapAlloc dt=15 heapalloc_value=19217296 -HeapAlloc dt=18 heapalloc_value=19225488 -HeapAlloc dt=15 heapalloc_value=19233680 -HeapAlloc dt=16 heapalloc_value=19241872 -HeapAlloc dt=16 heapalloc_value=19250064 -HeapAlloc dt=15 heapalloc_value=19258256 -HeapAlloc dt=14 heapalloc_value=19266448 -HeapAlloc dt=15 heapalloc_value=19274640 -HeapAlloc dt=13 heapalloc_value=19282832 -HeapAlloc dt=20 heapalloc_value=19291024 -HeapAlloc dt=15 heapalloc_value=19299216 -HeapAlloc dt=16 heapalloc_value=19307408 -HeapAlloc dt=26 heapalloc_value=19315600 -HeapAlloc dt=9 heapalloc_value=19323792 -HeapAlloc dt=6 heapalloc_value=19331984 -HeapAlloc dt=7 heapalloc_value=19340176 -HeapAlloc dt=7 heapalloc_value=19348368 -HeapAlloc dt=8 heapalloc_value=19356560 -HeapAlloc dt=70 heapalloc_value=19364752 -HeapAlloc dt=8 heapalloc_value=19372944 -HeapAlloc dt=7 heapalloc_value=19381136 -HeapAlloc dt=6 heapalloc_value=19389328 -HeapAlloc dt=7 heapalloc_value=19397520 -HeapAlloc dt=8 heapalloc_value=19405712 -HeapAlloc dt=7 heapalloc_value=19413904 -HeapAlloc dt=7 heapalloc_value=19422096 -HeapAlloc dt=8 heapalloc_value=19430288 -HeapAlloc dt=7 heapalloc_value=19438480 -HeapAlloc dt=6 heapalloc_value=19446672 -HeapAlloc dt=7 heapalloc_value=19454864 -HeapAlloc dt=7 heapalloc_value=19463056 -HeapAlloc dt=7 heapalloc_value=19471248 -HeapAlloc dt=6 heapalloc_value=19479440 -HeapAlloc dt=7 heapalloc_value=19487632 -HeapAlloc dt=6 heapalloc_value=19495824 -HeapAlloc dt=7 heapalloc_value=19504016 -HeapAlloc dt=7 heapalloc_value=19512208 -HeapAlloc dt=6 heapalloc_value=19520400 -HeapAlloc dt=8 heapalloc_value=19528592 -HeapAlloc dt=53 heapalloc_value=19536784 -HeapAlloc dt=8 heapalloc_value=19544976 -GoBlock dt=12 reason_string=19 stack=21 -ProcStop dt=196 -ProcStart dt=17347 p=2 p_seq=25 -ProcStop dt=14 -ProcStart dt=2376 p=0 p_seq=48 -ProcStop dt=11 -ProcStart dt=16736 p=0 p_seq=49 -GoUnblock dt=12 g=1 g_seq=55 stack=0 -GoStart dt=137 g=1 g_seq=56 -HeapAlloc dt=24 heapalloc_value=20577168 -HeapAlloc dt=87 heapalloc_value=20585360 -HeapAlloc dt=9 heapalloc_value=20593552 -HeapAlloc dt=6 heapalloc_value=20601744 -HeapAlloc dt=7 heapalloc_value=20609936 -HeapAlloc dt=7 heapalloc_value=20618128 -HeapAlloc dt=6 heapalloc_value=20626320 -HeapAlloc dt=7 heapalloc_value=20634512 -HeapAlloc dt=7 heapalloc_value=20642704 -HeapAlloc dt=6 heapalloc_value=20650896 -HeapAlloc dt=7 heapalloc_value=20659088 -HeapAlloc dt=7 heapalloc_value=20667280 -HeapAlloc dt=238 heapalloc_value=20675472 -HeapAlloc dt=10 heapalloc_value=20683664 -HeapAlloc dt=6 heapalloc_value=20691856 -HeapAlloc dt=7 heapalloc_value=20700048 -HeapAlloc dt=7 heapalloc_value=20708240 -HeapAlloc dt=6 heapalloc_value=20716432 -HeapAlloc dt=7 heapalloc_value=20724624 -HeapAlloc dt=6 heapalloc_value=20732816 -HeapAlloc dt=46 heapalloc_value=20741008 -HeapAlloc dt=8 heapalloc_value=20749200 -HeapAlloc dt=7 heapalloc_value=20757392 -HeapAlloc dt=7 heapalloc_value=20765584 -HeapAlloc dt=7 heapalloc_value=20773776 -HeapAlloc dt=7 heapalloc_value=20781968 -HeapAlloc dt=6 heapalloc_value=20790160 -HeapAlloc dt=7 heapalloc_value=20798352 -HeapAlloc dt=7 heapalloc_value=20806544 -HeapAlloc dt=6 heapalloc_value=20814736 -HeapAlloc dt=7 heapalloc_value=20822928 -HeapAlloc dt=7 heapalloc_value=20831120 -HeapAlloc dt=7 heapalloc_value=20839312 -HeapAlloc dt=7 heapalloc_value=20847504 -HeapAlloc dt=6 heapalloc_value=20855696 -HeapAlloc dt=7 heapalloc_value=20863888 -HeapAlloc dt=6 heapalloc_value=20872080 -HeapAlloc dt=7 heapalloc_value=20880272 -HeapAlloc dt=7 heapalloc_value=20888464 -HeapAlloc dt=6 heapalloc_value=20896656 -HeapAlloc dt=7 heapalloc_value=20904848 -HeapAlloc dt=7 heapalloc_value=20913040 -HeapAlloc dt=6 heapalloc_value=20921232 -HeapAlloc dt=7 heapalloc_value=20929424 -HeapAlloc dt=74 heapalloc_value=20937616 -HeapAlloc dt=8 heapalloc_value=20945808 -HeapAlloc dt=7 heapalloc_value=20954000 -HeapAlloc dt=6 heapalloc_value=20962192 -HeapAlloc dt=7 heapalloc_value=20970384 -HeapAlloc dt=7 heapalloc_value=20978576 -HeapAlloc dt=7 heapalloc_value=20986768 -HeapAlloc dt=6 heapalloc_value=20994960 -HeapAlloc dt=7 heapalloc_value=21003152 -HeapAlloc dt=7 heapalloc_value=21011344 -HeapAlloc dt=7 heapalloc_value=21019536 -HeapAlloc dt=6 heapalloc_value=21027728 -HeapAlloc dt=7 heapalloc_value=21035920 -HeapAlloc dt=6 heapalloc_value=21044112 -HeapAlloc dt=7 heapalloc_value=21052304 -HeapAlloc dt=7 heapalloc_value=21060496 -HeapAlloc dt=6 heapalloc_value=21068688 -HeapAlloc dt=7 heapalloc_value=21076880 -HeapAlloc dt=6 heapalloc_value=21085072 -HeapAlloc dt=7 heapalloc_value=21093264 -HeapAlloc dt=7 heapalloc_value=21101456 -HeapAlloc dt=90 heapalloc_value=21109648 -HeapAlloc dt=8 heapalloc_value=21117840 -HeapAlloc dt=6 heapalloc_value=21126032 -HeapAlloc dt=7 heapalloc_value=21134224 -HeapAlloc dt=7 heapalloc_value=21142416 -HeapAlloc dt=7 heapalloc_value=21150608 -HeapAlloc dt=6 heapalloc_value=21158800 -HeapAlloc dt=44 heapalloc_value=21166992 -HeapAlloc dt=7 heapalloc_value=21175184 -HeapAlloc dt=7 heapalloc_value=21183376 -HeapAlloc dt=7 heapalloc_value=21191568 -HeapAlloc dt=71 heapalloc_value=21199760 -HeapAlloc dt=8 heapalloc_value=21207952 -HeapAlloc dt=7 heapalloc_value=21216144 -HeapAlloc dt=7 heapalloc_value=21224336 -HeapAlloc dt=7 heapalloc_value=21232528 -HeapAlloc dt=6 heapalloc_value=21240720 -HeapAlloc dt=7 heapalloc_value=21248912 -HeapAlloc dt=7 heapalloc_value=21257104 -HeapAlloc dt=6 heapalloc_value=21265296 -HeapAlloc dt=7 heapalloc_value=21273488 -HeapAlloc dt=6 heapalloc_value=21281680 -HeapAlloc dt=7 heapalloc_value=21289872 -HeapAlloc dt=7 heapalloc_value=21298064 -HeapAlloc dt=6 heapalloc_value=21306256 -HeapAlloc dt=7 heapalloc_value=21314448 -HeapAlloc dt=6 heapalloc_value=21322640 -HeapAlloc dt=7 heapalloc_value=21330832 -HeapAlloc dt=7 heapalloc_value=21339024 -HeapAlloc dt=6 heapalloc_value=21347216 -HeapAlloc dt=7 heapalloc_value=21355408 -HeapAlloc dt=6 heapalloc_value=21363600 -HeapAlloc dt=43 heapalloc_value=21371792 -HeapAlloc dt=8 heapalloc_value=21379984 -HeapAlloc dt=7 heapalloc_value=21388176 -HeapAlloc dt=7 heapalloc_value=21396368 -HeapAlloc dt=6 heapalloc_value=21404560 -HeapAlloc dt=7 heapalloc_value=21412752 -HeapAlloc dt=7 heapalloc_value=21420944 -HeapAlloc dt=6 heapalloc_value=21429136 -HeapAlloc dt=7 heapalloc_value=21437328 -HeapAlloc dt=6 heapalloc_value=21445520 -HeapAlloc dt=7 heapalloc_value=21453712 -HeapAlloc dt=68 heapalloc_value=21461904 -HeapAlloc dt=8 heapalloc_value=21470096 -HeapAlloc dt=6 heapalloc_value=21478288 -HeapAlloc dt=7 heapalloc_value=21486480 -HeapAlloc dt=6 heapalloc_value=21494672 -HeapAlloc dt=7 heapalloc_value=21502864 -HeapAlloc dt=7 heapalloc_value=21511056 -HeapAlloc dt=6 heapalloc_value=21519248 -HeapAlloc dt=7 heapalloc_value=21527440 -HeapAlloc dt=6 heapalloc_value=21535632 -HeapAlloc dt=7 heapalloc_value=21543824 -HeapAlloc dt=7 heapalloc_value=21552016 -HeapAlloc dt=6 heapalloc_value=21560208 -HeapAlloc dt=7 heapalloc_value=21568400 -HeapAlloc dt=7 heapalloc_value=21576592 -HeapAlloc dt=7 heapalloc_value=21584784 -HeapAlloc dt=6 heapalloc_value=21592976 -GoBlock dt=11 reason_string=19 stack=21 -ProcStop dt=159 -ProcStart dt=1372 p=0 p_seq=51 -GoUnblock dt=19 g=1 g_seq=57 stack=0 -GoStart dt=211 g=1 g_seq=58 -HeapAlloc dt=39 heapalloc_value=21601168 -HeapAlloc dt=16 heapalloc_value=21609360 -HeapAlloc dt=8 heapalloc_value=21617552 -HeapAlloc dt=6 heapalloc_value=21625744 -HeapAlloc dt=101 heapalloc_value=21633936 -HeapAlloc dt=8 heapalloc_value=21642128 -HeapAlloc dt=7 heapalloc_value=21650320 -HeapAlloc dt=6 heapalloc_value=21658512 -HeapAlloc dt=7 heapalloc_value=21666704 -HeapAlloc dt=6 heapalloc_value=21674896 -HeapAlloc dt=6 heapalloc_value=21683088 -HeapAlloc dt=7 heapalloc_value=21691280 -HeapAlloc dt=6 heapalloc_value=21699472 -HeapAlloc dt=7 heapalloc_value=21707664 -HeapAlloc dt=6 heapalloc_value=21715856 -HeapAlloc dt=102 heapalloc_value=21724048 -HeapAlloc dt=8 heapalloc_value=21732240 -HeapAlloc dt=6 heapalloc_value=21740432 -HeapAlloc dt=7 heapalloc_value=21748624 -HeapAlloc dt=6 heapalloc_value=21756816 -HeapAlloc dt=7 heapalloc_value=21765008 -HeapAlloc dt=6 heapalloc_value=21773200 -HeapAlloc dt=7 heapalloc_value=21781392 -HeapAlloc dt=44 heapalloc_value=21789584 -HeapAlloc dt=7 heapalloc_value=21797776 -HeapAlloc dt=8 heapalloc_value=21805968 -HeapAlloc dt=7 heapalloc_value=21814160 -HeapAlloc dt=6 heapalloc_value=21822352 -HeapAlloc dt=7 heapalloc_value=21830544 -HeapAlloc dt=6 heapalloc_value=21838736 -HeapAlloc dt=7 heapalloc_value=21846928 -HeapAlloc dt=6 heapalloc_value=21855120 -HeapAlloc dt=6 heapalloc_value=21863312 -HeapAlloc dt=7 heapalloc_value=21871504 -HeapAlloc dt=6 heapalloc_value=21879696 -HeapAlloc dt=7 heapalloc_value=21887888 -HeapAlloc dt=6 heapalloc_value=21896080 -HeapAlloc dt=7 heapalloc_value=21904272 -HeapAlloc dt=6 heapalloc_value=21912464 -HeapAlloc dt=7 heapalloc_value=21920656 -HeapAlloc dt=6 heapalloc_value=21928848 -HeapAlloc dt=6 heapalloc_value=21937040 -HeapAlloc dt=7 heapalloc_value=21945232 -HeapAlloc dt=6 heapalloc_value=21953424 -HeapAlloc dt=7 heapalloc_value=21961616 -HeapAlloc dt=6 heapalloc_value=21969808 -HeapAlloc dt=7 heapalloc_value=21978000 -HeapAlloc dt=248 heapalloc_value=21986192 -HeapAlloc dt=18 heapalloc_value=21994384 -HeapAlloc dt=7 heapalloc_value=22002576 -HeapAlloc dt=6 heapalloc_value=22010768 -HeapAlloc dt=7 heapalloc_value=22018960 -HeapAlloc dt=6 heapalloc_value=22027152 -HeapAlloc dt=7 heapalloc_value=22035344 -HeapAlloc dt=6 heapalloc_value=22043536 -HeapAlloc dt=7 heapalloc_value=22051728 -HeapAlloc dt=6 heapalloc_value=22059920 -HeapAlloc dt=7 heapalloc_value=22068112 -HeapAlloc dt=16 heapalloc_value=22657936 -HeapAlloc dt=3547 heapalloc_value=22666128 -HeapAlloc dt=3135 heapalloc_value=22674320 -HeapAlloc dt=11 heapalloc_value=22682512 -HeapAlloc dt=8 heapalloc_value=22690704 -HeapAlloc dt=8 heapalloc_value=22698896 -HeapAlloc dt=8 heapalloc_value=22707088 -HeapAlloc dt=10 heapalloc_value=22715280 -HeapAlloc dt=8 heapalloc_value=22723472 -HeapAlloc dt=8 heapalloc_value=22731664 -HeapAlloc dt=71 heapalloc_value=22739856 -HeapAlloc dt=10 heapalloc_value=22748048 -HeapAlloc dt=8 heapalloc_value=22756240 -HeapAlloc dt=9 heapalloc_value=22764432 -HeapAlloc dt=8 heapalloc_value=22772624 -HeapAlloc dt=8 heapalloc_value=22780816 -HeapAlloc dt=9 heapalloc_value=22789008 -HeapAlloc dt=47 heapalloc_value=22797200 -HeapAlloc dt=9 heapalloc_value=22805392 -HeapAlloc dt=9 heapalloc_value=22813584 -HeapAlloc dt=8 heapalloc_value=22821776 -HeapAlloc dt=9 heapalloc_value=22829968 -HeapAlloc dt=17 heapalloc_value=22838160 -HeapAlloc dt=8 heapalloc_value=22846352 -HeapAlloc dt=6 heapalloc_value=22854544 -HeapAlloc dt=7 heapalloc_value=22862736 -HeapAlloc dt=6 heapalloc_value=22870928 -HeapAlloc dt=6 heapalloc_value=22879120 -HeapAlloc dt=6 heapalloc_value=22887312 -HeapAlloc dt=6 heapalloc_value=22895504 -HeapAlloc dt=7 heapalloc_value=22903696 -HeapAlloc dt=6 heapalloc_value=22911888 -HeapAlloc dt=6 heapalloc_value=22920080 -HeapAlloc dt=6 heapalloc_value=22928272 -HeapAlloc dt=6 heapalloc_value=22936464 -HeapAlloc dt=6 heapalloc_value=22944656 -HeapAlloc dt=7 heapalloc_value=22952848 -HeapAlloc dt=6 heapalloc_value=22961040 -HeapAlloc dt=8 heapalloc_value=22969232 -HeapAlloc dt=6 heapalloc_value=22977424 -HeapAlloc dt=6 heapalloc_value=22985616 -HeapAlloc dt=6 heapalloc_value=22993808 -HeapAlloc dt=43 heapalloc_value=23002000 -HeapAlloc dt=8 heapalloc_value=23010192 -HeapAlloc dt=6 heapalloc_value=23018384 -HeapAlloc dt=7 heapalloc_value=23026576 -HeapAlloc dt=76 heapalloc_value=23034768 -HeapAlloc dt=9 heapalloc_value=23042960 -HeapAlloc dt=6 heapalloc_value=23051152 -HeapAlloc dt=7 heapalloc_value=23059344 -HeapAlloc dt=6 heapalloc_value=23067536 -HeapAlloc dt=6 heapalloc_value=23075728 -HeapAlloc dt=7 heapalloc_value=23083920 -HeapAlloc dt=6 heapalloc_value=23092112 -HeapAlloc dt=6 heapalloc_value=23100304 -HeapAlloc dt=6 heapalloc_value=23108496 -HeapAlloc dt=6 heapalloc_value=23116688 -HeapAlloc dt=6 heapalloc_value=23124880 -HeapAlloc dt=7 heapalloc_value=23133072 -HeapAlloc dt=6 heapalloc_value=23141264 -HeapAlloc dt=8 heapalloc_value=23149456 -HeapAlloc dt=6 heapalloc_value=23157648 -HeapAlloc dt=6 heapalloc_value=23165840 -HeapAlloc dt=7 heapalloc_value=23174032 -HeapAlloc dt=6 heapalloc_value=23182224 -HeapAlloc dt=7 heapalloc_value=23190416 -HeapAlloc dt=6 heapalloc_value=23198608 -HeapAlloc dt=6 heapalloc_value=23206800 -HeapAlloc dt=22 heapalloc_value=23214912 -HeapAlloc dt=22 heapalloc_value=23223008 -HeapAlloc dt=21 heapalloc_value=23224960 -GoCreate dt=50 new_g=10 new_stack=49 stack=50 -GoCreate dt=193 new_g=11 new_stack=49 stack=50 -GoCreate dt=10 new_g=12 new_stack=49 stack=50 -GoCreate dt=5 new_g=13 new_stack=49 stack=50 -HeapAlloc dt=120 heapalloc_value=23232736 -GoCreate dt=9 new_g=14 new_stack=49 stack=50 -GoCreate dt=8 new_g=15 new_stack=49 stack=50 -GoCreate dt=7 new_g=16 new_stack=49 stack=50 -GoCreate dt=8 new_g=50 new_stack=49 stack=50 -GoBlock dt=17 reason_string=10 stack=51 +EventBatch gen=1 m=1709048 time=7689670869319 size=423 +ProcStart dt=409 p=7 p_seq=1 +GoStart dt=31 g=34 g_seq=1 +GoStop dt=291990 reason_string=16 stack=50 +GoStart dt=21 g=34 g_seq=2 +GoStop dt=315853 reason_string=16 stack=50 +GoStart dt=30 g=34 g_seq=3 +GoUnblock dt=173432 g=1 g_seq=73 stack=52 +GoDestroy dt=96 +GoStart dt=22 g=1 g_seq=74 +HeapAlloc dt=79 heapalloc_value=26397576 +HeapAlloc dt=51 heapalloc_value=26405640 +GoCreate dt=62 new_g=50 new_stack=53 stack=54 +GoBlock dt=23 reason_string=12 stack=55 GoStart dt=7 g=50 g_seq=1 -GoStop dt=306070 reason_string=16 stack=52 -GoStart dt=17 g=50 g_seq=2 -GoStop dt=316463 reason_string=16 stack=52 -GoStart dt=9 g=50 g_seq=3 -GoDestroy dt=158709 -ProcStop dt=33 -ProcStart dt=9387 p=7 p_seq=3 -ProcStop dt=14 -ProcStart dt=63662 p=7 p_seq=4 -ProcStop dt=14 -ProcStart dt=16745 p=7 p_seq=5 -GoUnblock dt=39 g=19 g_seq=2 stack=0 -GoStart dt=155 g=19 g_seq=3 -HeapAlloc dt=297 heapalloc_value=23312520 -GoBlock dt=30 reason_string=12 stack=11 -ProcStop dt=28 -ProcStart dt=706341 p=7 p_seq=6 -ProcStop dt=15 -ProcStart dt=50 p=7 p_seq=7 -ProcStop dt=8 -ProcStart dt=3274 p=6 p_seq=14 -ProcStop dt=13 -ProcStart dt=2696 p=4 p_seq=6 -ProcStop dt=17 -ProcStart dt=416 p=7 p_seq=19 -GoUnblock dt=7 g=1 g_seq=64 stack=0 -GoStart dt=7 g=1 g_seq=65 -GoSyscallBegin dt=33 p_seq=20 stack=81 -GoSyscallEnd dt=43 -GoSyscallBegin dt=134 p_seq=21 stack=82 -GoSyscallEnd dt=38 -GoSyscallBegin dt=10 p_seq=22 stack=83 -GoSyscallEnd dt=40 -GoSyscallBegin dt=7 p_seq=23 stack=84 -GoSyscallEnd dt=26 -GoSyscallBegin dt=10 p_seq=24 stack=85 -GoSyscallEnd dt=31 -GoSyscallBegin dt=39 p_seq=25 stack=86 -GoSyscallEnd dt=61 -GoBlock dt=13 reason_string=7 stack=87 -ProcStop dt=15 -EventBatch gen=1 m=2852341 time=420901453987 size=3492 -ProcStart dt=448 p=3 p_seq=1 -ProcStop dt=26 -ProcStart dt=312314 p=0 p_seq=4 -ProcStop dt=17 -ProcStart dt=16776 p=0 p_seq=5 -GoUnblock dt=31 g=1 g_seq=3 stack=0 -GoStart dt=182 g=1 g_seq=4 -HeapAlloc dt=181 heapalloc_value=1662976 -HeapAlloc dt=25 heapalloc_value=1671168 -HeapAlloc dt=210 heapalloc_value=1679360 -HeapAlloc dt=19 heapalloc_value=1687552 -HeapAlloc dt=15 heapalloc_value=1695744 -HeapAlloc dt=8 heapalloc_value=1703936 -HeapAlloc dt=15 heapalloc_value=1712128 -HeapAlloc dt=7 heapalloc_value=1720320 -HeapAlloc dt=9 heapalloc_value=1728512 -HeapAlloc dt=5 heapalloc_value=1736704 -HeapAlloc dt=8 heapalloc_value=1761280 -HeapAlloc dt=9 heapalloc_value=1769472 -HeapAlloc dt=8 heapalloc_value=1777664 -HeapAlloc dt=6 heapalloc_value=1785856 -HeapAlloc dt=8 heapalloc_value=1794048 -HeapAlloc dt=6 heapalloc_value=1802240 -HeapAlloc dt=6 heapalloc_value=1810432 -HeapAlloc dt=6 heapalloc_value=1818624 -HeapAlloc dt=6 heapalloc_value=1826816 -HeapAlloc dt=5 heapalloc_value=1851392 -HeapAlloc dt=62 heapalloc_value=1859584 -HeapAlloc dt=8 heapalloc_value=1867776 -HeapAlloc dt=6 heapalloc_value=1875968 -HeapAlloc dt=6 heapalloc_value=1884160 -HeapAlloc dt=6 heapalloc_value=1892352 -HeapAlloc dt=6 heapalloc_value=1900544 -HeapAlloc dt=6 heapalloc_value=1908736 -HeapAlloc dt=6 heapalloc_value=1916928 -HeapAlloc dt=75 heapalloc_value=1925120 -HeapAlloc dt=8 heapalloc_value=1933312 -HeapAlloc dt=6 heapalloc_value=1941504 -HeapAlloc dt=7 heapalloc_value=1949696 -HeapAlloc dt=5 heapalloc_value=1957888 -HeapAlloc dt=7 heapalloc_value=1966080 -HeapAlloc dt=7 heapalloc_value=1974272 -HeapAlloc dt=6 heapalloc_value=1982464 -HeapAlloc dt=13 heapalloc_value=2007040 -HeapAlloc dt=12 heapalloc_value=2015232 -HeapAlloc dt=7 heapalloc_value=2023424 -HeapAlloc dt=6 heapalloc_value=2031616 -HeapAlloc dt=6 heapalloc_value=2039808 -HeapAlloc dt=6 heapalloc_value=2048000 -HeapAlloc dt=8 heapalloc_value=2056192 -HeapAlloc dt=6 heapalloc_value=2064384 -HeapAlloc dt=6 heapalloc_value=2072576 -HeapAlloc dt=6 heapalloc_value=2080768 -HeapAlloc dt=6 heapalloc_value=2088960 -HeapAlloc dt=6 heapalloc_value=2097152 -HeapAlloc dt=6 heapalloc_value=2105344 -HeapAlloc dt=6 heapalloc_value=2113536 -HeapAlloc dt=9 heapalloc_value=2121728 -HeapAlloc dt=5 heapalloc_value=2129920 -HeapAlloc dt=67 heapalloc_value=2138112 -HeapAlloc dt=7 heapalloc_value=2146304 -HeapAlloc dt=7 heapalloc_value=2154496 -HeapAlloc dt=5 heapalloc_value=2162688 -HeapAlloc dt=6 heapalloc_value=2170880 -HeapAlloc dt=6 heapalloc_value=2179072 -HeapAlloc dt=79 heapalloc_value=2187264 -HeapAlloc dt=8 heapalloc_value=2195456 -HeapAlloc dt=6 heapalloc_value=2203648 -HeapAlloc dt=6 heapalloc_value=2211840 -HeapAlloc dt=6 heapalloc_value=2220032 -HeapAlloc dt=6 heapalloc_value=2228224 -HeapAlloc dt=6 heapalloc_value=2236416 -HeapAlloc dt=6 heapalloc_value=2244608 -HeapAlloc dt=8 heapalloc_value=2252800 -HeapAlloc dt=6 heapalloc_value=2260992 -HeapAlloc dt=6 heapalloc_value=2269184 -HeapAlloc dt=5 heapalloc_value=2310144 -HeapAlloc dt=19 heapalloc_value=2318336 -HeapAlloc dt=6 heapalloc_value=2326528 -HeapAlloc dt=7 heapalloc_value=2334720 -HeapAlloc dt=6 heapalloc_value=2342912 -HeapAlloc dt=6 heapalloc_value=2351104 -HeapAlloc dt=43 heapalloc_value=2359296 -HeapAlloc dt=8 heapalloc_value=2367488 -HeapAlloc dt=6 heapalloc_value=2375680 -HeapAlloc dt=8 heapalloc_value=2383872 -HeapAlloc dt=6 heapalloc_value=2392064 -HeapAlloc dt=6 heapalloc_value=2400256 -HeapAlloc dt=6 heapalloc_value=2408448 -HeapAlloc dt=6 heapalloc_value=2416640 -HeapAlloc dt=6 heapalloc_value=2424832 -HeapAlloc dt=6 heapalloc_value=2433024 -HeapAlloc dt=90 heapalloc_value=2441216 -HeapAlloc dt=74 heapalloc_value=2449408 -HeapAlloc dt=7 heapalloc_value=2457600 -HeapAlloc dt=7 heapalloc_value=2465792 -HeapAlloc dt=5 heapalloc_value=2473984 -HeapAlloc dt=6 heapalloc_value=2482176 -HeapAlloc dt=6 heapalloc_value=2490368 -HeapAlloc dt=6 heapalloc_value=2498560 -HeapAlloc dt=6 heapalloc_value=2506752 -HeapAlloc dt=8 heapalloc_value=2514944 -HeapAlloc dt=6 heapalloc_value=2523136 -HeapAlloc dt=7 heapalloc_value=2531328 -HeapAlloc dt=6 heapalloc_value=2539520 -HeapAlloc dt=6 heapalloc_value=2547712 -HeapAlloc dt=6 heapalloc_value=2555904 -HeapAlloc dt=6 heapalloc_value=2564096 -HeapAlloc dt=6 heapalloc_value=2572288 -HeapAlloc dt=8 heapalloc_value=2580480 -HeapAlloc dt=6 heapalloc_value=2588672 -HeapAlloc dt=28 heapalloc_value=2596864 -HeapAlloc dt=8 heapalloc_value=2605056 -HeapAlloc dt=5 heapalloc_value=2613248 -HeapAlloc dt=6 heapalloc_value=2621440 -HeapAlloc dt=6 heapalloc_value=2629632 -HeapAlloc dt=7 heapalloc_value=2637824 -HeapAlloc dt=8 heapalloc_value=2646016 -HeapAlloc dt=6 heapalloc_value=2654208 -HeapAlloc dt=13 heapalloc_value=2686976 -HeapAlloc dt=23 heapalloc_value=2695168 -HeapAlloc dt=6 heapalloc_value=2703360 -HeapAlloc dt=75 heapalloc_value=2711552 -HeapAlloc dt=55 heapalloc_value=2719744 -HeapAlloc dt=8 heapalloc_value=2727936 -HeapAlloc dt=6 heapalloc_value=2736128 -HeapAlloc dt=6 heapalloc_value=2744320 -HeapAlloc dt=6 heapalloc_value=2752512 -HeapAlloc dt=6 heapalloc_value=2760704 -HeapAlloc dt=6 heapalloc_value=2768896 -HeapAlloc dt=9 heapalloc_value=2777088 -HeapAlloc dt=5 heapalloc_value=2785280 -HeapAlloc dt=6 heapalloc_value=2793472 -HeapAlloc dt=6 heapalloc_value=2801664 -HeapAlloc dt=6 heapalloc_value=2809856 -HeapAlloc dt=6 heapalloc_value=2818048 -HeapAlloc dt=6 heapalloc_value=2826240 -HeapAlloc dt=6 heapalloc_value=2834432 -GoBlock dt=19 reason_string=19 stack=21 -ProcStop dt=236 -ProcStart dt=17547 p=1 p_seq=2 -ProcStop dt=18 -ProcStart dt=5588 p=0 p_seq=8 -ProcStop dt=13 -ProcStart dt=16789 p=0 p_seq=9 -GoUnblock dt=17 g=1 g_seq=7 stack=0 -GoStart dt=173 g=1 g_seq=8 -HeapAlloc dt=54 heapalloc_value=3915776 -HeapAlloc dt=17 heapalloc_value=3923968 -HeapAlloc dt=6 heapalloc_value=3932160 -HeapAlloc dt=6 heapalloc_value=3940352 -HeapAlloc dt=8 heapalloc_value=3948544 -HeapAlloc dt=10 heapalloc_value=3956736 -HeapAlloc dt=7 heapalloc_value=3964928 -HeapAlloc dt=10 heapalloc_value=4038656 -GCBegin dt=207 gc_seq=1 stack=22 -GoCreate dt=117 new_g=5 new_stack=23 stack=24 -GoSyscallBegin dt=172 p_seq=10 stack=25 -ProcStop dt=2 -ProcStart dt=6567 p=0 p_seq=12 -GoSyscallEndBlocked dt=4 -GoStart dt=1 g=1 g_seq=9 -GoCreate dt=36 new_g=6 new_stack=23 stack=24 -GoSyscallBegin dt=11 p_seq=13 stack=25 -ProcStop dt=1 -ProcStart dt=815 p=0 p_seq=15 -GoSyscallEndBlocked dt=2 -GoStart dt=1 g=1 g_seq=10 -GoCreate dt=23 new_g=7 new_stack=23 stack=24 -GoSyscallBegin dt=4 p_seq=16 stack=25 -ProcStop dt=1 -ProcStart dt=814 p=1 p_seq=6 -GoSyscallEndBlocked dt=2 -GoStart dt=1 g=1 g_seq=11 -GoCreate dt=14 new_g=24 new_stack=23 stack=24 -GoSyscallBegin dt=122 p_seq=7 stack=25 -ProcStop dt=1 -ProcStart dt=519 p=2 p_seq=5 -GoSyscallEndBlocked dt=1 -GoStart dt=1 g=1 g_seq=12 -HeapAlloc dt=19 heapalloc_value=4063232 -GoCreate dt=21 new_g=34 new_stack=23 stack=24 -GoSyscallBegin dt=5 p_seq=6 stack=25 -ProcStop dt=1 -ProcStart dt=924 p=0 p_seq=19 -GoSyscallEndBlocked dt=1 -GoStart dt=1 g=1 g_seq=13 -GoCreate dt=19 new_g=8 new_stack=23 stack=24 -GoSyscallBegin dt=140 p_seq=20 stack=25 -ProcStop dt=2 -ProcStart dt=512 p=0 p_seq=22 -GoSyscallEndBlocked dt=1 -GoStart dt=1 g=1 g_seq=14 -GoCreate dt=14 new_g=9 new_stack=23 stack=24 -GoSyscallBegin dt=3 p_seq=23 stack=25 -ProcStop dt=1 -ProcStart dt=375 p=1 p_seq=12 -GoSyscallEndBlocked dt=2 -GoStart dt=1 g=1 g_seq=15 -HeapAlloc dt=36 heapalloc_value=4071424 -GoCreate dt=13 new_g=25 new_stack=23 stack=24 -GoSyscallBegin dt=115 p_seq=13 stack=25 -ProcStop dt=1 -ProcStart dt=623 p=2 p_seq=10 -GoSyscallEndBlocked dt=1 -GoStart dt=1 g=1 g_seq=16 -STWBegin dt=37 kind_string=22 stack=27 -GoStatus dt=138 g=4 m=18446744073709551615 gstatus=4 -GoUnblock dt=7 g=4 g_seq=1 stack=28 -ProcsChange dt=158 procs_value=8 stack=29 -STWEnd dt=25 -GCMarkAssistBegin dt=1078 stack=30 -GCMarkAssistEnd dt=684 -HeapAlloc dt=15 heapalloc_value=4087808 -HeapAlloc dt=21 heapalloc_value=4096000 -HeapAlloc dt=11 heapalloc_value=4104192 -HeapAlloc dt=9 heapalloc_value=4112384 -HeapAlloc dt=9 heapalloc_value=4120576 -HeapAlloc dt=736 heapalloc_value=4145152 -HeapAlloc dt=27 heapalloc_value=4153344 -HeapAlloc dt=19 heapalloc_value=4161536 -HeapAlloc dt=15 heapalloc_value=4169728 -HeapAlloc dt=19 heapalloc_value=4177920 -HeapAlloc dt=15 heapalloc_value=4186112 -HeapAlloc dt=11 heapalloc_value=4194304 -HeapAlloc dt=16 heapalloc_value=4202496 -HeapAlloc dt=16 heapalloc_value=4210688 -HeapAlloc dt=9 heapalloc_value=4218880 -HeapAlloc dt=9 heapalloc_value=4227072 -HeapAlloc dt=9 heapalloc_value=4235264 -HeapAlloc dt=9 heapalloc_value=4243456 -HeapAlloc dt=10 heapalloc_value=4251648 -HeapAlloc dt=9 heapalloc_value=4259840 -HeapAlloc dt=20 heapalloc_value=4268032 -GoStop dt=11 reason_string=16 stack=31 -GoStart dt=361 g=1 g_seq=17 -HeapAlloc dt=16 heapalloc_value=4276224 -HeapAlloc dt=10 heapalloc_value=4284416 -HeapAlloc dt=9 heapalloc_value=4292608 -HeapAlloc dt=10 heapalloc_value=4300800 -HeapAlloc dt=9 heapalloc_value=4308992 -HeapAlloc dt=10 heapalloc_value=4317184 -HeapAlloc dt=9 heapalloc_value=4325376 -HeapAlloc dt=9 heapalloc_value=4333568 -HeapAlloc dt=11 heapalloc_value=4341760 -HeapAlloc dt=9 heapalloc_value=4349952 -HeapAlloc dt=67 heapalloc_value=4358144 -HeapAlloc dt=10 heapalloc_value=4366336 -HeapAlloc dt=10 heapalloc_value=4374528 -HeapAlloc dt=9 heapalloc_value=4382720 -HeapAlloc dt=9 heapalloc_value=4390912 -HeapAlloc dt=9 heapalloc_value=4399104 -HeapAlloc dt=283 heapalloc_value=4407296 -HeapAlloc dt=15 heapalloc_value=4415488 -HeapAlloc dt=7 heapalloc_value=4423680 -HeapAlloc dt=7 heapalloc_value=4431872 -HeapAlloc dt=7 heapalloc_value=4440064 -HeapAlloc dt=7 heapalloc_value=4448256 -HeapAlloc dt=7 heapalloc_value=4456448 -HeapAlloc dt=7 heapalloc_value=4464640 -HeapAlloc dt=7 heapalloc_value=4472832 -HeapAlloc dt=7 heapalloc_value=4481024 -HeapAlloc dt=7 heapalloc_value=4489216 -HeapAlloc dt=7 heapalloc_value=4497408 -HeapAlloc dt=7 heapalloc_value=4505600 -HeapAlloc dt=6 heapalloc_value=4513792 -HeapAlloc dt=7 heapalloc_value=4521984 -HeapAlloc dt=39 heapalloc_value=4530176 -HeapAlloc dt=8 heapalloc_value=4538368 -HeapAlloc dt=8 heapalloc_value=4546560 -HeapAlloc dt=7 heapalloc_value=4554752 -HeapAlloc dt=7 heapalloc_value=4562944 -HeapAlloc dt=10 heapalloc_value=4571136 -HeapAlloc dt=9 heapalloc_value=4579328 -HeapAlloc dt=72 heapalloc_value=4587520 -HeapAlloc dt=9 heapalloc_value=4595712 -HeapAlloc dt=7 heapalloc_value=4603904 -HeapAlloc dt=7 heapalloc_value=4612096 -HeapAlloc dt=7 heapalloc_value=4620288 -HeapAlloc dt=7 heapalloc_value=4628480 -HeapAlloc dt=7 heapalloc_value=4636672 -HeapAlloc dt=7 heapalloc_value=4644864 -HeapAlloc dt=8 heapalloc_value=4653056 -HeapAlloc dt=7 heapalloc_value=4661248 -HeapAlloc dt=266 heapalloc_value=4669440 -HeapAlloc dt=9 heapalloc_value=4677632 -HeapAlloc dt=50 heapalloc_value=4685824 -HeapAlloc dt=9 heapalloc_value=4694016 -HeapAlloc dt=7 heapalloc_value=4702208 -HeapAlloc dt=8 heapalloc_value=4710400 -HeapAlloc dt=7 heapalloc_value=4718592 -HeapAlloc dt=7 heapalloc_value=4726784 -HeapAlloc dt=7 heapalloc_value=4734976 -HeapAlloc dt=7 heapalloc_value=4743168 -GCMarkAssistBegin dt=9 stack=30 -HeapAlloc dt=40 heapalloc_value=4751360 -GoBlock dt=247 reason_string=10 stack=33 -ProcStop dt=18 -ProcStart dt=5438 p=2 p_seq=11 -ProcStop dt=22 -ProcStart dt=70608 p=2 p_seq=12 -GoUnblock dt=18 g=25 g_seq=4 stack=0 -GoStart dt=190 g=25 g_seq=5 -GoLabel dt=1 label_string=2 -GoBlock dt=594 reason_string=15 stack=26 -ProcStop dt=28 -ProcStart dt=802 p=2 p_seq=13 -ProcStop dt=17 -ProcStart dt=2684 p=2 p_seq=14 -ProcStop dt=29 -ProcStart dt=382 p=2 p_seq=15 -ProcStop dt=51 -ProcStart dt=2622 p=2 p_seq=16 -ProcStop dt=22 -ProcStart dt=66146 p=2 p_seq=17 -ProcStop dt=20 -ProcStart dt=49429 p=0 p_seq=40 -GoUnblock dt=13 g=9 g_seq=7 stack=0 -GoStart dt=174 g=9 g_seq=8 -GoLabel dt=1 label_string=2 -GoBlock dt=1963 reason_string=15 stack=26 -ProcStop dt=4345 -ProcStart dt=16958 p=2 p_seq=22 -ProcStop dt=18 -ProcStart dt=723 p=0 p_seq=42 -ProcStop dt=10 -ProcStart dt=16754 p=0 p_seq=43 -GoUnblock dt=14 g=1 g_seq=49 stack=0 -GoStart dt=152 g=1 g_seq=50 -HeapAlloc dt=32 heapalloc_value=17038224 -HeapAlloc dt=24 heapalloc_value=17046416 -HeapAlloc dt=15 heapalloc_value=17054608 -HeapAlloc dt=16 heapalloc_value=17062800 -HeapAlloc dt=13 heapalloc_value=17070992 -HeapAlloc dt=14 heapalloc_value=17079184 -HeapAlloc dt=17 heapalloc_value=17087376 -HeapAlloc dt=14 heapalloc_value=17095568 -HeapAlloc dt=14 heapalloc_value=17103760 -HeapAlloc dt=13 heapalloc_value=17111952 -HeapAlloc dt=81 heapalloc_value=17120144 -HeapAlloc dt=20 heapalloc_value=17128336 -HeapAlloc dt=14 heapalloc_value=17136528 -HeapAlloc dt=14 heapalloc_value=17144720 -HeapAlloc dt=16 heapalloc_value=17152912 -HeapAlloc dt=15 heapalloc_value=17161104 -HeapAlloc dt=13 heapalloc_value=17169296 -HeapAlloc dt=13 heapalloc_value=17177488 -HeapAlloc dt=16 heapalloc_value=17185680 -HeapAlloc dt=15 heapalloc_value=17193872 -HeapAlloc dt=14 heapalloc_value=17202064 -HeapAlloc dt=13 heapalloc_value=17210256 -HeapAlloc dt=16 heapalloc_value=17218448 -HeapAlloc dt=14 heapalloc_value=17226640 -HeapAlloc dt=14 heapalloc_value=17234832 -HeapAlloc dt=16 heapalloc_value=17243024 -HeapAlloc dt=16 heapalloc_value=17251216 -HeapAlloc dt=15 heapalloc_value=17259408 -HeapAlloc dt=14 heapalloc_value=17267600 -HeapAlloc dt=13 heapalloc_value=17275792 -HeapAlloc dt=45 heapalloc_value=17283984 -HeapAlloc dt=18 heapalloc_value=17292176 -HeapAlloc dt=16 heapalloc_value=17300368 -HeapAlloc dt=16 heapalloc_value=17308560 -HeapAlloc dt=15 heapalloc_value=17316752 -HeapAlloc dt=17 heapalloc_value=17324944 -HeapAlloc dt=15 heapalloc_value=17333136 -HeapAlloc dt=14 heapalloc_value=17341328 -HeapAlloc dt=16 heapalloc_value=17349520 -HeapAlloc dt=14 heapalloc_value=17357712 -HeapAlloc dt=14 heapalloc_value=17365904 -HeapAlloc dt=12 heapalloc_value=17374096 -HeapAlloc dt=14 heapalloc_value=17382288 -HeapAlloc dt=13 heapalloc_value=17390480 -HeapAlloc dt=13 heapalloc_value=17398672 -HeapAlloc dt=13 heapalloc_value=17406864 -HeapAlloc dt=36 heapalloc_value=17873808 -HeapAlloc dt=3813 heapalloc_value=17882000 -HeapAlloc dt=47 heapalloc_value=17890192 -HeapAlloc dt=10 heapalloc_value=17898384 -HeapAlloc dt=10 heapalloc_value=17906576 -HeapAlloc dt=12 heapalloc_value=17914768 -HeapAlloc dt=21 heapalloc_value=17922960 -HeapAlloc dt=17 heapalloc_value=17931152 -HeapAlloc dt=12 heapalloc_value=17939344 -HeapAlloc dt=13 heapalloc_value=17947536 -HeapAlloc dt=24 heapalloc_value=17955728 -HeapAlloc dt=91 heapalloc_value=17963920 -HeapAlloc dt=11 heapalloc_value=17972112 -HeapAlloc dt=9 heapalloc_value=17980304 -HeapAlloc dt=11 heapalloc_value=17988496 -HeapAlloc dt=8 heapalloc_value=17996688 -HeapAlloc dt=9 heapalloc_value=18004880 -HeapAlloc dt=9 heapalloc_value=18013072 -HeapAlloc dt=10 heapalloc_value=18021264 -HeapAlloc dt=9 heapalloc_value=18029456 -HeapAlloc dt=9 heapalloc_value=18037648 -HeapAlloc dt=8 heapalloc_value=18045840 -HeapAlloc dt=11 heapalloc_value=18054032 -HeapAlloc dt=8 heapalloc_value=18062224 -HeapAlloc dt=9 heapalloc_value=18070416 -HeapAlloc dt=9 heapalloc_value=18078608 -HeapAlloc dt=8 heapalloc_value=18086800 -HeapAlloc dt=9 heapalloc_value=18094992 -HeapAlloc dt=9 heapalloc_value=18103184 -HeapAlloc dt=8 heapalloc_value=18111376 -HeapAlloc dt=11 heapalloc_value=18119568 -HeapAlloc dt=9 heapalloc_value=18127760 -HeapAlloc dt=52 heapalloc_value=18135952 -HeapAlloc dt=10 heapalloc_value=18144144 -HeapAlloc dt=12 heapalloc_value=18152336 -HeapAlloc dt=10 heapalloc_value=18160528 -HeapAlloc dt=10 heapalloc_value=18168720 -HeapAlloc dt=25 heapalloc_value=18176912 -HeapAlloc dt=37 heapalloc_value=18185104 -HeapAlloc dt=32 heapalloc_value=18193296 -HeapAlloc dt=27 heapalloc_value=18201488 -HeapAlloc dt=27 heapalloc_value=18209680 -HeapAlloc dt=29 heapalloc_value=18217872 -HeapAlloc dt=28 heapalloc_value=18226064 -HeapAlloc dt=22 heapalloc_value=18234256 -HeapAlloc dt=32 heapalloc_value=18242448 -HeapAlloc dt=30 heapalloc_value=18250640 -HeapAlloc dt=26 heapalloc_value=18258832 -HeapAlloc dt=30 heapalloc_value=18267024 -HeapAlloc dt=33 heapalloc_value=18275216 -HeapAlloc dt=27 heapalloc_value=18283408 -HeapAlloc dt=33 heapalloc_value=18291600 -HeapAlloc dt=25 heapalloc_value=18299792 -HeapAlloc dt=40 heapalloc_value=18307984 -HeapAlloc dt=23 heapalloc_value=18316176 -HeapAlloc dt=32 heapalloc_value=18324368 -HeapAlloc dt=31 heapalloc_value=18332560 -HeapAlloc dt=30 heapalloc_value=18340752 -HeapAlloc dt=25 heapalloc_value=18348944 -HeapAlloc dt=32 heapalloc_value=18357136 -HeapAlloc dt=30 heapalloc_value=18365328 -HeapAlloc dt=32 heapalloc_value=18373520 -HeapAlloc dt=34 heapalloc_value=18381712 -HeapAlloc dt=30 heapalloc_value=18389904 -HeapAlloc dt=31 heapalloc_value=18398096 -HeapAlloc dt=29 heapalloc_value=18406288 -HeapAlloc dt=29 heapalloc_value=18414480 -HeapAlloc dt=29 heapalloc_value=18422672 -HeapAlloc dt=28 heapalloc_value=18430864 -HeapAlloc dt=35 heapalloc_value=18439056 -HeapAlloc dt=31 heapalloc_value=18447248 -HeapAlloc dt=30 heapalloc_value=18455440 -HeapAlloc dt=116 heapalloc_value=18463632 -HeapAlloc dt=21 heapalloc_value=18471824 -HeapAlloc dt=13 heapalloc_value=18480016 -HeapAlloc dt=65 heapalloc_value=18488208 -HeapAlloc dt=21 heapalloc_value=18496400 -HeapAlloc dt=16 heapalloc_value=18504592 -HeapAlloc dt=14 heapalloc_value=18512784 -HeapAlloc dt=13 heapalloc_value=18520976 -GoBlock dt=19 reason_string=19 stack=21 -ProcStop dt=197 -ProcStart dt=17439 p=2 p_seq=24 -ProcStop dt=12 -ProcStart dt=2355 p=0 p_seq=46 -ProcStop dt=8 -ProcStart dt=16730 p=0 p_seq=47 -GoUnblock dt=11 g=1 g_seq=53 stack=0 -GoStart dt=144 g=1 g_seq=54 -HeapAlloc dt=26 heapalloc_value=19553168 -HeapAlloc dt=13 heapalloc_value=19561360 -HeapAlloc dt=8 heapalloc_value=19569552 -HeapAlloc dt=6 heapalloc_value=19577744 -HeapAlloc dt=7 heapalloc_value=19585936 -HeapAlloc dt=7 heapalloc_value=19594128 -HeapAlloc dt=69 heapalloc_value=19602320 -HeapAlloc dt=7 heapalloc_value=19610512 -HeapAlloc dt=7 heapalloc_value=19618704 -HeapAlloc dt=250 heapalloc_value=19626896 -HeapAlloc dt=9 heapalloc_value=19635088 -HeapAlloc dt=7 heapalloc_value=19643280 -HeapAlloc dt=7 heapalloc_value=19651472 -HeapAlloc dt=7 heapalloc_value=19659664 -HeapAlloc dt=7 heapalloc_value=19667856 -HeapAlloc dt=7 heapalloc_value=19676048 -HeapAlloc dt=7 heapalloc_value=19684240 -HeapAlloc dt=6 heapalloc_value=19692432 -HeapAlloc dt=8 heapalloc_value=19700624 -HeapAlloc dt=6 heapalloc_value=19708816 -HeapAlloc dt=7 heapalloc_value=19717008 -HeapAlloc dt=7 heapalloc_value=19725200 -HeapAlloc dt=6 heapalloc_value=19733392 -HeapAlloc dt=7 heapalloc_value=19741584 -HeapAlloc dt=7 heapalloc_value=19749776 -HeapAlloc dt=6 heapalloc_value=19757968 -HeapAlloc dt=7 heapalloc_value=19766160 -HeapAlloc dt=7 heapalloc_value=19774352 -HeapAlloc dt=6 heapalloc_value=19782544 -HeapAlloc dt=7 heapalloc_value=19790736 -HeapAlloc dt=7 heapalloc_value=19798928 -HeapAlloc dt=6 heapalloc_value=19807120 -HeapAlloc dt=48 heapalloc_value=19815312 -HeapAlloc dt=8 heapalloc_value=19823504 -HeapAlloc dt=6 heapalloc_value=19831696 -HeapAlloc dt=7 heapalloc_value=19839888 -HeapAlloc dt=6 heapalloc_value=19848080 -HeapAlloc dt=7 heapalloc_value=19856272 -HeapAlloc dt=7 heapalloc_value=19864464 -HeapAlloc dt=7 heapalloc_value=19872656 -HeapAlloc dt=6 heapalloc_value=19880848 -HeapAlloc dt=70 heapalloc_value=19889040 -HeapAlloc dt=8 heapalloc_value=19897232 -HeapAlloc dt=7 heapalloc_value=19905424 -HeapAlloc dt=8 heapalloc_value=19913616 -HeapAlloc dt=9 heapalloc_value=19921808 -HeapAlloc dt=6 heapalloc_value=19930000 -HeapAlloc dt=7 heapalloc_value=19938192 -HeapAlloc dt=6 heapalloc_value=19946384 -HeapAlloc dt=7 heapalloc_value=19954576 -HeapAlloc dt=7 heapalloc_value=19962768 -HeapAlloc dt=6 heapalloc_value=19970960 -HeapAlloc dt=7 heapalloc_value=19979152 -HeapAlloc dt=7 heapalloc_value=19987344 -HeapAlloc dt=6 heapalloc_value=19995536 -HeapAlloc dt=7 heapalloc_value=20003728 -HeapAlloc dt=6 heapalloc_value=20011920 -HeapAlloc dt=7 heapalloc_value=20020112 -HeapAlloc dt=7 heapalloc_value=20028304 -HeapAlloc dt=7 heapalloc_value=20036496 -HeapAlloc dt=7 heapalloc_value=20044688 -HeapAlloc dt=6 heapalloc_value=20052880 -HeapAlloc dt=177 heapalloc_value=20061072 -HeapAlloc dt=8 heapalloc_value=20069264 -HeapAlloc dt=7 heapalloc_value=20077456 -HeapAlloc dt=7 heapalloc_value=20085648 -HeapAlloc dt=6 heapalloc_value=20093840 -HeapAlloc dt=7 heapalloc_value=20102032 -HeapAlloc dt=7 heapalloc_value=20110224 -HeapAlloc dt=46 heapalloc_value=20118416 -HeapAlloc dt=8 heapalloc_value=20126608 -HeapAlloc dt=6 heapalloc_value=20134800 -HeapAlloc dt=7 heapalloc_value=20142992 -HeapAlloc dt=494 heapalloc_value=20151184 -HeapAlloc dt=13 heapalloc_value=20159376 -HeapAlloc dt=8 heapalloc_value=20167568 -HeapAlloc dt=6 heapalloc_value=20175760 -HeapAlloc dt=93 heapalloc_value=20183952 -HeapAlloc dt=7 heapalloc_value=20192144 -HeapAlloc dt=6 heapalloc_value=20200336 -HeapAlloc dt=7 heapalloc_value=20208528 -HeapAlloc dt=7 heapalloc_value=20216720 -HeapAlloc dt=6 heapalloc_value=20224912 -HeapAlloc dt=46 heapalloc_value=20233104 -HeapAlloc dt=8 heapalloc_value=20241296 -HeapAlloc dt=6 heapalloc_value=20249488 -HeapAlloc dt=7 heapalloc_value=20257680 -HeapAlloc dt=7 heapalloc_value=20265872 -HeapAlloc dt=6 heapalloc_value=20274064 -HeapAlloc dt=7 heapalloc_value=20282256 -HeapAlloc dt=7 heapalloc_value=20290448 -HeapAlloc dt=7 heapalloc_value=20298640 -HeapAlloc dt=6 heapalloc_value=20306832 -HeapAlloc dt=7 heapalloc_value=20315024 -HeapAlloc dt=6 heapalloc_value=20323216 -HeapAlloc dt=7 heapalloc_value=20331408 -HeapAlloc dt=6 heapalloc_value=20339600 -HeapAlloc dt=7 heapalloc_value=20347792 -HeapAlloc dt=7 heapalloc_value=20355984 -HeapAlloc dt=6 heapalloc_value=20364176 -HeapAlloc dt=7 heapalloc_value=20372368 -HeapAlloc dt=7 heapalloc_value=20380560 -HeapAlloc dt=6 heapalloc_value=20388752 -HeapAlloc dt=7 heapalloc_value=20396944 -HeapAlloc dt=7 heapalloc_value=20405136 -HeapAlloc dt=68 heapalloc_value=20413328 -HeapAlloc dt=8 heapalloc_value=20421520 -HeapAlloc dt=6 heapalloc_value=20429712 -HeapAlloc dt=7 heapalloc_value=20437904 -HeapAlloc dt=7 heapalloc_value=20446096 -HeapAlloc dt=6 heapalloc_value=20454288 -HeapAlloc dt=7 heapalloc_value=20462480 -HeapAlloc dt=7 heapalloc_value=20470672 -HeapAlloc dt=7 heapalloc_value=20478864 -HeapAlloc dt=6 heapalloc_value=20487056 -HeapAlloc dt=7 heapalloc_value=20495248 -HeapAlloc dt=7 heapalloc_value=20503440 -HeapAlloc dt=6 heapalloc_value=20511632 -HeapAlloc dt=7 heapalloc_value=20519824 -HeapAlloc dt=7 heapalloc_value=20528016 -HeapAlloc dt=6 heapalloc_value=20536208 -HeapAlloc dt=7 heapalloc_value=20544400 -HeapAlloc dt=7 heapalloc_value=20552592 -HeapAlloc dt=6 heapalloc_value=20560784 -HeapAlloc dt=7 heapalloc_value=20568976 -GoBlock dt=13 reason_string=19 stack=21 -ProcStop dt=190 -ProcStart dt=17383 p=2 p_seq=26 -ProcStop dt=13 -ProcStart dt=1688 p=0 p_seq=50 -ProcStop dt=9 -ProcStart dt=16778 p=7 p_seq=1 -GoStart dt=16 g=12 g_seq=1 -GoStop dt=300490 reason_string=16 stack=52 -GoStart dt=19 g=12 g_seq=2 -GoStop dt=316380 reason_string=16 stack=52 -GoStart dt=17 g=12 g_seq=3 -GoDestroy dt=164357 -ProcStop dt=28 -ProcStart dt=1828 p=7 p_seq=2 -ProcStop dt=17 -ProcStart dt=81856 p=5 p_seq=4 -ProcStop dt=18 -ProcStart dt=688851 p=6 p_seq=10 -ProcStop dt=18 -ProcStart dt=16754 p=6 p_seq=11 -HeapAlloc dt=31 heapalloc_value=23313224 -GoCreate dt=50 new_g=67 new_stack=64 stack=0 -GoStart dt=169 g=67 g_seq=1 -GoSyscallBegin dt=30 p_seq=12 stack=65 -GoSyscallEnd dt=257 -GoDestroy dt=6 -ProcStop dt=8 -ProcStart dt=1281 p=6 p_seq=13 -ProcStop dt=20 -ProcStart dt=3460 p=6 p_seq=15 -GoStart dt=1376 g=82 g_seq=1 -GoSyscallBegin dt=34 p_seq=16 stack=79 -GoSyscallEnd dt=172 -HeapAlloc dt=3741 heapalloc_value=23466520 -HeapAlloc dt=37 heapalloc_value=23474712 -GoSyscallBegin dt=381 p_seq=17 stack=88 -GoSyscallEnd dt=29 -GoSyscallBegin dt=9 p_seq=18 stack=89 -GoSyscallEnd dt=33 -GoSyscallBegin dt=6 p_seq=19 stack=90 -GoSyscallEnd dt=20 -GoSyscallBegin dt=5 p_seq=20 stack=91 +HeapAlloc dt=301 heapalloc_value=26413776 +HeapAlloc dt=30 heapalloc_value=26421680 +GoSyscallBegin dt=35 p_seq=2 stack=56 +GoSyscallEnd dt=39 +GoSyscallBegin dt=13 p_seq=3 stack=57 +GoSyscallEnd dt=16 +GoSyscallBegin dt=396 p_seq=4 stack=58 +GoSyscallEnd dt=16 +GoSyscallBegin dt=15 p_seq=5 stack=59 +GoSyscallEnd dt=14 +HeapAlloc dt=305 heapalloc_value=26429872 +HeapAlloc dt=34 heapalloc_value=26437248 +HeapAlloc dt=42 heapalloc_value=26445120 +GoSyscallBegin dt=42 p_seq=6 stack=60 +GoSyscallEnd dt=18 +GoSyscallBegin dt=10 p_seq=7 stack=61 +GoSyscallEnd dt=14 +GoSyscallBegin dt=23 p_seq=8 stack=62 +ProcStart dt=787251 p=7 p_seq=15 +GoSyscallEndBlocked dt=7 +GoStart dt=1 g=50 g_seq=2 +GoUnblock dt=48 g=1 g_seq=75 stack=65 +GoDestroy dt=143 +GoStart dt=30 g=1 g_seq=76 +HeapAlloc dt=621 heapalloc_value=26468232 +GoStop dt=656 reason_string=16 stack=66 +GoStart dt=103 g=1 g_seq=77 +HeapAlloc dt=42 heapalloc_value=26476424 +HeapAlloc dt=87 heapalloc_value=26484360 +GoSyscallBegin dt=18 p_seq=16 stack=67 +GoSyscallEnd dt=456 +GoSyscallBegin dt=41 p_seq=17 stack=68 GoSyscallEnd dt=25 -GoBlock dt=19 reason_string=19 stack=92 -ProcStop dt=69 -ProcStart dt=17618 p=7 p_seq=26 +GoSyscallBegin dt=16 p_seq=18 stack=69 +GoSyscallEnd dt=18 +HeapAlloc dt=193 heapalloc_value=26549896 +GoSyscallBegin dt=69 p_seq=19 stack=70 +GoSyscallEnd dt=227 +GoSyscallBegin dt=12 p_seq=20 stack=70 +GoSyscallEnd dt=105 +GoSyscallBegin dt=87 p_seq=21 stack=71 +GoSyscallEnd dt=48 +GoSyscallBegin dt=37 p_seq=22 stack=72 +GoSyscallEnd dt=51 +GoSyscallBegin dt=49 p_seq=23 stack=73 +GoSyscallEnd dt=158 +GoSyscallBegin dt=12 p_seq=24 stack=74 +GoSyscallEnd dt=67 +HeapAlloc dt=126 heapalloc_value=26558088 +HeapAlloc dt=30 heapalloc_value=26566160 +GoCreate dt=34 new_g=52 new_stack=75 stack=76 +HeapAlloc dt=205 heapalloc_value=26573872 +GoSyscallBegin dt=890 p_seq=25 stack=77 +GoSyscallEnd dt=1128 +GoBlock dt=96 reason_string=7 stack=80 +ProcStop dt=29 +ProcStart dt=384 p=6 p_seq=7 +GoStart dt=14 g=52 g_seq=4 +GoSyscallBegin dt=16 p_seq=8 stack=78 +ProcStart dt=160 p=5 p_seq=13 +GoSyscallEndBlocked dt=3 +GoStart dt=1 g=52 g_seq=5 +HeapAlloc dt=297 heapalloc_value=26581840 +HeapAlloc dt=31 heapalloc_value=26590032 +HeapAlloc dt=164 heapalloc_value=26598224 +GoSyscallBegin dt=34 p_seq=14 stack=88 +GoSyscallEnd dt=33 +GoSyscallBegin dt=14 p_seq=15 stack=89 +GoSyscallEnd dt=36 +GoSyscallBegin dt=12 p_seq=16 stack=90 +GoSyscallEnd dt=22 +GoSyscallBegin dt=15 p_seq=17 stack=91 +GoSyscallEnd dt=28 +HeapAlloc dt=18 heapalloc_value=26606416 +HeapAlloc dt=20 heapalloc_value=26614608 +GoBlock dt=16 reason_string=19 stack=92 +ProcStop dt=136 +ProcStart dt=17788 p=6 p_seq=12 +GoUnblock dt=41 g=1 g_seq=80 stack=0 +GoStart dt=136 g=1 g_seq=81 +GoSyscallBegin dt=14 p_seq=13 stack=86 +GoSyscallEnd dt=65 +GoSyscallBegin dt=72 p_seq=14 stack=95 +GoSyscallEnd dt=534 +HeapAlloc dt=284 heapalloc_value=26630992 +HeapAlloc dt=38 heapalloc_value=26639120 +EventBatch gen=1 m=1709047 time=7689670866279 size=202 +ProcStart dt=437 p=6 p_seq=2 +HeapAlloc dt=131 heapalloc_value=26373928 +HeapAlloc dt=368 heapalloc_value=26382120 +HeapAlloc dt=55 heapalloc_value=26390056 +GoStart dt=1030 g=36 g_seq=1 +GoStop dt=293329 reason_string=16 stack=50 +GoStart dt=25 g=36 g_seq=2 +GoStop dt=315834 reason_string=16 stack=50 +GoStart dt=24 g=36 g_seq=3 +GoDestroy dt=172079 +ProcStop dt=60 +ProcStart dt=1749 p=6 p_seq=3 +ProcStop dt=1621 +ProcStart dt=64901 p=5 p_seq=4 +ProcStop dt=24 +ProcStart dt=722061 p=5 p_seq=5 +ProcStop dt=31 +ProcStart dt=2847 p=5 p_seq=8 +ProcStop dt=20 +ProcStart dt=3166 p=7 p_seq=26 +GoUnblock dt=6 g=52 g_seq=3 stack=0 +GoUnblock dt=90 g=1 g_seq=78 stack=0 +GoStart dt=5 g=1 g_seq=79 +GoSyscallBegin dt=31 p_seq=27 stack=81 +GoSyscallEnd dt=35 +GoSyscallBegin dt=134 p_seq=28 stack=82 +GoSyscallEnd dt=29 +GoSyscallBegin dt=17 p_seq=29 stack=83 +GoSyscallEnd dt=30 +GoSyscallBegin dt=8 p_seq=30 stack=84 +GoSyscallEnd dt=19 +GoSyscallBegin dt=11 p_seq=31 stack=85 +GoSyscallEnd dt=24 +GoSyscallBegin dt=65 p_seq=32 stack=86 +GoSyscallEnd dt=57 +GoBlock dt=19 reason_string=7 stack=87 +ProcStop dt=38 +ProcStart dt=458 p=6 p_seq=11 +ProcStop dt=30 +ProcStart dt=377 p=5 p_seq=18 +ProcStop dt=23 +ProcStart dt=17141 p=5 p_seq=19 +GoUnblock dt=19 g=52 g_seq=6 stack=0 +GoStart dt=111 g=52 g_seq=7 +HeapAlloc dt=38 heapalloc_value=26622800 +GoSyscallBegin dt=36 p_seq=20 stack=93 +GoSyscallEnd dt=554 +GoSyscallBegin dt=83 p_seq=21 stack=94 +GoSyscallEnd dt=196 +GoDestroy dt=15 +ProcStop dt=37 +EventBatch gen=1 m=1709046 time=7689670697530 size=167 +ProcStart dt=236 p=5 p_seq=1 +ProcStop dt=281 +ProcStart dt=1683 p=2 p_seq=14 ProcStop dt=33 -ProcStart dt=468 p=7 p_seq=27 -GoUnblock dt=5 g=1 g_seq=66 stack=0 -GoStart dt=5 g=1 g_seq=67 -GoSyscallBegin dt=14 p_seq=28 stack=86 -GoSyscallEnd dt=70 -GoSyscallBegin dt=82 p_seq=29 stack=95 -GoSyscallEnd dt=579 -HeapAlloc dt=276 heapalloc_value=23482840 -EventBatch gen=1 m=2852340 time=420901451500 size=3466 -ProcStart dt=290 p=0 p_seq=1 -GoStart dt=264 g=19 g_seq=1 -GoBlock dt=542 reason_string=12 stack=11 -GoStart dt=20 g=20 g_seq=1 -GoBlock dt=922 reason_string=12 stack=16 -GoStart dt=19 g=22 g_seq=1 -GoDestroy dt=156281 -ProcStop dt=46 -ProcStart dt=66693 p=0 p_seq=2 +ProcStart dt=147800 p=2 p_seq=16 +ProcStop dt=29 +ProcStart dt=3880 p=1 p_seq=28 +ProcStop dt=30 +ProcStart dt=801175 p=5 p_seq=3 +ProcStop dt=19 +ProcStart dt=47961 p=6 p_seq=4 +ProcStop dt=15 +ProcStart dt=16716 p=6 p_seq=5 +GoUnblock dt=60 g=6 g_seq=2 stack=0 +GoStart dt=90 g=6 g_seq=3 +HeapAlloc dt=193 heapalloc_value=26453304 +GoBlock dt=29 reason_string=12 stack=15 +ProcStop dt=12 +ProcStart dt=704555 p=7 p_seq=10 +ProcStop dt=25 +ProcStart dt=16755 p=7 p_seq=11 +HeapAlloc dt=61 heapalloc_value=26461496 +GoCreate dt=72 new_g=51 new_stack=63 stack=0 +GoStart dt=98 g=51 g_seq=1 +GoSyscallBegin dt=45 p_seq=12 stack=64 +ProcStart dt=206 p=7 p_seq=14 +GoSyscallEndBlocked dt=3 +GoStart dt=1 g=51 g_seq=2 +GoDestroy dt=12 +ProcStop dt=18 +ProcStart dt=849 p=5 p_seq=6 +ProcStop dt=16 +ProcStart dt=1359 p=5 p_seq=7 +ProcStop dt=12 +ProcStart dt=2079 p=5 p_seq=9 +GoStart dt=1134 g=52 g_seq=1 +GoSyscallBegin dt=39 p_seq=10 stack=78 +ProcStart dt=232 p=5 p_seq=12 +GoSyscallEndBlocked dt=2 +GoStart dt=1 g=52 g_seq=2 +GoBlock dt=27 reason_string=7 stack=79 ProcStop dt=20 -ProcStart dt=89853 p=0 p_seq=3 -ProcStop dt=20 -ProcStart dt=17575 p=1 p_seq=1 -ProcStop dt=20 -ProcStart dt=2159 p=0 p_seq=6 +EventBatch gen=1 m=1709045 time=7689670544102 size=3297 +ProcStart dt=84 p=4 p_seq=5 +GoUnblock dt=91 g=1 g_seq=34 stack=0 +GoStart dt=157 g=1 g_seq=35 +HeapAlloc dt=117 heapalloc_value=8105520 +HeapAlloc dt=67 heapalloc_value=8113712 +HeapAlloc dt=36 heapalloc_value=8121904 +HeapAlloc dt=25 heapalloc_value=8130096 +HeapAlloc dt=25 heapalloc_value=8138288 +HeapAlloc dt=25 heapalloc_value=8146480 +HeapAlloc dt=21 heapalloc_value=8154672 +HeapAlloc dt=26 heapalloc_value=8162864 +HeapAlloc dt=18 heapalloc_value=8171056 +HeapAlloc dt=24 heapalloc_value=8179248 +HeapAlloc dt=15 heapalloc_value=8187440 +HeapAlloc dt=133 heapalloc_value=8195632 +HeapAlloc dt=105 heapalloc_value=8203824 +HeapAlloc dt=20 heapalloc_value=8212016 +HeapAlloc dt=18 heapalloc_value=8220208 +HeapAlloc dt=8 heapalloc_value=8228400 +HeapAlloc dt=8 heapalloc_value=8236592 +HeapAlloc dt=9 heapalloc_value=8244784 +GCMarkAssistBegin dt=27 stack=31 +HeapAlloc dt=69 heapalloc_value=8252784 +GoBlock dt=31 reason_string=10 stack=36 +ProcStop dt=156 +ProcStart dt=993 p=0 p_seq=11 +GoStart dt=192 g=1 g_seq=37 +GCMarkAssistEnd dt=12 +HeapAlloc dt=35 heapalloc_value=8746312 +GCSweepBegin dt=26 stack=42 +GCSweepEnd dt=777 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=22 heapalloc_value=8754504 +GCSweepBegin dt=47 stack=42 +GCSweepEnd dt=662 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=11 heapalloc_value=8762696 +GCSweepBegin dt=25 stack=42 +GCSweepEnd dt=712 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=39 heapalloc_value=8770888 +GCSweepBegin dt=27 stack=42 +GCSweepEnd dt=630 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=9 heapalloc_value=8779080 +GCSweepBegin dt=25 stack=42 +GCSweepEnd dt=1256 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=8 heapalloc_value=8787272 +GCSweepBegin dt=40 stack=42 +GCSweepEnd dt=529 swept_value=360448 reclaimed_value=0 +HeapAlloc dt=9 heapalloc_value=8795464 +HeapAlloc dt=24 heapalloc_value=8803656 +HeapAlloc dt=24 heapalloc_value=8811848 +HeapAlloc dt=25 heapalloc_value=8820040 +HeapAlloc dt=23 heapalloc_value=8828232 +HeapAlloc dt=18 heapalloc_value=8836424 +HeapAlloc dt=95 heapalloc_value=8844616 +HeapAlloc dt=25 heapalloc_value=8852808 +HeapAlloc dt=23 heapalloc_value=8861000 +HeapAlloc dt=19 heapalloc_value=8869192 +HeapAlloc dt=93 heapalloc_value=8877384 +HeapAlloc dt=23 heapalloc_value=8885576 +HeapAlloc dt=23 heapalloc_value=8893768 +HeapAlloc dt=23 heapalloc_value=8901960 +HeapAlloc dt=22 heapalloc_value=8910152 +HeapAlloc dt=18 heapalloc_value=8918344 +HeapAlloc dt=174 heapalloc_value=8926536 +HeapAlloc dt=31 heapalloc_value=8934728 +HeapAlloc dt=38 heapalloc_value=8942920 +HeapAlloc dt=31 heapalloc_value=8951112 +HeapAlloc dt=57 heapalloc_value=8959304 +HeapAlloc dt=58 heapalloc_value=8967496 +HeapAlloc dt=60 heapalloc_value=8975688 +HeapAlloc dt=44 heapalloc_value=8983880 +HeapAlloc dt=53 heapalloc_value=8992072 +HeapAlloc dt=57 heapalloc_value=9000264 +HeapAlloc dt=63 heapalloc_value=9008456 +HeapAlloc dt=55 heapalloc_value=9016648 +HeapAlloc dt=28 heapalloc_value=9024840 +HeapAlloc dt=12 heapalloc_value=9033032 +HeapAlloc dt=9 heapalloc_value=9041224 +HeapAlloc dt=8 heapalloc_value=9049416 +HeapAlloc dt=7 heapalloc_value=9057608 +HeapAlloc dt=8 heapalloc_value=9065800 +HeapAlloc dt=14 heapalloc_value=9073992 +HeapAlloc dt=8 heapalloc_value=9082184 +HeapAlloc dt=45 heapalloc_value=9090376 +HeapAlloc dt=10 heapalloc_value=9098568 +HeapAlloc dt=14 heapalloc_value=9106760 +HeapAlloc dt=8 heapalloc_value=9114952 +HeapAlloc dt=10 heapalloc_value=9123144 +HeapAlloc dt=15 heapalloc_value=9131336 +HeapAlloc dt=53 heapalloc_value=9139528 +HeapAlloc dt=27 heapalloc_value=9147720 +HeapAlloc dt=38 heapalloc_value=9155912 +HeapAlloc dt=33 heapalloc_value=9164104 +HeapAlloc dt=33 heapalloc_value=9172296 +HeapAlloc dt=34 heapalloc_value=9180488 +HeapAlloc dt=36 heapalloc_value=9188680 +HeapAlloc dt=39 heapalloc_value=9196872 +HeapAlloc dt=40 heapalloc_value=9205064 +HeapAlloc dt=59 heapalloc_value=9213256 +HeapAlloc dt=28 heapalloc_value=9221448 +HeapAlloc dt=22 heapalloc_value=9229640 +HeapAlloc dt=20 heapalloc_value=9237832 +HeapAlloc dt=25 heapalloc_value=9246024 +HeapAlloc dt=20 heapalloc_value=9254216 +HeapAlloc dt=16 heapalloc_value=9262408 +HeapAlloc dt=14 heapalloc_value=9270600 +HeapAlloc dt=18 heapalloc_value=9278792 +HeapAlloc dt=32 heapalloc_value=9286984 +HeapAlloc dt=21 heapalloc_value=9295176 +HeapAlloc dt=49 heapalloc_value=9303368 +HeapAlloc dt=23 heapalloc_value=9311560 +HeapAlloc dt=16 heapalloc_value=9319752 +HeapAlloc dt=15 heapalloc_value=9327944 +HeapAlloc dt=13 heapalloc_value=9336136 +HeapAlloc dt=15 heapalloc_value=9344328 +HeapAlloc dt=14 heapalloc_value=9352520 +HeapAlloc dt=16 heapalloc_value=9360712 +HeapAlloc dt=14 heapalloc_value=9368904 +HeapAlloc dt=19 heapalloc_value=9377096 +HeapAlloc dt=16 heapalloc_value=9385288 +HeapAlloc dt=15 heapalloc_value=9393480 +HeapAlloc dt=14 heapalloc_value=9401672 +HeapAlloc dt=16 heapalloc_value=9409864 +HeapAlloc dt=15 heapalloc_value=9418056 +HeapAlloc dt=15 heapalloc_value=9426248 +HeapAlloc dt=15 heapalloc_value=9434440 +HeapAlloc dt=18 heapalloc_value=9442632 +HeapAlloc dt=94 heapalloc_value=9450824 +HeapAlloc dt=17 heapalloc_value=9459016 +HeapAlloc dt=14 heapalloc_value=9467208 +HeapAlloc dt=16 heapalloc_value=9475400 +HeapAlloc dt=15 heapalloc_value=9483592 +HeapAlloc dt=15 heapalloc_value=9491784 +HeapAlloc dt=15 heapalloc_value=9499976 +HeapAlloc dt=49 heapalloc_value=9508168 +HeapAlloc dt=16 heapalloc_value=9516360 +HeapAlloc dt=14 heapalloc_value=9524552 +HeapAlloc dt=15 heapalloc_value=9532744 +HeapAlloc dt=15 heapalloc_value=9540936 +HeapAlloc dt=15 heapalloc_value=9549128 +HeapAlloc dt=17 heapalloc_value=9557320 +HeapAlloc dt=15 heapalloc_value=9565512 +HeapAlloc dt=21 heapalloc_value=9573704 +HeapAlloc dt=15 heapalloc_value=9581896 +HeapAlloc dt=16 heapalloc_value=9590088 +HeapAlloc dt=14 heapalloc_value=9598280 +HeapAlloc dt=16 heapalloc_value=9606472 +HeapAlloc dt=14 heapalloc_value=9614664 +HeapAlloc dt=16 heapalloc_value=9622856 +GoBlock dt=21 reason_string=19 stack=21 +ProcStop dt=157 +ProcStart dt=17320 p=2 p_seq=6 +ProcStop dt=15 +ProcStart dt=2411 p=0 p_seq=14 +ProcStop dt=8 +ProcStart dt=16766 p=0 p_seq=15 +GoUnblock dt=9 g=1 g_seq=40 stack=0 +GoStart dt=91 g=1 g_seq=41 +HeapAlloc dt=19 heapalloc_value=10859848 +HeapAlloc dt=9 heapalloc_value=10868040 +HeapAlloc dt=7 heapalloc_value=10876232 +HeapAlloc dt=6 heapalloc_value=10884424 +HeapAlloc dt=6 heapalloc_value=10892616 +HeapAlloc dt=6 heapalloc_value=10900808 +HeapAlloc dt=6 heapalloc_value=10909000 +HeapAlloc dt=6 heapalloc_value=10917192 +HeapAlloc dt=6 heapalloc_value=10925384 +HeapAlloc dt=6 heapalloc_value=10933576 +HeapAlloc dt=6 heapalloc_value=10941768 +HeapAlloc dt=6 heapalloc_value=10949960 +HeapAlloc dt=6 heapalloc_value=10958152 +HeapAlloc dt=5 heapalloc_value=10966344 +HeapAlloc dt=6 heapalloc_value=10974536 +HeapAlloc dt=6 heapalloc_value=10982728 +HeapAlloc dt=6 heapalloc_value=10990920 +HeapAlloc dt=6 heapalloc_value=10999112 +HeapAlloc dt=6 heapalloc_value=11007304 +HeapAlloc dt=5 heapalloc_value=11015496 +HeapAlloc dt=7 heapalloc_value=11023688 +HeapAlloc dt=6 heapalloc_value=11031880 +HeapAlloc dt=14 heapalloc_value=11040072 +HeapAlloc dt=7 heapalloc_value=11048264 +HeapAlloc dt=6 heapalloc_value=11056456 +HeapAlloc dt=6 heapalloc_value=11064648 +HeapAlloc dt=5 heapalloc_value=11072840 +HeapAlloc dt=6 heapalloc_value=11081032 +HeapAlloc dt=6 heapalloc_value=11089224 +HeapAlloc dt=6 heapalloc_value=11097416 +HeapAlloc dt=6 heapalloc_value=11105608 +HeapAlloc dt=6 heapalloc_value=11113800 +HeapAlloc dt=59 heapalloc_value=11121992 +HeapAlloc dt=9 heapalloc_value=11130184 +HeapAlloc dt=7 heapalloc_value=11138376 +HeapAlloc dt=6 heapalloc_value=11146568 +HeapAlloc dt=6 heapalloc_value=11154760 +HeapAlloc dt=5 heapalloc_value=11162952 +HeapAlloc dt=6 heapalloc_value=11171144 +HeapAlloc dt=6 heapalloc_value=11179336 +HeapAlloc dt=6 heapalloc_value=11187528 +HeapAlloc dt=5 heapalloc_value=11195720 +HeapAlloc dt=6 heapalloc_value=11203912 +HeapAlloc dt=6 heapalloc_value=11212104 +HeapAlloc dt=84 heapalloc_value=11220296 +HeapAlloc dt=7 heapalloc_value=11228488 +HeapAlloc dt=6 heapalloc_value=11236680 +HeapAlloc dt=6 heapalloc_value=11244872 +HeapAlloc dt=5 heapalloc_value=11253064 +HeapAlloc dt=6 heapalloc_value=11261256 +HeapAlloc dt=6 heapalloc_value=11269448 +HeapAlloc dt=6 heapalloc_value=11277640 +HeapAlloc dt=5 heapalloc_value=11285832 +HeapAlloc dt=6 heapalloc_value=11294024 +HeapAlloc dt=6 heapalloc_value=11302216 +HeapAlloc dt=5 heapalloc_value=11310408 +HeapAlloc dt=6 heapalloc_value=11318600 +HeapAlloc dt=38 heapalloc_value=11326792 +HeapAlloc dt=7 heapalloc_value=11334984 +HeapAlloc dt=6 heapalloc_value=11343176 +HeapAlloc dt=6 heapalloc_value=11351368 +HeapAlloc dt=5 heapalloc_value=11359560 +HeapAlloc dt=6 heapalloc_value=11367752 +HeapAlloc dt=6 heapalloc_value=11375944 +HeapAlloc dt=6 heapalloc_value=11384136 +HeapAlloc dt=6 heapalloc_value=11392328 +HeapAlloc dt=5 heapalloc_value=11400520 +HeapAlloc dt=6 heapalloc_value=11408712 +HeapAlloc dt=6 heapalloc_value=11416904 +HeapAlloc dt=5 heapalloc_value=11425096 +HeapAlloc dt=6 heapalloc_value=11433288 +HeapAlloc dt=6 heapalloc_value=11441480 +HeapAlloc dt=6 heapalloc_value=11449672 +HeapAlloc dt=5 heapalloc_value=11457864 +HeapAlloc dt=6 heapalloc_value=11466056 +HeapAlloc dt=79 heapalloc_value=11474248 +HeapAlloc dt=6 heapalloc_value=11482440 +HeapAlloc dt=5 heapalloc_value=11490632 +HeapAlloc dt=6 heapalloc_value=11498824 +HeapAlloc dt=6 heapalloc_value=11507016 +HeapAlloc dt=6 heapalloc_value=11515208 +HeapAlloc dt=5 heapalloc_value=11523400 +HeapAlloc dt=6 heapalloc_value=11531592 +HeapAlloc dt=5 heapalloc_value=11539784 +HeapAlloc dt=6 heapalloc_value=11547976 +HeapAlloc dt=6 heapalloc_value=11556168 +HeapAlloc dt=10 heapalloc_value=11564360 +HeapAlloc dt=6 heapalloc_value=11572552 +HeapAlloc dt=24 heapalloc_value=11580744 +HeapAlloc dt=7 heapalloc_value=11588936 +HeapAlloc dt=5 heapalloc_value=11597128 +HeapAlloc dt=6 heapalloc_value=11605320 +HeapAlloc dt=6 heapalloc_value=11613512 +HeapAlloc dt=6 heapalloc_value=11621704 +HeapAlloc dt=5 heapalloc_value=11629896 +HeapAlloc dt=6 heapalloc_value=11638088 +HeapAlloc dt=6 heapalloc_value=11646280 +HeapAlloc dt=5 heapalloc_value=11654472 +HeapAlloc dt=6 heapalloc_value=11662664 +HeapAlloc dt=6 heapalloc_value=11670856 +HeapAlloc dt=6 heapalloc_value=11679048 +HeapAlloc dt=5 heapalloc_value=11687240 +HeapAlloc dt=6 heapalloc_value=11695432 +HeapAlloc dt=6 heapalloc_value=11703624 +HeapAlloc dt=6 heapalloc_value=11711816 +HeapAlloc dt=5 heapalloc_value=11720008 +HeapAlloc dt=6 heapalloc_value=11728200 +HeapAlloc dt=6 heapalloc_value=11736392 +HeapAlloc dt=70 heapalloc_value=11744584 +HeapAlloc dt=8 heapalloc_value=11752776 +HeapAlloc dt=5 heapalloc_value=11760968 +HeapAlloc dt=6 heapalloc_value=11769160 +HeapAlloc dt=5 heapalloc_value=11777352 +HeapAlloc dt=6 heapalloc_value=11785544 +HeapAlloc dt=6 heapalloc_value=11793736 +HeapAlloc dt=6 heapalloc_value=11801928 +HeapAlloc dt=5 heapalloc_value=11810120 +HeapAlloc dt=6 heapalloc_value=11818312 +HeapAlloc dt=6 heapalloc_value=11826504 +HeapAlloc dt=6 heapalloc_value=11834696 +HeapAlloc dt=6 heapalloc_value=11842888 +HeapAlloc dt=5 heapalloc_value=11851080 +HeapAlloc dt=6 heapalloc_value=11859272 +HeapAlloc dt=5 heapalloc_value=11867464 +HeapAlloc dt=6 heapalloc_value=11875656 +GoBlock dt=9 reason_string=19 stack=21 +ProcStop dt=105 +ProcStart dt=17283 p=2 p_seq=8 +ProcStop dt=12 +ProcStart dt=4008 p=0 p_seq=18 +ProcStop dt=9 +ProcStart dt=16692 p=0 p_seq=19 +GoUnblock dt=9 g=1 g_seq=44 stack=0 +GoStart dt=76 g=1 g_seq=45 +HeapAlloc dt=16 heapalloc_value=13169992 +HeapAlloc dt=9 heapalloc_value=13178184 +HeapAlloc dt=7 heapalloc_value=13186376 +HeapAlloc dt=5 heapalloc_value=13194568 +HeapAlloc dt=6 heapalloc_value=13202760 +HeapAlloc dt=6 heapalloc_value=13210952 +HeapAlloc dt=5 heapalloc_value=13219144 +HeapAlloc dt=6 heapalloc_value=13227336 +HeapAlloc dt=6 heapalloc_value=13235528 +HeapAlloc dt=6 heapalloc_value=13243720 +HeapAlloc dt=6 heapalloc_value=13251912 +HeapAlloc dt=59 heapalloc_value=13260104 +HeapAlloc dt=8 heapalloc_value=13268296 +HeapAlloc dt=6 heapalloc_value=13276488 +HeapAlloc dt=5 heapalloc_value=13284680 +HeapAlloc dt=6 heapalloc_value=13292872 +HeapAlloc dt=5 heapalloc_value=13301064 +HeapAlloc dt=6 heapalloc_value=13309256 +HeapAlloc dt=5 heapalloc_value=13317448 +HeapAlloc dt=6 heapalloc_value=13325640 +HeapAlloc dt=6 heapalloc_value=13333832 +HeapAlloc dt=6 heapalloc_value=13342024 +HeapAlloc dt=5 heapalloc_value=13350216 +HeapAlloc dt=6 heapalloc_value=13358408 +HeapAlloc dt=6 heapalloc_value=13366600 +HeapAlloc dt=5 heapalloc_value=13374792 +HeapAlloc dt=6 heapalloc_value=13382984 +HeapAlloc dt=6 heapalloc_value=13391176 +HeapAlloc dt=6 heapalloc_value=13399368 +HeapAlloc dt=5 heapalloc_value=13407560 +HeapAlloc dt=8 heapalloc_value=13415752 +HeapAlloc dt=6 heapalloc_value=13423944 +HeapAlloc dt=7 heapalloc_value=13432136 +HeapAlloc dt=5 heapalloc_value=13440328 +HeapAlloc dt=6 heapalloc_value=13448520 +HeapAlloc dt=5 heapalloc_value=13456712 +HeapAlloc dt=6 heapalloc_value=13464904 +HeapAlloc dt=6 heapalloc_value=13473096 +HeapAlloc dt=6 heapalloc_value=13481288 +HeapAlloc dt=5 heapalloc_value=13489480 +HeapAlloc dt=5 heapalloc_value=13497672 +HeapAlloc dt=6 heapalloc_value=13505864 +HeapAlloc dt=5 heapalloc_value=13514056 +HeapAlloc dt=6 heapalloc_value=13522248 +HeapAlloc dt=5 heapalloc_value=13530440 +HeapAlloc dt=6 heapalloc_value=13538632 +HeapAlloc dt=5 heapalloc_value=13546824 +HeapAlloc dt=6 heapalloc_value=13555016 +HeapAlloc dt=6 heapalloc_value=13563208 +HeapAlloc dt=48 heapalloc_value=13571400 +HeapAlloc dt=7 heapalloc_value=13579592 +HeapAlloc dt=6 heapalloc_value=13587784 +HeapAlloc dt=5 heapalloc_value=13595976 +HeapAlloc dt=6 heapalloc_value=13604168 +HeapAlloc dt=5 heapalloc_value=13612360 +HeapAlloc dt=6 heapalloc_value=13620552 +HeapAlloc dt=5 heapalloc_value=13628744 +HeapAlloc dt=6 heapalloc_value=13636936 +HeapAlloc dt=5 heapalloc_value=13645128 +HeapAlloc dt=6 heapalloc_value=13653320 +HeapAlloc dt=14 heapalloc_value=13661512 +HeapAlloc dt=6 heapalloc_value=13669704 +HeapAlloc dt=6 heapalloc_value=13677896 +HeapAlloc dt=35 heapalloc_value=13686088 +HeapAlloc dt=7 heapalloc_value=13694280 +HeapAlloc dt=6 heapalloc_value=13702472 +HeapAlloc dt=6 heapalloc_value=13710664 +HeapAlloc dt=5 heapalloc_value=13718856 +HeapAlloc dt=6 heapalloc_value=13727048 +HeapAlloc dt=6 heapalloc_value=13735240 +HeapAlloc dt=5 heapalloc_value=13743432 +HeapAlloc dt=6 heapalloc_value=13751624 +HeapAlloc dt=5 heapalloc_value=13759816 +HeapAlloc dt=6 heapalloc_value=13768008 +HeapAlloc dt=5 heapalloc_value=13776200 +HeapAlloc dt=5 heapalloc_value=13784392 +HeapAlloc dt=6 heapalloc_value=13792584 +HeapAlloc dt=6 heapalloc_value=13800776 +HeapAlloc dt=5 heapalloc_value=13808968 +HeapAlloc dt=6 heapalloc_value=13817160 +HeapAlloc dt=5 heapalloc_value=13825352 +HeapAlloc dt=6 heapalloc_value=13833544 +HeapAlloc dt=5 heapalloc_value=13841736 +HeapAlloc dt=6 heapalloc_value=13849928 +HeapAlloc dt=5 heapalloc_value=13858120 +HeapAlloc dt=6 heapalloc_value=13866312 +HeapAlloc dt=5 heapalloc_value=13874504 +HeapAlloc dt=5 heapalloc_value=13882696 +HeapAlloc dt=6 heapalloc_value=13890888 +HeapAlloc dt=5 heapalloc_value=13899080 +HeapAlloc dt=6 heapalloc_value=13907272 +HeapAlloc dt=5 heapalloc_value=13915464 +HeapAlloc dt=6 heapalloc_value=13923656 +HeapAlloc dt=21 heapalloc_value=13931848 +HeapAlloc dt=6 heapalloc_value=13940040 +HeapAlloc dt=6 heapalloc_value=13948232 +HeapAlloc dt=6 heapalloc_value=13956424 +HeapAlloc dt=6 heapalloc_value=13964616 +HeapAlloc dt=5 heapalloc_value=13972808 +HeapAlloc dt=5 heapalloc_value=13981000 +HeapAlloc dt=6 heapalloc_value=13989192 +HeapAlloc dt=6 heapalloc_value=13997384 +HeapAlloc dt=5 heapalloc_value=14005576 +HeapAlloc dt=6 heapalloc_value=14013768 +HeapAlloc dt=5 heapalloc_value=14021960 +HeapAlloc dt=6 heapalloc_value=14030152 +HeapAlloc dt=6 heapalloc_value=14038344 +HeapAlloc dt=5 heapalloc_value=14046536 +HeapAlloc dt=6 heapalloc_value=14054728 +HeapAlloc dt=5 heapalloc_value=14062920 +HeapAlloc dt=6 heapalloc_value=14071112 +HeapAlloc dt=5 heapalloc_value=14079304 +HeapAlloc dt=5 heapalloc_value=14087496 +HeapAlloc dt=76 heapalloc_value=14095688 +HeapAlloc dt=35 heapalloc_value=14103880 +HeapAlloc dt=7 heapalloc_value=14112072 +HeapAlloc dt=5 heapalloc_value=14120264 +HeapAlloc dt=6 heapalloc_value=14128456 +HeapAlloc dt=7 heapalloc_value=14136648 +HeapAlloc dt=5 heapalloc_value=14144840 +HeapAlloc dt=5 heapalloc_value=14153032 +HeapAlloc dt=6 heapalloc_value=14161224 +HeapAlloc dt=5 heapalloc_value=14169416 +HeapAlloc dt=6 heapalloc_value=14177608 +HeapAlloc dt=10 heapalloc_value=14185800 +GoBlock dt=9 reason_string=19 stack=21 +ProcStop dt=108 +ProcStart dt=17296 p=2 p_seq=10 +ProcStop dt=12 +ProcStart dt=3626 p=0 p_seq=22 +ProcStop dt=8 +ProcStart dt=16715 p=0 p_seq=23 +GoUnblock dt=6 g=1 g_seq=48 stack=0 +GoStart dt=79 g=1 g_seq=49 +HeapAlloc dt=15 heapalloc_value=15553864 +HeapAlloc dt=13 heapalloc_value=15562056 +HeapAlloc dt=15 heapalloc_value=15570248 +HeapAlloc dt=7 heapalloc_value=15578440 +HeapAlloc dt=6 heapalloc_value=15586632 +HeapAlloc dt=6 heapalloc_value=15594824 +HeapAlloc dt=6 heapalloc_value=15603016 +HeapAlloc dt=6 heapalloc_value=15611208 +HeapAlloc dt=5 heapalloc_value=15619400 +HeapAlloc dt=6 heapalloc_value=15627592 +HeapAlloc dt=6 heapalloc_value=15635784 +HeapAlloc dt=5 heapalloc_value=15643976 +HeapAlloc dt=6 heapalloc_value=15652168 +HeapAlloc dt=5 heapalloc_value=15660360 +HeapAlloc dt=6 heapalloc_value=15668552 +HeapAlloc dt=6 heapalloc_value=15676744 +HeapAlloc dt=57 heapalloc_value=15684936 +HeapAlloc dt=7 heapalloc_value=15693128 +HeapAlloc dt=6 heapalloc_value=15701320 +HeapAlloc dt=6 heapalloc_value=15709512 +HeapAlloc dt=5 heapalloc_value=15717704 +HeapAlloc dt=6 heapalloc_value=15725896 +HeapAlloc dt=5 heapalloc_value=15734088 +HeapAlloc dt=6 heapalloc_value=15742280 +HeapAlloc dt=6 heapalloc_value=15750472 +HeapAlloc dt=10 heapalloc_value=15758664 +HeapAlloc dt=6 heapalloc_value=15766856 +HeapAlloc dt=6 heapalloc_value=15775048 +HeapAlloc dt=5 heapalloc_value=15783240 +HeapAlloc dt=6 heapalloc_value=15791432 +HeapAlloc dt=6 heapalloc_value=15799624 +HeapAlloc dt=6 heapalloc_value=15807816 +HeapAlloc dt=6 heapalloc_value=15816008 +HeapAlloc dt=7 heapalloc_value=15824200 +HeapAlloc dt=6 heapalloc_value=15832392 +HeapAlloc dt=6 heapalloc_value=15840584 +HeapAlloc dt=5 heapalloc_value=15848776 +HeapAlloc dt=6 heapalloc_value=15856968 +HeapAlloc dt=6 heapalloc_value=15865160 +HeapAlloc dt=6 heapalloc_value=15873352 +HeapAlloc dt=5 heapalloc_value=15881544 +HeapAlloc dt=6 heapalloc_value=15889736 +HeapAlloc dt=6 heapalloc_value=15897928 +HeapAlloc dt=5 heapalloc_value=15906120 +HeapAlloc dt=6 heapalloc_value=15914312 +HeapAlloc dt=5 heapalloc_value=15922504 +HeapAlloc dt=6 heapalloc_value=15930696 +HeapAlloc dt=5 heapalloc_value=15938888 +HeapAlloc dt=6 heapalloc_value=15947080 +HeapAlloc dt=5 heapalloc_value=15955272 +HeapAlloc dt=6 heapalloc_value=15963464 +HeapAlloc dt=6 heapalloc_value=15971656 +HeapAlloc dt=5 heapalloc_value=15979848 +HeapAlloc dt=6 heapalloc_value=15988040 +HeapAlloc dt=44 heapalloc_value=15996232 +HeapAlloc dt=8 heapalloc_value=16004424 +HeapAlloc dt=5 heapalloc_value=16012616 +HeapAlloc dt=6 heapalloc_value=16020808 +HeapAlloc dt=5 heapalloc_value=16029000 +HeapAlloc dt=6 heapalloc_value=16037192 +HeapAlloc dt=5 heapalloc_value=16045384 +HeapAlloc dt=6 heapalloc_value=16053576 +HeapAlloc dt=5 heapalloc_value=16061768 +HeapAlloc dt=6 heapalloc_value=16069960 +HeapAlloc dt=5 heapalloc_value=16078152 +HeapAlloc dt=6 heapalloc_value=16086344 +HeapAlloc dt=5 heapalloc_value=16094536 +HeapAlloc dt=6 heapalloc_value=16102728 +HeapAlloc dt=36 heapalloc_value=16110920 +HeapAlloc dt=8 heapalloc_value=16119112 +HeapAlloc dt=6 heapalloc_value=16127304 +HeapAlloc dt=5 heapalloc_value=16135496 +HeapAlloc dt=6 heapalloc_value=16143688 +HeapAlloc dt=5 heapalloc_value=16151880 +HeapAlloc dt=5 heapalloc_value=16160072 +HeapAlloc dt=5 heapalloc_value=16168264 +HeapAlloc dt=5 heapalloc_value=16176456 +HeapAlloc dt=5 heapalloc_value=16184648 +HeapAlloc dt=6 heapalloc_value=16192840 +HeapAlloc dt=5 heapalloc_value=16201032 +HeapAlloc dt=5 heapalloc_value=16209224 +HeapAlloc dt=5 heapalloc_value=16217416 +HeapAlloc dt=5 heapalloc_value=16225608 +HeapAlloc dt=6 heapalloc_value=16233800 +HeapAlloc dt=5 heapalloc_value=16241992 +HeapAlloc dt=73 heapalloc_value=16250184 +HeapAlloc dt=6 heapalloc_value=16258376 +HeapAlloc dt=5 heapalloc_value=16266568 +HeapAlloc dt=6 heapalloc_value=16274760 +HeapAlloc dt=371 heapalloc_value=16282952 +HeapAlloc dt=13 heapalloc_value=16291144 +HeapAlloc dt=7 heapalloc_value=16299336 +HeapAlloc dt=6 heapalloc_value=16307528 +HeapAlloc dt=6 heapalloc_value=16315720 +HeapAlloc dt=5 heapalloc_value=16323912 +HeapAlloc dt=6 heapalloc_value=16332104 +HeapAlloc dt=5 heapalloc_value=16340296 +HeapAlloc dt=5 heapalloc_value=16348488 +HeapAlloc dt=22 heapalloc_value=16356680 +HeapAlloc dt=6 heapalloc_value=16364872 +HeapAlloc dt=5 heapalloc_value=16373064 +HeapAlloc dt=6 heapalloc_value=16381256 +HeapAlloc dt=5 heapalloc_value=16389448 +HeapAlloc dt=5 heapalloc_value=16397640 +HeapAlloc dt=5 heapalloc_value=16405832 +HeapAlloc dt=5 heapalloc_value=16414024 +HeapAlloc dt=5 heapalloc_value=16422216 +HeapAlloc dt=6 heapalloc_value=16430408 +HeapAlloc dt=5 heapalloc_value=16438600 +HeapAlloc dt=6 heapalloc_value=16446792 +HeapAlloc dt=5 heapalloc_value=16454984 +HeapAlloc dt=5 heapalloc_value=16463176 +HeapAlloc dt=6 heapalloc_value=16471368 +HeapAlloc dt=5 heapalloc_value=16479560 +HeapAlloc dt=5 heapalloc_value=16487752 +HeapAlloc dt=5 heapalloc_value=16495944 +HeapAlloc dt=6 heapalloc_value=16504136 +HeapAlloc dt=5 heapalloc_value=16512328 +HeapAlloc dt=45 heapalloc_value=16520520 +HeapAlloc dt=38 heapalloc_value=16528712 +HeapAlloc dt=7 heapalloc_value=16536904 +HeapAlloc dt=5 heapalloc_value=16545096 +HeapAlloc dt=5 heapalloc_value=16553288 +HeapAlloc dt=6 heapalloc_value=16561480 +HeapAlloc dt=5 heapalloc_value=16569672 +GoBlock dt=11 reason_string=19 stack=21 +ProcStop dt=109 +ProcStart dt=18122 p=2 p_seq=12 +ProcStop dt=23 +ProcStart dt=803 p=1 p_seq=12 +GoUnblock dt=12 g=24 g_seq=10 stack=0 +GoStart dt=143 g=24 g_seq=11 +GoLabel dt=2 label_string=2 +GoBlock dt=3389 reason_string=15 stack=27 +ProcStop dt=2403 +ProcStart dt=161103 p=4 p_seq=8 +GoStart dt=172 g=38 g_seq=1 +GoStop dt=304901 reason_string=16 stack=50 +GoStart dt=21 g=38 g_seq=2 +GoStop dt=315468 reason_string=16 stack=50 +GoStart dt=20 g=38 g_seq=3 +GoDestroy dt=160861 +ProcStop dt=34 +EventBatch gen=1 m=1709044 time=7689670489757 size=2312 +ProcStart dt=310 p=3 p_seq=2 +ProcStop dt=39 +ProcStart dt=1386 p=3 p_seq=3 +ProcStop dt=138 +ProcStart dt=3920 p=0 p_seq=5 +GoStart dt=266 g=24 g_seq=7 +GoUnblock dt=50 g=1 g_seq=25 stack=41 +GoBlock dt=13 reason_string=15 stack=27 +GoStart dt=7 g=1 g_seq=26 +GCMarkAssistEnd dt=6 +HeapAlloc dt=29 heapalloc_value=3843824 +GCSweepBegin dt=57 stack=42 +GCSweepEnd dt=816 swept_value=827392 reclaimed_value=0 +GCSweepBegin dt=310 stack=43 +GCSweepEnd dt=63 swept_value=67108864 reclaimed_value=0 +HeapAlloc dt=23 heapalloc_value=3852016 +HeapAlloc dt=46 heapalloc_value=3860208 +HeapAlloc dt=27 heapalloc_value=3868400 +HeapAlloc dt=16 heapalloc_value=3876592 +HeapAlloc dt=109 heapalloc_value=3884784 +HeapAlloc dt=32 heapalloc_value=3892976 +HeapAlloc dt=33 heapalloc_value=3901168 +HeapAlloc dt=26 heapalloc_value=3909360 +HeapAlloc dt=35 heapalloc_value=3917552 +HeapAlloc dt=16 heapalloc_value=3925744 +HeapAlloc dt=16 heapalloc_value=3933936 +HeapAlloc dt=16 heapalloc_value=3942128 +HeapAlloc dt=68 heapalloc_value=3950320 +HeapAlloc dt=21 heapalloc_value=3958512 +HeapAlloc dt=20 heapalloc_value=3966704 +HeapAlloc dt=15 heapalloc_value=3974896 +HeapAlloc dt=24 heapalloc_value=3983088 +HeapAlloc dt=15 heapalloc_value=3991280 +HeapAlloc dt=16 heapalloc_value=3999472 +HeapAlloc dt=15 heapalloc_value=4007664 +HeapAlloc dt=18 heapalloc_value=4015856 +HeapAlloc dt=15 heapalloc_value=4024048 +HeapAlloc dt=21 heapalloc_value=4032240 +HeapAlloc dt=26 heapalloc_value=4040432 +HeapAlloc dt=28 heapalloc_value=4048624 +HeapAlloc dt=16 heapalloc_value=4056816 +HeapAlloc dt=16 heapalloc_value=4065008 +HeapAlloc dt=16 heapalloc_value=4073200 +HeapAlloc dt=17 heapalloc_value=4081392 +HeapAlloc dt=15 heapalloc_value=4089584 +HeapAlloc dt=19 heapalloc_value=4097776 +HeapAlloc dt=15 heapalloc_value=4105968 +HeapAlloc dt=20 heapalloc_value=4114160 +HeapAlloc dt=15 heapalloc_value=4122352 +HeapAlloc dt=16 heapalloc_value=4130544 +HeapAlloc dt=16 heapalloc_value=4138736 +HeapAlloc dt=17 heapalloc_value=4146928 +HeapAlloc dt=15 heapalloc_value=4155120 +HeapAlloc dt=20 heapalloc_value=4163312 +HeapAlloc dt=18 heapalloc_value=4171504 +HeapAlloc dt=23 heapalloc_value=4179696 +HeapAlloc dt=18 heapalloc_value=4187888 +HeapAlloc dt=20 heapalloc_value=4196080 +HeapAlloc dt=19 heapalloc_value=4204272 +HeapAlloc dt=19 heapalloc_value=4212464 +HeapAlloc dt=105 heapalloc_value=4220656 +HeapAlloc dt=45 heapalloc_value=4228848 +HeapAlloc dt=22 heapalloc_value=4237040 +HeapAlloc dt=23 heapalloc_value=4245232 +HeapAlloc dt=29 heapalloc_value=4253424 +HeapAlloc dt=21 heapalloc_value=4261616 +HeapAlloc dt=56 heapalloc_value=4269808 +HeapAlloc dt=21 heapalloc_value=4278000 +HeapAlloc dt=25 heapalloc_value=4286192 +HeapAlloc dt=15 heapalloc_value=4294384 +HeapAlloc dt=60 heapalloc_value=4302576 +HeapAlloc dt=40 heapalloc_value=4359920 +HeapAlloc dt=152 heapalloc_value=4368112 +HeapAlloc dt=30 heapalloc_value=4376304 +HeapAlloc dt=27 heapalloc_value=4384496 +HeapAlloc dt=20 heapalloc_value=4392688 +HeapAlloc dt=32 heapalloc_value=4400880 +HeapAlloc dt=25 heapalloc_value=4409072 +HeapAlloc dt=48 heapalloc_value=4417264 +HeapAlloc dt=58 heapalloc_value=4425456 +HeapAlloc dt=30 heapalloc_value=4433648 +HeapAlloc dt=23 heapalloc_value=4441840 +HeapAlloc dt=16 heapalloc_value=4450032 +HeapAlloc dt=17 heapalloc_value=4458224 +HeapAlloc dt=16 heapalloc_value=4466416 +HeapAlloc dt=19 heapalloc_value=4474608 +HeapAlloc dt=16 heapalloc_value=4482800 +HeapAlloc dt=15 heapalloc_value=4490992 +HeapAlloc dt=16 heapalloc_value=4499184 +HeapAlloc dt=16 heapalloc_value=4507376 +HeapAlloc dt=15 heapalloc_value=4515568 +HeapAlloc dt=16 heapalloc_value=4523760 +HeapAlloc dt=16 heapalloc_value=4531952 +HeapAlloc dt=21 heapalloc_value=4540144 +HeapAlloc dt=25 heapalloc_value=4548336 +HeapAlloc dt=22 heapalloc_value=4556528 +HeapAlloc dt=59 heapalloc_value=4564720 +HeapAlloc dt=21 heapalloc_value=4572912 +HeapAlloc dt=16 heapalloc_value=4581104 +HeapAlloc dt=16 heapalloc_value=4589296 +HeapAlloc dt=15 heapalloc_value=4597488 +HeapAlloc dt=24 heapalloc_value=4605680 +HeapAlloc dt=12 heapalloc_value=4613872 +HeapAlloc dt=8 heapalloc_value=4622064 +HeapAlloc dt=11 heapalloc_value=4630256 +HeapAlloc dt=7 heapalloc_value=4638448 +HeapAlloc dt=7 heapalloc_value=4646640 +HeapAlloc dt=7 heapalloc_value=4654832 +GoBlock dt=31 reason_string=19 stack=21 +ProcStop dt=34 +ProcStart dt=6196 p=4 p_seq=2 +ProcStop dt=26 +ProcStart dt=1578 p=0 p_seq=7 +ProcStop dt=12 +ProcStart dt=16743 p=0 p_seq=8 +GoUnblock dt=21 g=1 g_seq=29 stack=0 +GoStart dt=147 g=1 g_seq=30 +HeapAlloc dt=51 heapalloc_value=5768944 +HeapAlloc dt=22 heapalloc_value=5777136 +HeapAlloc dt=16 heapalloc_value=5785328 +HeapAlloc dt=15 heapalloc_value=5793520 +HeapAlloc dt=16 heapalloc_value=5801712 +HeapAlloc dt=18 heapalloc_value=5809904 +HeapAlloc dt=15 heapalloc_value=5818096 +HeapAlloc dt=15 heapalloc_value=5826288 +HeapAlloc dt=12 heapalloc_value=5834480 +HeapAlloc dt=12 heapalloc_value=5842672 +HeapAlloc dt=15 heapalloc_value=5850864 +HeapAlloc dt=16 heapalloc_value=5859056 +HeapAlloc dt=12 heapalloc_value=5867248 +HeapAlloc dt=12 heapalloc_value=5875440 +HeapAlloc dt=6 heapalloc_value=5883632 +HeapAlloc dt=8 heapalloc_value=5891824 +HeapAlloc dt=6 heapalloc_value=5900016 +HeapAlloc dt=6 heapalloc_value=5908208 +HeapAlloc dt=98 heapalloc_value=5916400 +HeapAlloc dt=21 heapalloc_value=5924592 +HeapAlloc dt=5 heapalloc_value=5932784 +HeapAlloc dt=7 heapalloc_value=5940976 +HeapAlloc dt=6 heapalloc_value=5949168 +HeapAlloc dt=9 heapalloc_value=5957360 +HeapAlloc dt=6 heapalloc_value=5965552 +HeapAlloc dt=5 heapalloc_value=5973744 +HeapAlloc dt=7 heapalloc_value=5981936 +HeapAlloc dt=5 heapalloc_value=5990128 +HeapAlloc dt=6 heapalloc_value=5998320 +HeapAlloc dt=5 heapalloc_value=6006512 +HeapAlloc dt=6 heapalloc_value=6014704 +HeapAlloc dt=9 heapalloc_value=6022896 +HeapAlloc dt=5 heapalloc_value=6031088 +HeapAlloc dt=6 heapalloc_value=6039280 +HeapAlloc dt=6 heapalloc_value=6047472 +HeapAlloc dt=40 heapalloc_value=6055664 +HeapAlloc dt=6 heapalloc_value=6063856 +HeapAlloc dt=35 heapalloc_value=6072048 +HeapAlloc dt=8 heapalloc_value=6080240 +HeapAlloc dt=9 heapalloc_value=6088432 +HeapAlloc dt=5 heapalloc_value=6096624 +HeapAlloc dt=6 heapalloc_value=6104816 +HeapAlloc dt=5 heapalloc_value=6113008 +HeapAlloc dt=6 heapalloc_value=6121200 +HeapAlloc dt=6 heapalloc_value=6129392 +HeapAlloc dt=6 heapalloc_value=6137584 +HeapAlloc dt=5 heapalloc_value=6145776 +HeapAlloc dt=9 heapalloc_value=6153968 +HeapAlloc dt=5 heapalloc_value=6162160 +HeapAlloc dt=6 heapalloc_value=6170352 +HeapAlloc dt=6 heapalloc_value=6178544 +HeapAlloc dt=8 heapalloc_value=6186736 +HeapAlloc dt=11 heapalloc_value=6301424 +HeapAlloc dt=2483 heapalloc_value=6309616 +HeapAlloc dt=9 heapalloc_value=6317808 +HeapAlloc dt=7 heapalloc_value=6326000 +HeapAlloc dt=11 heapalloc_value=6334192 +HeapAlloc dt=6 heapalloc_value=6342384 +HeapAlloc dt=6 heapalloc_value=6350576 +HeapAlloc dt=6 heapalloc_value=6358768 +HeapAlloc dt=7 heapalloc_value=6366960 +HeapAlloc dt=9 heapalloc_value=6375152 +HeapAlloc dt=5 heapalloc_value=6383344 +HeapAlloc dt=6 heapalloc_value=6391536 +HeapAlloc dt=6 heapalloc_value=6399728 +HeapAlloc dt=5 heapalloc_value=6407920 +HeapAlloc dt=5 heapalloc_value=6416112 +HeapAlloc dt=6 heapalloc_value=6424304 +HeapAlloc dt=9 heapalloc_value=6432496 +HeapAlloc dt=8 heapalloc_value=6440688 +HeapAlloc dt=9 heapalloc_value=6448880 +HeapAlloc dt=6 heapalloc_value=6457072 +HeapAlloc dt=13 heapalloc_value=6465264 +HeapAlloc dt=6 heapalloc_value=6473456 +HeapAlloc dt=5 heapalloc_value=6481648 +HeapAlloc dt=6 heapalloc_value=6489840 +HeapAlloc dt=5 heapalloc_value=6498032 +HeapAlloc dt=6 heapalloc_value=6506224 +HeapAlloc dt=8 heapalloc_value=6514416 +HeapAlloc dt=6 heapalloc_value=6522608 +HeapAlloc dt=6 heapalloc_value=6530800 +HeapAlloc dt=5 heapalloc_value=6538992 +HeapAlloc dt=81 heapalloc_value=6547184 +HeapAlloc dt=7 heapalloc_value=6555376 +HeapAlloc dt=6 heapalloc_value=6563568 +HeapAlloc dt=5 heapalloc_value=6571760 +HeapAlloc dt=20 heapalloc_value=6579952 +HeapAlloc dt=6 heapalloc_value=6588144 +HeapAlloc dt=56 heapalloc_value=6596336 +HeapAlloc dt=7 heapalloc_value=6604528 +HeapAlloc dt=7 heapalloc_value=6612720 +HeapAlloc dt=6 heapalloc_value=6620912 +HeapAlloc dt=5 heapalloc_value=6629104 +HeapAlloc dt=5 heapalloc_value=6637296 +HeapAlloc dt=6 heapalloc_value=6645488 +HeapAlloc dt=5 heapalloc_value=6653680 +HeapAlloc dt=5 heapalloc_value=6661872 +HeapAlloc dt=6 heapalloc_value=6670064 +HeapAlloc dt=5 heapalloc_value=6678256 +HeapAlloc dt=5 heapalloc_value=6686448 +HeapAlloc dt=6 heapalloc_value=6694640 +HeapAlloc dt=5 heapalloc_value=6702832 +HeapAlloc dt=5 heapalloc_value=6711024 +HeapAlloc dt=6 heapalloc_value=6719216 +HeapAlloc dt=9 heapalloc_value=6727408 +HeapAlloc dt=7 heapalloc_value=6735600 +HeapAlloc dt=5 heapalloc_value=6743792 +HeapAlloc dt=5 heapalloc_value=6751984 +HeapAlloc dt=6 heapalloc_value=6760176 +HeapAlloc dt=5 heapalloc_value=6768368 +HeapAlloc dt=5 heapalloc_value=6776560 +HeapAlloc dt=6 heapalloc_value=6784752 +HeapAlloc dt=5 heapalloc_value=6792944 +HeapAlloc dt=6 heapalloc_value=6801136 +HeapAlloc dt=36 heapalloc_value=6809328 +HeapAlloc dt=7 heapalloc_value=6817520 +HeapAlloc dt=5 heapalloc_value=6825712 +HeapAlloc dt=6 heapalloc_value=6833904 +HeapAlloc dt=6 heapalloc_value=6842096 +HeapAlloc dt=5 heapalloc_value=6850288 +HeapAlloc dt=6 heapalloc_value=6858480 +HeapAlloc dt=5 heapalloc_value=6866672 +HeapAlloc dt=5 heapalloc_value=6874864 +HeapAlloc dt=5 heapalloc_value=6883056 +HeapAlloc dt=5 heapalloc_value=6891248 +HeapAlloc dt=6 heapalloc_value=6899440 +GoBlock dt=14 reason_string=19 stack=21 +ProcStop dt=198 +ProcStart dt=2996 p=0 p_seq=10 +GoUnblock dt=12 g=1 g_seq=31 stack=0 +GoStart dt=135 g=1 g_seq=32 +HeapAlloc dt=25 heapalloc_value=6907632 +HeapAlloc dt=9 heapalloc_value=6915824 +HeapAlloc dt=6 heapalloc_value=6924016 +HeapAlloc dt=5 heapalloc_value=6932208 +HeapAlloc dt=6 heapalloc_value=6940400 +HeapAlloc dt=5 heapalloc_value=6948592 +HeapAlloc dt=5 heapalloc_value=6956784 +HeapAlloc dt=6 heapalloc_value=6964976 +HeapAlloc dt=5 heapalloc_value=6973168 +HeapAlloc dt=6 heapalloc_value=6981360 +HeapAlloc dt=5 heapalloc_value=6989552 +HeapAlloc dt=5 heapalloc_value=6997744 +HeapAlloc dt=5 heapalloc_value=7005936 +HeapAlloc dt=97 heapalloc_value=7014128 +HeapAlloc dt=7 heapalloc_value=7022320 +HeapAlloc dt=5 heapalloc_value=7030512 +HeapAlloc dt=6 heapalloc_value=7038704 +HeapAlloc dt=5 heapalloc_value=7046896 +HeapAlloc dt=5 heapalloc_value=7055088 +HeapAlloc dt=5 heapalloc_value=7063280 +HeapAlloc dt=50 heapalloc_value=7071472 +HeapAlloc dt=7 heapalloc_value=7079664 +HeapAlloc dt=6 heapalloc_value=7087856 +HeapAlloc dt=5 heapalloc_value=7096048 +HeapAlloc dt=20 heapalloc_value=7104240 +HeapAlloc dt=6 heapalloc_value=7112432 +HeapAlloc dt=8 heapalloc_value=7120624 +HeapAlloc dt=6 heapalloc_value=7128816 +HeapAlloc dt=5 heapalloc_value=7137008 +HeapAlloc dt=6 heapalloc_value=7145200 +HeapAlloc dt=8 heapalloc_value=7153392 +HeapAlloc dt=6 heapalloc_value=7161584 +HeapAlloc dt=5 heapalloc_value=7169776 +HeapAlloc dt=5 heapalloc_value=7177968 +HeapAlloc dt=6 heapalloc_value=7186160 +HeapAlloc dt=5 heapalloc_value=7194352 +HeapAlloc dt=5 heapalloc_value=7202544 +HeapAlloc dt=6 heapalloc_value=7210736 +HeapAlloc dt=5 heapalloc_value=7218928 +HeapAlloc dt=35 heapalloc_value=7227120 +HeapAlloc dt=10 heapalloc_value=7235312 +HeapAlloc dt=5 heapalloc_value=7243504 +HeapAlloc dt=5 heapalloc_value=7251696 +HeapAlloc dt=6 heapalloc_value=7259888 +HeapAlloc dt=5 heapalloc_value=7268080 +HeapAlloc dt=5 heapalloc_value=7276272 +HeapAlloc dt=5 heapalloc_value=7284464 +HeapAlloc dt=6 heapalloc_value=7292656 +HeapAlloc dt=6 heapalloc_value=7300848 +HeapAlloc dt=5 heapalloc_value=7309040 +HeapAlloc dt=13 heapalloc_value=7317232 +HeapAlloc dt=5 heapalloc_value=7325424 +HeapAlloc dt=6 heapalloc_value=7333616 +HeapAlloc dt=8 heapalloc_value=7341808 +HeapAlloc dt=5 heapalloc_value=7350000 +HeapAlloc dt=9 heapalloc_value=7358192 +HeapAlloc dt=5 heapalloc_value=7366384 +HeapAlloc dt=6 heapalloc_value=7374576 +HeapAlloc dt=5 heapalloc_value=7382768 +HeapAlloc dt=5 heapalloc_value=7390960 +HeapAlloc dt=5 heapalloc_value=7399152 +HeapAlloc dt=6 heapalloc_value=7407344 +HeapAlloc dt=5 heapalloc_value=7415536 +HeapAlloc dt=5 heapalloc_value=7423728 +HeapAlloc dt=6 heapalloc_value=7431920 +HeapAlloc dt=5 heapalloc_value=7440112 +HeapAlloc dt=5 heapalloc_value=7448304 +HeapAlloc dt=5 heapalloc_value=7456496 +HeapAlloc dt=6 heapalloc_value=7464688 +HeapAlloc dt=5 heapalloc_value=7472880 +HeapAlloc dt=5 heapalloc_value=7481072 +HeapAlloc dt=5 heapalloc_value=7489264 +HeapAlloc dt=6 heapalloc_value=7497456 +HeapAlloc dt=5 heapalloc_value=7505648 +HeapAlloc dt=5 heapalloc_value=7513840 +HeapAlloc dt=5 heapalloc_value=7522032 +HeapAlloc dt=5 heapalloc_value=7530224 +HeapAlloc dt=6 heapalloc_value=7538416 +HeapAlloc dt=5 heapalloc_value=7546608 +HeapAlloc dt=6 heapalloc_value=7554800 +HeapAlloc dt=5 heapalloc_value=7562992 +HeapAlloc dt=5 heapalloc_value=7571184 +HeapAlloc dt=6 heapalloc_value=7579376 +HeapAlloc dt=5 heapalloc_value=7587568 +HeapAlloc dt=45 heapalloc_value=7595760 +HeapAlloc dt=7 heapalloc_value=7603952 +HeapAlloc dt=5 heapalloc_value=7612144 +HeapAlloc dt=6 heapalloc_value=7620336 +HeapAlloc dt=376 heapalloc_value=7628528 +HeapAlloc dt=13 heapalloc_value=7636720 +HeapAlloc dt=7 heapalloc_value=7644912 +HeapAlloc dt=35 heapalloc_value=7653104 +GCBegin dt=23 gc_seq=3 stack=22 +STWBegin dt=73 kind_string=22 stack=28 +GoUnblock dt=258 g=4 g_seq=5 stack=29 +ProcsChange dt=80 procs_value=8 stack=30 +STWEnd dt=37 +GCMarkAssistBegin dt=96 stack=31 +GCMarkAssistEnd dt=4606 +HeapAlloc dt=187 heapalloc_value=7671600 +HeapAlloc dt=26 heapalloc_value=7679792 +HeapAlloc dt=17 heapalloc_value=7687984 +HeapAlloc dt=29 heapalloc_value=7696176 +HeapAlloc dt=16 heapalloc_value=7704368 +HeapAlloc dt=12 heapalloc_value=7712560 +HeapAlloc dt=48 heapalloc_value=7868208 +GoStop dt=4635 reason_string=16 stack=45 +GoStart dt=48 g=1 g_seq=33 +HeapAlloc dt=27 heapalloc_value=7884336 +HeapAlloc dt=11 heapalloc_value=7892528 +HeapAlloc dt=8 heapalloc_value=7900720 +HeapAlloc dt=12 heapalloc_value=7908912 +HeapAlloc dt=9 heapalloc_value=7917104 +HeapAlloc dt=9 heapalloc_value=7925296 +HeapAlloc dt=9 heapalloc_value=7933488 +HeapAlloc dt=8 heapalloc_value=7941680 +HeapAlloc dt=10 heapalloc_value=7949872 +HeapAlloc dt=8 heapalloc_value=7958064 +HeapAlloc dt=10 heapalloc_value=7966256 +HeapAlloc dt=12 heapalloc_value=7974448 +HeapAlloc dt=8 heapalloc_value=7982640 +HeapAlloc dt=8 heapalloc_value=7990832 +HeapAlloc dt=9 heapalloc_value=7999024 +HeapAlloc dt=8 heapalloc_value=8007216 +HeapAlloc dt=54 heapalloc_value=8015408 +HeapAlloc dt=10 heapalloc_value=8023600 +HeapAlloc dt=8 heapalloc_value=8031792 +HeapAlloc dt=9 heapalloc_value=8039984 +HeapAlloc dt=8 heapalloc_value=8048176 +HeapAlloc dt=9 heapalloc_value=8056368 +HeapAlloc dt=8 heapalloc_value=8064560 +HeapAlloc dt=9 heapalloc_value=8072752 +HeapAlloc dt=8 heapalloc_value=8080944 +HeapAlloc dt=9 heapalloc_value=8089136 +HeapAlloc dt=8 heapalloc_value=8097328 +GoBlock dt=20 reason_string=19 stack=21 +ProcStop dt=35 +ProcStart dt=147580 p=3 p_seq=6 +GoStart dt=144 g=4 g_seq=10 +GoBlock dt=38 reason_string=15 stack=32 +GoUnblock dt=41 g=25 g_seq=4 stack=0 +GoStart dt=6 g=25 g_seq=5 +GoLabel dt=1 label_string=4 +GoBlock dt=5825 reason_string=15 stack=27 +ProcStop dt=299 +ProcStart dt=158874 p=3 p_seq=7 +GoStart dt=231 g=35 g_seq=1 +GoStop dt=305629 reason_string=16 stack=51 +GoStart dt=79 g=35 g_seq=2 +GoStop dt=315206 reason_string=16 stack=50 +GoStart dt=36 g=35 g_seq=3 +GoDestroy dt=160337 +ProcStop dt=68 +EventBatch gen=1 m=1709042 time=7689670149213 size=4550 +ProcStart dt=287 p=2 p_seq=1 +GoStart dt=328 g=7 g_seq=1 +HeapAlloc dt=7006 heapalloc_value=2793472 +HeapAlloc dt=74 heapalloc_value=2801664 +GoBlock dt=275 reason_string=12 stack=18 +ProcStop dt=34 +ProcStart dt=327698 p=0 p_seq=3 +ProcStop dt=7 +ProcStart dt=2124 p=2 p_seq=3 +GoUnblock dt=32 g=24 g_seq=2 stack=0 +HeapAlloc dt=302 heapalloc_value=4038656 +HeapAlloc dt=104 heapalloc_value=4046848 +HeapAlloc dt=52 heapalloc_value=4055040 +GoStart dt=1147 g=24 g_seq=3 +GoLabel dt=5 label_string=2 +GoBlock dt=128 reason_string=15 stack=27 +GoUnblock dt=72 g=1 g_seq=21 stack=0 +GoStart dt=11 g=1 g_seq=22 +HeapAlloc dt=44 heapalloc_value=4063232 +HeapAlloc dt=43 heapalloc_value=4071424 +HeapAlloc dt=28 heapalloc_value=4079616 +HeapAlloc dt=24 heapalloc_value=4087808 +HeapAlloc dt=84 heapalloc_value=4096000 +HeapAlloc dt=25 heapalloc_value=4104192 +HeapAlloc dt=20 heapalloc_value=4112384 +HeapAlloc dt=24 heapalloc_value=4120576 +HeapAlloc dt=20 heapalloc_value=4128768 +HeapAlloc dt=19 heapalloc_value=4136960 +HeapAlloc dt=24 heapalloc_value=4145152 +HeapAlloc dt=20 heapalloc_value=4153344 +HeapAlloc dt=19 heapalloc_value=4161536 +HeapAlloc dt=20 heapalloc_value=4169728 +HeapAlloc dt=24 heapalloc_value=4177920 +HeapAlloc dt=33 heapalloc_value=4186112 +HeapAlloc dt=26 heapalloc_value=4194304 +HeapAlloc dt=31 heapalloc_value=4235264 +HeapAlloc dt=363 heapalloc_value=4243456 +HeapAlloc dt=61 heapalloc_value=4251648 +HeapAlloc dt=14 heapalloc_value=4259840 +HeapAlloc dt=12 heapalloc_value=4268032 +HeapAlloc dt=9 heapalloc_value=4276224 +HeapAlloc dt=9 heapalloc_value=4284416 +HeapAlloc dt=9 heapalloc_value=4292608 +HeapAlloc dt=8 heapalloc_value=4300800 +HeapAlloc dt=162 heapalloc_value=4308992 +HeapAlloc dt=14 heapalloc_value=4317184 +HeapAlloc dt=8 heapalloc_value=4325376 +HeapAlloc dt=53 heapalloc_value=4333568 +HeapAlloc dt=10 heapalloc_value=4341760 +HeapAlloc dt=16 heapalloc_value=4349952 +HeapAlloc dt=14 heapalloc_value=4358144 +GCMarkAssistBegin dt=27 stack=31 +GCMarkAssistEnd dt=18 +GCMarkAssistBegin dt=4 stack=31 +GoBlock dt=198 reason_string=13 stack=33 +ProcStop dt=19 +ProcStart dt=387 p=2 p_seq=4 +GoUnblock dt=265 g=24 g_seq=4 stack=0 +GoStart dt=69 g=24 g_seq=5 +GoLabel dt=1 label_string=2 +GoBlock dt=132 reason_string=10 stack=35 +GoStart dt=20 g=1 g_seq=24 +GCMarkAssistEnd dt=2 +HeapAlloc dt=13 heapalloc_value=4366336 +GCMarkAssistBegin dt=7 stack=31 +GoBlock dt=25 reason_string=10 stack=36 +ProcStop dt=24 +ProcStart dt=4689 p=1 p_seq=7 +ProcStop dt=23 +ProcStart dt=36183 p=1 p_seq=8 +ProcStop dt=24 +ProcStart dt=1076 p=1 p_seq=9 +GoUnblock dt=12 g=22 g_seq=4 stack=0 +GoStart dt=118 g=22 g_seq=5 +GoLabel dt=1 label_string=2 +GoBlock dt=7117 reason_string=15 stack=27 +ProcStop dt=41 +ProcStart dt=150567 p=4 p_seq=7 +GoUnblock dt=41 g=23 g_seq=4 stack=0 +HeapAlloc dt=108 heapalloc_value=17163592 +HeapAlloc dt=61 heapalloc_value=17166856 +HeapAlloc dt=2994 heapalloc_value=17608712 +GoStart dt=1008 g=23 g_seq=5 +GoLabel dt=4 label_string=4 +GoBlock dt=40 reason_string=15 stack=27 +GoUnblock dt=49 g=1 g_seq=52 stack=0 +GoStart dt=7 g=1 g_seq=53 +HeapAlloc dt=30 heapalloc_value=17616904 +HeapAlloc dt=52 heapalloc_value=17625096 +HeapAlloc dt=35 heapalloc_value=17633288 +HeapAlloc dt=27 heapalloc_value=17641480 +HeapAlloc dt=28 heapalloc_value=17649672 +HeapAlloc dt=87 heapalloc_value=17657864 +HeapAlloc dt=32 heapalloc_value=17666056 +HeapAlloc dt=24 heapalloc_value=17674248 +HeapAlloc dt=22 heapalloc_value=17682440 +HeapAlloc dt=16 heapalloc_value=17690632 +HeapAlloc dt=15 heapalloc_value=17698824 +HeapAlloc dt=20 heapalloc_value=17707016 +HeapAlloc dt=19 heapalloc_value=17715208 +HeapAlloc dt=15 heapalloc_value=17723400 +HeapAlloc dt=18 heapalloc_value=17731592 +HeapAlloc dt=20 heapalloc_value=17739784 +HeapAlloc dt=15 heapalloc_value=17747976 +HeapAlloc dt=17 heapalloc_value=17756168 +HeapAlloc dt=67 heapalloc_value=17764360 +HeapAlloc dt=28 heapalloc_value=17772552 +HeapAlloc dt=22 heapalloc_value=17780744 +HeapAlloc dt=19 heapalloc_value=17788936 +HeapAlloc dt=22 heapalloc_value=17797128 +HeapAlloc dt=19 heapalloc_value=17805320 +HeapAlloc dt=19 heapalloc_value=17813512 +HeapAlloc dt=19 heapalloc_value=17821704 +HeapAlloc dt=15 heapalloc_value=17829896 +HeapAlloc dt=21 heapalloc_value=17838088 +HeapAlloc dt=19 heapalloc_value=17846280 +HeapAlloc dt=16 heapalloc_value=17854472 +HeapAlloc dt=14 heapalloc_value=17862664 +HeapAlloc dt=18 heapalloc_value=17870856 +HeapAlloc dt=58 heapalloc_value=17879048 +HeapAlloc dt=19 heapalloc_value=17887240 +HeapAlloc dt=15 heapalloc_value=17895432 +HeapAlloc dt=19 heapalloc_value=17903624 +HeapAlloc dt=21 heapalloc_value=17911816 +HeapAlloc dt=17 heapalloc_value=17920008 +HeapAlloc dt=19 heapalloc_value=17928200 +HeapAlloc dt=19 heapalloc_value=17936392 +HeapAlloc dt=16 heapalloc_value=17944584 +HeapAlloc dt=15 heapalloc_value=17952776 +HeapAlloc dt=15 heapalloc_value=17960968 +HeapAlloc dt=19 heapalloc_value=17969160 +HeapAlloc dt=16 heapalloc_value=17977352 +HeapAlloc dt=16 heapalloc_value=17985544 +HeapAlloc dt=16 heapalloc_value=17993736 +HeapAlloc dt=19 heapalloc_value=18001928 +HeapAlloc dt=15 heapalloc_value=18010120 +HeapAlloc dt=16 heapalloc_value=18018312 +HeapAlloc dt=15 heapalloc_value=18026504 +HeapAlloc dt=19 heapalloc_value=18034696 +HeapAlloc dt=14 heapalloc_value=18042888 +HeapAlloc dt=17 heapalloc_value=18051080 +HeapAlloc dt=18 heapalloc_value=18059272 +HeapAlloc dt=20 heapalloc_value=18067464 +HeapAlloc dt=17 heapalloc_value=18075656 +HeapAlloc dt=125 heapalloc_value=18083848 +GoStop dt=20 reason_string=16 stack=46 +GoUnblock dt=288 g=25 g_seq=6 stack=0 +GoStart dt=7 g=25 g_seq=7 +GoLabel dt=1 label_string=2 +HeapAlloc dt=255 heapalloc_value=18091752 +GoBlock dt=30 reason_string=10 stack=35 +GoStart dt=5 g=1 g_seq=54 +HeapAlloc dt=25 heapalloc_value=18099944 +HeapAlloc dt=19 heapalloc_value=18108136 +HeapAlloc dt=45 heapalloc_value=18116328 +HeapAlloc dt=9 heapalloc_value=18124520 +HeapAlloc dt=80 heapalloc_value=18132712 +HeapAlloc dt=11 heapalloc_value=18140904 +HeapAlloc dt=6 heapalloc_value=18149096 +HeapAlloc dt=7 heapalloc_value=18157288 +HeapAlloc dt=7 heapalloc_value=18165480 +HeapAlloc dt=12 heapalloc_value=18173672 +HeapAlloc dt=11 heapalloc_value=18181864 +HeapAlloc dt=11 heapalloc_value=18190056 +HeapAlloc dt=7 heapalloc_value=18198248 +HeapAlloc dt=62 heapalloc_value=18206440 +HeapAlloc dt=8 heapalloc_value=18214632 +HeapAlloc dt=7 heapalloc_value=18222824 +HeapAlloc dt=6 heapalloc_value=18231016 +HeapAlloc dt=7 heapalloc_value=18239208 +HeapAlloc dt=11 heapalloc_value=18247400 +HeapAlloc dt=6 heapalloc_value=18255592 +HeapAlloc dt=7 heapalloc_value=18263784 +HeapAlloc dt=11 heapalloc_value=18271976 +HeapAlloc dt=6 heapalloc_value=18280168 +HeapAlloc dt=7 heapalloc_value=18288360 +HeapAlloc dt=7 heapalloc_value=18296552 +HeapAlloc dt=6 heapalloc_value=18304744 +HeapAlloc dt=10 heapalloc_value=18312936 +HeapAlloc dt=7 heapalloc_value=18321128 +HeapAlloc dt=7 heapalloc_value=18329320 +HeapAlloc dt=7 heapalloc_value=18337512 +HeapAlloc dt=31 heapalloc_value=18345704 +HeapAlloc dt=17 heapalloc_value=18353896 +HeapAlloc dt=7 heapalloc_value=18362088 +HeapAlloc dt=13 heapalloc_value=18370280 +HeapAlloc dt=6 heapalloc_value=18378472 +HeapAlloc dt=7 heapalloc_value=18386664 +HeapAlloc dt=7 heapalloc_value=18394856 +HeapAlloc dt=11 heapalloc_value=18403048 +HeapAlloc dt=6 heapalloc_value=18411240 +HeapAlloc dt=7 heapalloc_value=18419432 +HeapAlloc dt=7 heapalloc_value=18427624 +HeapAlloc dt=6 heapalloc_value=18435816 +HeapAlloc dt=7 heapalloc_value=18444008 +HeapAlloc dt=7 heapalloc_value=18452200 +GCMarkAssistBegin dt=13 stack=31 +GoBlock dt=35 reason_string=10 stack=36 +ProcStop dt=22 +ProcStart dt=936 p=1 p_seq=13 +GoStart dt=212 g=25 g_seq=9 +GoUnblock dt=31 g=1 g_seq=55 stack=41 +GoBlock dt=7 reason_string=15 stack=27 +GoStart dt=13 g=1 g_seq=56 +GCMarkAssistEnd dt=4 +HeapAlloc dt=30 heapalloc_value=16971400 +GCSweepBegin dt=41 stack=42 +GCSweepEnd dt=310 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=23 heapalloc_value=16979592 +GCSweepBegin dt=30 stack=42 +GCSweepEnd dt=934 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=80 heapalloc_value=16987784 +GCSweepBegin dt=43 stack=42 +GCSweepEnd dt=1671 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=6 heapalloc_value=16995976 +GCSweepBegin dt=41 stack=42 +GCSweepEnd dt=1680 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=13 heapalloc_value=17004168 +GCSweepBegin dt=44 stack=42 +GCSweepEnd dt=1555 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=12 heapalloc_value=17012360 +GCSweepBegin dt=46 stack=42 +GCSweepEnd dt=1914 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=16 heapalloc_value=17020552 +GCSweepBegin dt=47 stack=42 +GCSweepEnd dt=1545 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=10 heapalloc_value=17028744 +GCSweepBegin dt=37 stack=42 +GCSweepEnd dt=1763 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=9 heapalloc_value=17036936 +GCSweepBegin dt=37 stack=42 +GCSweepEnd dt=1712 swept_value=827392 reclaimed_value=0 +HeapAlloc dt=18 heapalloc_value=17045128 +GCSweepBegin dt=34 stack=42 +GCSweepEnd dt=1009 swept_value=466944 reclaimed_value=0 +HeapAlloc dt=9 heapalloc_value=17053320 +HeapAlloc dt=28 heapalloc_value=17061512 +HeapAlloc dt=25 heapalloc_value=17069704 +HeapAlloc dt=34 heapalloc_value=17077896 +HeapAlloc dt=39 heapalloc_value=17086088 +HeapAlloc dt=72 heapalloc_value=17094280 +HeapAlloc dt=32 heapalloc_value=17102472 +HeapAlloc dt=16 heapalloc_value=17110664 +HeapAlloc dt=15 heapalloc_value=17118856 +HeapAlloc dt=14 heapalloc_value=17127048 +HeapAlloc dt=16 heapalloc_value=17135240 +HeapAlloc dt=15 heapalloc_value=17143432 +HeapAlloc dt=19 heapalloc_value=17151624 +HeapAlloc dt=15 heapalloc_value=17159816 +HeapAlloc dt=54 heapalloc_value=17585800 +GoBlock dt=482 reason_string=19 stack=21 +ProcStop dt=210 +ProcStart dt=17621 p=0 p_seq=26 +ProcStop dt=24 +ProcStart dt=5194 p=1 p_seq=16 +ProcStop dt=17 +ProcStart dt=16724 p=1 p_seq=17 +GoUnblock dt=27 g=1 g_seq=59 stack=0 +GoStart dt=127 g=1 g_seq=60 +HeapAlloc dt=55 heapalloc_value=18617992 +HeapAlloc dt=64 heapalloc_value=18626184 +HeapAlloc dt=65 heapalloc_value=18634376 +HeapAlloc dt=61 heapalloc_value=18642568 +HeapAlloc dt=54 heapalloc_value=18650760 +HeapAlloc dt=66 heapalloc_value=18658952 +HeapAlloc dt=67 heapalloc_value=18667144 +HeapAlloc dt=54 heapalloc_value=18675336 +HeapAlloc dt=57 heapalloc_value=18683528 +HeapAlloc dt=45 heapalloc_value=18691720 +HeapAlloc dt=84 heapalloc_value=18699912 +HeapAlloc dt=26 heapalloc_value=18708104 +HeapAlloc dt=18 heapalloc_value=18716296 +HeapAlloc dt=15 heapalloc_value=18724488 +HeapAlloc dt=24 heapalloc_value=18732680 +HeapAlloc dt=26 heapalloc_value=18740872 +HeapAlloc dt=21 heapalloc_value=18749064 +HeapAlloc dt=15 heapalloc_value=18757256 +HeapAlloc dt=31 heapalloc_value=18765448 +HeapAlloc dt=7 heapalloc_value=18773640 +HeapAlloc dt=7 heapalloc_value=18781832 +HeapAlloc dt=113 heapalloc_value=18790024 +HeapAlloc dt=8 heapalloc_value=18798216 +HeapAlloc dt=6 heapalloc_value=18806408 +HeapAlloc dt=7 heapalloc_value=18814600 +HeapAlloc dt=6 heapalloc_value=18822792 +HeapAlloc dt=6 heapalloc_value=18830984 +HeapAlloc dt=7 heapalloc_value=18839176 +HeapAlloc dt=6 heapalloc_value=18847368 +HeapAlloc dt=6 heapalloc_value=18855560 +HeapAlloc dt=6 heapalloc_value=18863752 +HeapAlloc dt=6 heapalloc_value=18871944 +HeapAlloc dt=6 heapalloc_value=18880136 +HeapAlloc dt=6 heapalloc_value=18888328 +HeapAlloc dt=6 heapalloc_value=18896520 +HeapAlloc dt=7 heapalloc_value=18904712 +HeapAlloc dt=6 heapalloc_value=18912904 +HeapAlloc dt=38 heapalloc_value=18921096 +HeapAlloc dt=7 heapalloc_value=18929288 +HeapAlloc dt=6 heapalloc_value=18937480 +HeapAlloc dt=14 heapalloc_value=18945672 +HeapAlloc dt=6 heapalloc_value=18953864 +HeapAlloc dt=6 heapalloc_value=18962056 +HeapAlloc dt=6 heapalloc_value=18970248 +HeapAlloc dt=7 heapalloc_value=18978440 +HeapAlloc dt=6 heapalloc_value=18986632 +HeapAlloc dt=6 heapalloc_value=18994824 +HeapAlloc dt=13 heapalloc_value=19003016 +HeapAlloc dt=7 heapalloc_value=19011208 +HeapAlloc dt=6 heapalloc_value=19019400 +HeapAlloc dt=6 heapalloc_value=19027592 +HeapAlloc dt=6 heapalloc_value=19035784 +HeapAlloc dt=7 heapalloc_value=19043976 +HeapAlloc dt=6 heapalloc_value=19052168 +HeapAlloc dt=6 heapalloc_value=19060360 +HeapAlloc dt=6 heapalloc_value=19068552 +HeapAlloc dt=6 heapalloc_value=19076744 +HeapAlloc dt=7 heapalloc_value=19084936 +HeapAlloc dt=6 heapalloc_value=19093128 +HeapAlloc dt=6 heapalloc_value=19101320 +HeapAlloc dt=6 heapalloc_value=19109512 +HeapAlloc dt=7 heapalloc_value=19117704 +HeapAlloc dt=5 heapalloc_value=19125896 +HeapAlloc dt=7 heapalloc_value=19134088 +HeapAlloc dt=6 heapalloc_value=19142280 +HeapAlloc dt=6 heapalloc_value=19150472 +HeapAlloc dt=6 heapalloc_value=19158664 +HeapAlloc dt=6 heapalloc_value=19166856 +HeapAlloc dt=7 heapalloc_value=19175048 +HeapAlloc dt=6 heapalloc_value=19183240 +HeapAlloc dt=6 heapalloc_value=19191432 +HeapAlloc dt=6 heapalloc_value=19199624 +HeapAlloc dt=7 heapalloc_value=19207816 +HeapAlloc dt=6 heapalloc_value=19216008 +HeapAlloc dt=6 heapalloc_value=19224200 +HeapAlloc dt=6 heapalloc_value=19232392 +HeapAlloc dt=7 heapalloc_value=19240584 +HeapAlloc dt=6 heapalloc_value=19248776 +HeapAlloc dt=6 heapalloc_value=19256968 +HeapAlloc dt=6 heapalloc_value=19265160 +HeapAlloc dt=6 heapalloc_value=19273352 +HeapAlloc dt=6 heapalloc_value=19281544 +HeapAlloc dt=6 heapalloc_value=19289736 +HeapAlloc dt=7 heapalloc_value=19297928 +HeapAlloc dt=6 heapalloc_value=19306120 +HeapAlloc dt=62 heapalloc_value=19314312 +HeapAlloc dt=7 heapalloc_value=19322504 +HeapAlloc dt=6 heapalloc_value=19330696 +HeapAlloc dt=6 heapalloc_value=19338888 +HeapAlloc dt=35 heapalloc_value=19347080 +HeapAlloc dt=7 heapalloc_value=19355272 +HeapAlloc dt=6 heapalloc_value=19363464 +HeapAlloc dt=6 heapalloc_value=19371656 +HeapAlloc dt=6 heapalloc_value=19379848 +HeapAlloc dt=6 heapalloc_value=19388040 +HeapAlloc dt=6 heapalloc_value=19396232 +HeapAlloc dt=7 heapalloc_value=19404424 +HeapAlloc dt=6 heapalloc_value=19412616 +HeapAlloc dt=7 heapalloc_value=19420808 +HeapAlloc dt=6 heapalloc_value=19429000 +HeapAlloc dt=6 heapalloc_value=19437192 +HeapAlloc dt=6 heapalloc_value=19445384 +HeapAlloc dt=7 heapalloc_value=19453576 +HeapAlloc dt=6 heapalloc_value=19461768 +HeapAlloc dt=10 heapalloc_value=19469960 +HeapAlloc dt=6 heapalloc_value=19478152 +HeapAlloc dt=6 heapalloc_value=19486344 +HeapAlloc dt=6 heapalloc_value=19494536 +HeapAlloc dt=6 heapalloc_value=19502728 +HeapAlloc dt=7 heapalloc_value=19510920 +HeapAlloc dt=6 heapalloc_value=19519112 +HeapAlloc dt=6 heapalloc_value=19527304 +HeapAlloc dt=6 heapalloc_value=19535496 +HeapAlloc dt=6 heapalloc_value=19543688 +HeapAlloc dt=35 heapalloc_value=19551880 +HeapAlloc dt=7 heapalloc_value=19560072 +HeapAlloc dt=6 heapalloc_value=19568264 +HeapAlloc dt=6 heapalloc_value=19576456 +HeapAlloc dt=6 heapalloc_value=19584648 +HeapAlloc dt=7 heapalloc_value=19592840 +HeapAlloc dt=7 heapalloc_value=19601032 +HeapAlloc dt=6 heapalloc_value=19609224 +HeapAlloc dt=6 heapalloc_value=19617416 +HeapAlloc dt=6 heapalloc_value=19625608 +HeapAlloc dt=6 heapalloc_value=19633800 +GoBlock dt=12 reason_string=19 stack=21 +ProcStop dt=171 +ProcStart dt=17527 p=0 p_seq=28 +ProcStop dt=24 +ProcStart dt=1830 p=1 p_seq=20 ProcStop dt=13 -ProcStart dt=16751 p=0 p_seq=7 -GoUnblock dt=32 g=1 g_seq=5 stack=0 -GoStart dt=182 g=1 g_seq=6 -HeapAlloc dt=62 heapalloc_value=2842624 -HeapAlloc dt=25 heapalloc_value=2850816 -HeapAlloc dt=14 heapalloc_value=2859008 -HeapAlloc dt=11 heapalloc_value=2867200 -HeapAlloc dt=8 heapalloc_value=2875392 -HeapAlloc dt=9 heapalloc_value=2883584 -HeapAlloc dt=9 heapalloc_value=2891776 -HeapAlloc dt=8 heapalloc_value=2899968 -HeapAlloc dt=11 heapalloc_value=2908160 -HeapAlloc dt=102 heapalloc_value=2916352 -HeapAlloc dt=10 heapalloc_value=2924544 -HeapAlloc dt=13 heapalloc_value=2932736 -HeapAlloc dt=7 heapalloc_value=2940928 -HeapAlloc dt=8 heapalloc_value=2949120 -HeapAlloc dt=9 heapalloc_value=2957312 -HeapAlloc dt=8 heapalloc_value=2965504 -HeapAlloc dt=90 heapalloc_value=2973696 -HeapAlloc dt=9 heapalloc_value=2981888 -HeapAlloc dt=7 heapalloc_value=2990080 -HeapAlloc dt=8 heapalloc_value=2998272 -HeapAlloc dt=7 heapalloc_value=3006464 -HeapAlloc dt=6 heapalloc_value=3014656 -HeapAlloc dt=48 heapalloc_value=3022848 -HeapAlloc dt=7 heapalloc_value=3031040 -HeapAlloc dt=9 heapalloc_value=3039232 -HeapAlloc dt=6 heapalloc_value=3047424 -HeapAlloc dt=7 heapalloc_value=3055616 -HeapAlloc dt=8 heapalloc_value=3063808 -HeapAlloc dt=7 heapalloc_value=3072000 -HeapAlloc dt=7 heapalloc_value=3080192 -HeapAlloc dt=6 heapalloc_value=3088384 -HeapAlloc dt=7 heapalloc_value=3096576 -HeapAlloc dt=8 heapalloc_value=3104768 -HeapAlloc dt=8 heapalloc_value=3112960 -HeapAlloc dt=6 heapalloc_value=3121152 -HeapAlloc dt=7 heapalloc_value=3129344 -HeapAlloc dt=6 heapalloc_value=3137536 -HeapAlloc dt=6 heapalloc_value=3145728 -HeapAlloc dt=7 heapalloc_value=3153920 -HeapAlloc dt=6 heapalloc_value=3162112 -HeapAlloc dt=9 heapalloc_value=3170304 -HeapAlloc dt=6 heapalloc_value=3178496 -HeapAlloc dt=6 heapalloc_value=3186688 -HeapAlloc dt=7 heapalloc_value=3194880 -HeapAlloc dt=6 heapalloc_value=3203072 -HeapAlloc dt=7 heapalloc_value=3211264 -HeapAlloc dt=730 heapalloc_value=3260416 -HeapAlloc dt=3100 heapalloc_value=3268608 -HeapAlloc dt=18 heapalloc_value=3276800 -HeapAlloc dt=102 heapalloc_value=3284992 -HeapAlloc dt=9 heapalloc_value=3293184 +ProcStart dt=16742 p=1 p_seq=21 +GoUnblock dt=20 g=1 g_seq=63 stack=0 +GoStart dt=121 g=1 g_seq=64 +HeapAlloc dt=62 heapalloc_value=20665992 +HeapAlloc dt=21 heapalloc_value=20674184 +HeapAlloc dt=25 heapalloc_value=20682376 +HeapAlloc dt=20 heapalloc_value=20690568 +HeapAlloc dt=12 heapalloc_value=20698760 +HeapAlloc dt=16 heapalloc_value=20706952 +HeapAlloc dt=15 heapalloc_value=20715144 +HeapAlloc dt=18 heapalloc_value=20723336 +HeapAlloc dt=12 heapalloc_value=20731528 +HeapAlloc dt=16 heapalloc_value=20739720 +HeapAlloc dt=12 heapalloc_value=20747912 +HeapAlloc dt=12 heapalloc_value=20756104 +HeapAlloc dt=12 heapalloc_value=20764296 +HeapAlloc dt=12 heapalloc_value=20772488 +HeapAlloc dt=9 heapalloc_value=20780680 +HeapAlloc dt=5 heapalloc_value=20788872 +HeapAlloc dt=6 heapalloc_value=20797064 +HeapAlloc dt=9 heapalloc_value=20805256 +HeapAlloc dt=5 heapalloc_value=20813448 +HeapAlloc dt=6 heapalloc_value=20821640 +HeapAlloc dt=5 heapalloc_value=20829832 +HeapAlloc dt=6 heapalloc_value=20838024 +HeapAlloc dt=15 heapalloc_value=20846216 +HeapAlloc dt=12 heapalloc_value=20854408 +HeapAlloc dt=11 heapalloc_value=20862600 +HeapAlloc dt=13 heapalloc_value=20870792 +HeapAlloc dt=5 heapalloc_value=20878984 +HeapAlloc dt=106 heapalloc_value=20887176 +HeapAlloc dt=8 heapalloc_value=20895368 +HeapAlloc dt=5 heapalloc_value=20903560 +HeapAlloc dt=6 heapalloc_value=20911752 +HeapAlloc dt=6 heapalloc_value=20919944 +HeapAlloc dt=5 heapalloc_value=20928136 +HeapAlloc dt=9 heapalloc_value=20936328 +HeapAlloc dt=6 heapalloc_value=20944520 +HeapAlloc dt=5 heapalloc_value=20952712 +HeapAlloc dt=6 heapalloc_value=20960904 +HeapAlloc dt=5 heapalloc_value=20969096 +HeapAlloc dt=6 heapalloc_value=20977288 +HeapAlloc dt=5 heapalloc_value=20985480 +HeapAlloc dt=5 heapalloc_value=20993672 +HeapAlloc dt=10 heapalloc_value=21001864 +HeapAlloc dt=6 heapalloc_value=21010056 +HeapAlloc dt=37 heapalloc_value=21018248 +HeapAlloc dt=7 heapalloc_value=21026440 +HeapAlloc dt=6 heapalloc_value=21034632 +HeapAlloc dt=34 heapalloc_value=21042824 +HeapAlloc dt=6 heapalloc_value=21051016 +HeapAlloc dt=6 heapalloc_value=21059208 +HeapAlloc dt=11 heapalloc_value=21067400 +HeapAlloc dt=6 heapalloc_value=21075592 +HeapAlloc dt=5 heapalloc_value=21083784 +HeapAlloc dt=6 heapalloc_value=21091976 +HeapAlloc dt=5 heapalloc_value=21100168 +HeapAlloc dt=9 heapalloc_value=21108360 +HeapAlloc dt=6 heapalloc_value=21116552 +HeapAlloc dt=6 heapalloc_value=21124744 +HeapAlloc dt=10 heapalloc_value=21132936 +HeapAlloc dt=5 heapalloc_value=21141128 +HeapAlloc dt=6 heapalloc_value=21149320 +HeapAlloc dt=5 heapalloc_value=21157512 +HeapAlloc dt=6 heapalloc_value=21165704 +HeapAlloc dt=5 heapalloc_value=21173896 +HeapAlloc dt=6 heapalloc_value=21182088 +HeapAlloc dt=5 heapalloc_value=21190280 +HeapAlloc dt=9 heapalloc_value=21198472 +HeapAlloc dt=6 heapalloc_value=21206664 +HeapAlloc dt=6 heapalloc_value=21214856 +HeapAlloc dt=6 heapalloc_value=21223048 +HeapAlloc dt=5 heapalloc_value=21231240 +HeapAlloc dt=6 heapalloc_value=21239432 +HeapAlloc dt=5 heapalloc_value=21247624 +HeapAlloc dt=6 heapalloc_value=21255816 +HeapAlloc dt=5 heapalloc_value=21264008 +HeapAlloc dt=6 heapalloc_value=21272200 +HeapAlloc dt=5 heapalloc_value=21280392 +HeapAlloc dt=6 heapalloc_value=21288584 +HeapAlloc dt=5 heapalloc_value=21296776 +HeapAlloc dt=6 heapalloc_value=21304968 +HeapAlloc dt=5 heapalloc_value=21313160 +HeapAlloc dt=6 heapalloc_value=21321352 +HeapAlloc dt=6 heapalloc_value=21329544 +HeapAlloc dt=6 heapalloc_value=21337736 +HeapAlloc dt=6 heapalloc_value=21345928 +HeapAlloc dt=6 heapalloc_value=21354120 +HeapAlloc dt=5 heapalloc_value=21362312 +HeapAlloc dt=6 heapalloc_value=21370504 +HeapAlloc dt=6 heapalloc_value=21378696 +HeapAlloc dt=6 heapalloc_value=21386888 +HeapAlloc dt=5 heapalloc_value=21395080 +HeapAlloc dt=6 heapalloc_value=21403272 +HeapAlloc dt=96 heapalloc_value=21411464 +HeapAlloc dt=7 heapalloc_value=21419656 +HeapAlloc dt=6 heapalloc_value=21427848 +HeapAlloc dt=21 heapalloc_value=21968520 +HeapAlloc dt=1835 heapalloc_value=21976712 +HeapAlloc dt=11 heapalloc_value=21984904 +HeapAlloc dt=8 heapalloc_value=21993096 +HeapAlloc dt=7 heapalloc_value=22001288 +HeapAlloc dt=8 heapalloc_value=22009480 +HeapAlloc dt=7 heapalloc_value=22017672 +HeapAlloc dt=8 heapalloc_value=22025864 +HeapAlloc dt=7 heapalloc_value=22034056 +HeapAlloc dt=8 heapalloc_value=22042248 +HeapAlloc dt=7 heapalloc_value=22050440 +HeapAlloc dt=7 heapalloc_value=22058632 +HeapAlloc dt=8 heapalloc_value=22066824 +HeapAlloc dt=7 heapalloc_value=22075016 +HeapAlloc dt=8 heapalloc_value=22083208 +HeapAlloc dt=7 heapalloc_value=22091400 +HeapAlloc dt=7 heapalloc_value=22099592 +HeapAlloc dt=14 heapalloc_value=22107784 +HeapAlloc dt=5 heapalloc_value=22115976 +HeapAlloc dt=6 heapalloc_value=22124168 +HeapAlloc dt=6 heapalloc_value=22132360 +HeapAlloc dt=5 heapalloc_value=22140552 +HeapAlloc dt=6 heapalloc_value=22148744 +HeapAlloc dt=5 heapalloc_value=22156936 +HeapAlloc dt=6 heapalloc_value=22165128 +HeapAlloc dt=6 heapalloc_value=22173320 +HeapAlloc dt=38 heapalloc_value=22181512 +HeapAlloc dt=7 heapalloc_value=22189704 +HeapAlloc dt=5 heapalloc_value=22197896 +HeapAlloc dt=6 heapalloc_value=22206088 +HeapAlloc dt=6 heapalloc_value=22214280 +HeapAlloc dt=5 heapalloc_value=22222472 +GoBlock dt=9 reason_string=19 stack=21 +ProcStop dt=163 +ProcStart dt=16841 p=0 p_seq=30 +ProcStop dt=23 +ProcStart dt=1498 p=1 p_seq=24 +ProcStop dt=11 +ProcStart dt=16726 p=1 p_seq=25 +GoUnblock dt=19 g=1 g_seq=67 stack=0 +GoStart dt=117 g=1 g_seq=68 +HeapAlloc dt=46 heapalloc_value=23254664 +HeapAlloc dt=19 heapalloc_value=23262856 +HeapAlloc dt=20 heapalloc_value=23271048 +HeapAlloc dt=16 heapalloc_value=23279240 +HeapAlloc dt=12 heapalloc_value=23287432 +HeapAlloc dt=12 heapalloc_value=23295624 +HeapAlloc dt=13 heapalloc_value=23303816 +HeapAlloc dt=15 heapalloc_value=23312008 +HeapAlloc dt=13 heapalloc_value=23320200 +HeapAlloc dt=13 heapalloc_value=23328392 +HeapAlloc dt=12 heapalloc_value=23336584 +HeapAlloc dt=12 heapalloc_value=23344776 +HeapAlloc dt=5 heapalloc_value=23352968 +HeapAlloc dt=100 heapalloc_value=23361160 +HeapAlloc dt=14 heapalloc_value=23369352 +HeapAlloc dt=16 heapalloc_value=23377544 +HeapAlloc dt=13 heapalloc_value=23385736 +HeapAlloc dt=5 heapalloc_value=23393928 +HeapAlloc dt=6 heapalloc_value=23402120 +HeapAlloc dt=9 heapalloc_value=23410312 +HeapAlloc dt=6 heapalloc_value=23418504 +HeapAlloc dt=6 heapalloc_value=23426696 +HeapAlloc dt=5 heapalloc_value=23434888 +HeapAlloc dt=6 heapalloc_value=23443080 +HeapAlloc dt=5 heapalloc_value=23451272 +HeapAlloc dt=6 heapalloc_value=23459464 +HeapAlloc dt=6 heapalloc_value=23467656 +HeapAlloc dt=6 heapalloc_value=23475848 +HeapAlloc dt=6 heapalloc_value=23484040 +HeapAlloc dt=5 heapalloc_value=23492232 +HeapAlloc dt=6 heapalloc_value=23500424 +HeapAlloc dt=5 heapalloc_value=23508616 +HeapAlloc dt=83 heapalloc_value=23516808 +HeapAlloc dt=8 heapalloc_value=23525000 +HeapAlloc dt=5 heapalloc_value=23533192 +HeapAlloc dt=6 heapalloc_value=23541384 +HeapAlloc dt=6 heapalloc_value=23549576 +HeapAlloc dt=5 heapalloc_value=23557768 +HeapAlloc dt=7 heapalloc_value=23565960 +HeapAlloc dt=7 heapalloc_value=23574152 +HeapAlloc dt=6 heapalloc_value=23582344 +HeapAlloc dt=5 heapalloc_value=23590536 +HeapAlloc dt=6 heapalloc_value=23598728 +HeapAlloc dt=6 heapalloc_value=23606920 +HeapAlloc dt=5 heapalloc_value=23615112 +HeapAlloc dt=6 heapalloc_value=23623304 +HeapAlloc dt=6 heapalloc_value=23631496 +HeapAlloc dt=5 heapalloc_value=23639688 +HeapAlloc dt=38 heapalloc_value=23647880 +HeapAlloc dt=8 heapalloc_value=23656072 +HeapAlloc dt=37 heapalloc_value=23664264 +HeapAlloc dt=6 heapalloc_value=23672456 +HeapAlloc dt=6 heapalloc_value=23680648 +HeapAlloc dt=6 heapalloc_value=23688840 +HeapAlloc dt=6 heapalloc_value=23697032 +HeapAlloc dt=6 heapalloc_value=23705224 +HeapAlloc dt=5 heapalloc_value=23713416 +HeapAlloc dt=6 heapalloc_value=23721608 +HeapAlloc dt=10 heapalloc_value=23729800 +HeapAlloc dt=5 heapalloc_value=23737992 +HeapAlloc dt=6 heapalloc_value=23746184 +HeapAlloc dt=6 heapalloc_value=23754376 +HeapAlloc dt=5 heapalloc_value=23762568 +HeapAlloc dt=6 heapalloc_value=23770760 +HeapAlloc dt=6 heapalloc_value=23778952 +HeapAlloc dt=5 heapalloc_value=23787144 +HeapAlloc dt=9 heapalloc_value=23795336 +HeapAlloc dt=6 heapalloc_value=23803528 +HeapAlloc dt=6 heapalloc_value=23811720 +HeapAlloc dt=5 heapalloc_value=23819912 +HeapAlloc dt=6 heapalloc_value=23828104 +HeapAlloc dt=6 heapalloc_value=23836296 +HeapAlloc dt=6 heapalloc_value=23844488 +HeapAlloc dt=5 heapalloc_value=23852680 +HeapAlloc dt=6 heapalloc_value=23860872 +HeapAlloc dt=6 heapalloc_value=23869064 +HeapAlloc dt=6 heapalloc_value=23877256 +HeapAlloc dt=6 heapalloc_value=23885448 +HeapAlloc dt=5 heapalloc_value=23893640 +HeapAlloc dt=6 heapalloc_value=23901832 +HeapAlloc dt=5 heapalloc_value=23910024 +HeapAlloc dt=6 heapalloc_value=23918216 +HeapAlloc dt=6 heapalloc_value=23926408 +HeapAlloc dt=6 heapalloc_value=23934600 +HeapAlloc dt=6 heapalloc_value=23942792 +HeapAlloc dt=5 heapalloc_value=23950984 +HeapAlloc dt=6 heapalloc_value=23959176 +HeapAlloc dt=5 heapalloc_value=23967368 +HeapAlloc dt=6 heapalloc_value=23975560 +HeapAlloc dt=7 heapalloc_value=23983752 +HeapAlloc dt=5 heapalloc_value=23991944 +HeapAlloc dt=6 heapalloc_value=24000136 +HeapAlloc dt=5 heapalloc_value=24008328 +HeapAlloc dt=6 heapalloc_value=24016520 +HeapAlloc dt=6 heapalloc_value=24024712 +HeapAlloc dt=5 heapalloc_value=24032904 +HeapAlloc dt=50 heapalloc_value=24041096 +HeapAlloc dt=7 heapalloc_value=24049288 +HeapAlloc dt=6 heapalloc_value=24057480 +HeapAlloc dt=5 heapalloc_value=24065672 +HeapAlloc dt=34 heapalloc_value=24073864 +HeapAlloc dt=7 heapalloc_value=24082056 +HeapAlloc dt=6 heapalloc_value=24090248 +HeapAlloc dt=6 heapalloc_value=24098440 +HeapAlloc dt=6 heapalloc_value=24106632 +HeapAlloc dt=5 heapalloc_value=24114824 +HeapAlloc dt=6 heapalloc_value=24123016 +HeapAlloc dt=6 heapalloc_value=24131208 +HeapAlloc dt=6 heapalloc_value=24139400 +HeapAlloc dt=6 heapalloc_value=24147592 +HeapAlloc dt=5 heapalloc_value=24155784 +HeapAlloc dt=6 heapalloc_value=24163976 +HeapAlloc dt=5 heapalloc_value=24172168 +HeapAlloc dt=6 heapalloc_value=24180360 +HeapAlloc dt=365 heapalloc_value=24188552 +HeapAlloc dt=13 heapalloc_value=24196744 +HeapAlloc dt=6 heapalloc_value=24204936 +HeapAlloc dt=6 heapalloc_value=24213128 +HeapAlloc dt=5 heapalloc_value=24221320 +HeapAlloc dt=6 heapalloc_value=24229512 +HeapAlloc dt=6 heapalloc_value=24237704 +HeapAlloc dt=6 heapalloc_value=24245896 +HeapAlloc dt=6 heapalloc_value=24254088 +HeapAlloc dt=6 heapalloc_value=24262280 +HeapAlloc dt=6 heapalloc_value=24270472 +GoBlock dt=10 reason_string=19 stack=21 +ProcStop dt=157 +ProcStart dt=12778 p=1 p_seq=27 +GoUnblock dt=12 g=1 g_seq=69 stack=0 +GoStart dt=143 g=1 g_seq=70 +HeapAlloc dt=61 heapalloc_value=24278664 +HeapAlloc dt=11 heapalloc_value=24286856 +HeapAlloc dt=5 heapalloc_value=24295048 +HeapAlloc dt=6 heapalloc_value=24303240 +HeapAlloc dt=5 heapalloc_value=24311432 +HeapAlloc dt=6 heapalloc_value=24319624 +HeapAlloc dt=6 heapalloc_value=24327816 +HeapAlloc dt=6 heapalloc_value=24336008 +HeapAlloc dt=7 heapalloc_value=24344200 +HeapAlloc dt=5 heapalloc_value=24352392 +HeapAlloc dt=7 heapalloc_value=24360584 +HeapAlloc dt=5 heapalloc_value=24368776 +HeapAlloc dt=6 heapalloc_value=24376968 +HeapAlloc dt=6 heapalloc_value=24385160 +HeapAlloc dt=5 heapalloc_value=24393352 +HeapAlloc dt=6 heapalloc_value=24401544 +HeapAlloc dt=6 heapalloc_value=24409736 +HeapAlloc dt=6 heapalloc_value=24417928 +HeapAlloc dt=6 heapalloc_value=24426120 +HeapAlloc dt=5 heapalloc_value=24434312 +HeapAlloc dt=6 heapalloc_value=24442504 +HeapAlloc dt=6 heapalloc_value=24450696 +HeapAlloc dt=6 heapalloc_value=24458888 +HeapAlloc dt=6 heapalloc_value=24467080 +HeapAlloc dt=5 heapalloc_value=24475272 +HeapAlloc dt=6 heapalloc_value=24483464 +HeapAlloc dt=5 heapalloc_value=24491656 +HeapAlloc dt=6 heapalloc_value=24499848 +HeapAlloc dt=6 heapalloc_value=24508040 +HeapAlloc dt=5 heapalloc_value=24516232 +HeapAlloc dt=6 heapalloc_value=24524424 +HeapAlloc dt=6 heapalloc_value=24532616 +HeapAlloc dt=5 heapalloc_value=24540808 +HeapAlloc dt=6 heapalloc_value=24549000 +HeapAlloc dt=5 heapalloc_value=24557192 +HeapAlloc dt=49 heapalloc_value=24565384 +HeapAlloc dt=7 heapalloc_value=24573576 +HeapAlloc dt=5 heapalloc_value=24581768 +HeapAlloc dt=6 heapalloc_value=24589960 +HeapAlloc dt=17 heapalloc_value=24598152 +HeapAlloc dt=12 heapalloc_value=24606344 +HeapAlloc dt=5 heapalloc_value=24614536 +HeapAlloc dt=6 heapalloc_value=24622728 +HeapAlloc dt=5 heapalloc_value=24630920 +HeapAlloc dt=6 heapalloc_value=24639112 +HeapAlloc dt=6 heapalloc_value=24647304 +HeapAlloc dt=5 heapalloc_value=24655496 +HeapAlloc dt=6 heapalloc_value=24663688 +HeapAlloc dt=37 heapalloc_value=24671880 +HeapAlloc dt=6 heapalloc_value=24680072 +HeapAlloc dt=6 heapalloc_value=24688264 +HeapAlloc dt=36 heapalloc_value=24696456 +HeapAlloc dt=7 heapalloc_value=24704648 +HeapAlloc dt=12 heapalloc_value=24712840 +HeapAlloc dt=6 heapalloc_value=24721032 +HeapAlloc dt=17 heapalloc_value=24729224 +HeapAlloc dt=5 heapalloc_value=24737416 +HeapAlloc dt=6 heapalloc_value=24745608 +HeapAlloc dt=19 heapalloc_value=24753800 +HeapAlloc dt=5 heapalloc_value=24761992 +HeapAlloc dt=6 heapalloc_value=24770184 +HeapAlloc dt=79 heapalloc_value=24778376 +HeapAlloc dt=7 heapalloc_value=24786568 +HeapAlloc dt=6 heapalloc_value=24794760 +HeapAlloc dt=5 heapalloc_value=24802952 +HeapAlloc dt=6 heapalloc_value=24811144 +HeapAlloc dt=6 heapalloc_value=24819336 +HeapAlloc dt=6 heapalloc_value=24827528 +HeapAlloc dt=5 heapalloc_value=24835720 +HeapAlloc dt=6 heapalloc_value=24843912 +HeapAlloc dt=6 heapalloc_value=24852104 +HeapAlloc dt=6 heapalloc_value=24860296 +HeapAlloc dt=6 heapalloc_value=24868488 +HeapAlloc dt=5 heapalloc_value=24876680 +HeapAlloc dt=6 heapalloc_value=24884872 +HeapAlloc dt=6 heapalloc_value=24893064 +HeapAlloc dt=5 heapalloc_value=24901256 +HeapAlloc dt=6 heapalloc_value=24909448 +HeapAlloc dt=6 heapalloc_value=24917640 +HeapAlloc dt=5 heapalloc_value=24925832 +HeapAlloc dt=6 heapalloc_value=24934024 +HeapAlloc dt=5 heapalloc_value=24942216 +HeapAlloc dt=6 heapalloc_value=24950408 +HeapAlloc dt=6 heapalloc_value=24958600 +HeapAlloc dt=6 heapalloc_value=24966792 +HeapAlloc dt=5 heapalloc_value=24974984 +HeapAlloc dt=6 heapalloc_value=24983176 +HeapAlloc dt=6 heapalloc_value=24991368 +HeapAlloc dt=6 heapalloc_value=24999560 +HeapAlloc dt=5 heapalloc_value=25007752 +HeapAlloc dt=6 heapalloc_value=25015944 +HeapAlloc dt=5 heapalloc_value=25024136 +HeapAlloc dt=6 heapalloc_value=25032328 +HeapAlloc dt=6 heapalloc_value=25040520 +HeapAlloc dt=6 heapalloc_value=25048712 +HeapAlloc dt=6 heapalloc_value=25056904 +HeapAlloc dt=5 heapalloc_value=25065096 +HeapAlloc dt=6 heapalloc_value=25073288 +HeapAlloc dt=6 heapalloc_value=25081480 +HeapAlloc dt=46 heapalloc_value=25089672 +HeapAlloc dt=7 heapalloc_value=25097864 +HeapAlloc dt=6 heapalloc_value=25106056 +HeapAlloc dt=5 heapalloc_value=25114248 +HeapAlloc dt=36 heapalloc_value=25122440 +HeapAlloc dt=7 heapalloc_value=25130632 +HeapAlloc dt=6 heapalloc_value=25138824 +HeapAlloc dt=6 heapalloc_value=25147016 +HeapAlloc dt=5 heapalloc_value=25155208 +HeapAlloc dt=6 heapalloc_value=25163400 +HeapAlloc dt=5 heapalloc_value=25171592 +HeapAlloc dt=6 heapalloc_value=25179784 +HeapAlloc dt=5 heapalloc_value=25187976 +HeapAlloc dt=6 heapalloc_value=25196168 +HeapAlloc dt=5 heapalloc_value=25204360 +HeapAlloc dt=6 heapalloc_value=25212552 +HeapAlloc dt=5 heapalloc_value=25220744 +HeapAlloc dt=6 heapalloc_value=25228936 +HeapAlloc dt=10 heapalloc_value=25237128 +HeapAlloc dt=5 heapalloc_value=25245320 +HeapAlloc dt=6 heapalloc_value=25253512 +HeapAlloc dt=5 heapalloc_value=25261704 +HeapAlloc dt=6 heapalloc_value=25269896 +HeapAlloc dt=6 heapalloc_value=25278088 +HeapAlloc dt=5 heapalloc_value=25286280 +HeapAlloc dt=6 heapalloc_value=25294472 +GoBlock dt=10 reason_string=19 stack=21 +ProcStop dt=14 +ProcStart dt=7152 p=1 p_seq=29 +GoStart dt=199 g=37 g_seq=1 +GoStop dt=306782 reason_string=16 stack=50 +GoStart dt=57 g=37 g_seq=2 +GoStop dt=315218 reason_string=16 stack=50 +GoStart dt=17 g=37 g_seq=3 +GoDestroy dt=159214 +ProcStop dt=60 +EventBatch gen=1 m=1709041 time=7689670150297 size=5255 +ProcStart dt=316 p=3 p_seq=1 +ProcStop dt=37 +ProcStart dt=311299 p=1 p_seq=5 +ProcStop dt=17 +ProcStart dt=16759 p=1 p_seq=6 +GoUnblock dt=47 g=1 g_seq=3 stack=0 +GoStart dt=137 g=1 g_seq=4 +HeapAlloc dt=56 heapalloc_value=2809856 +HeapAlloc dt=29 heapalloc_value=2818048 +HeapAlloc dt=19 heapalloc_value=2826240 +HeapAlloc dt=22 heapalloc_value=2834432 +HeapAlloc dt=91 heapalloc_value=2842624 +HeapAlloc dt=21 heapalloc_value=2850816 +HeapAlloc dt=24 heapalloc_value=2859008 +HeapAlloc dt=7 heapalloc_value=2867200 +HeapAlloc dt=15 heapalloc_value=2875392 +HeapAlloc dt=16 heapalloc_value=2883584 +HeapAlloc dt=12 heapalloc_value=2899968 +HeapAlloc dt=9 heapalloc_value=2908160 +HeapAlloc dt=16 heapalloc_value=2916352 +HeapAlloc dt=15 heapalloc_value=2924544 +HeapAlloc dt=12 heapalloc_value=2932736 +HeapAlloc dt=12 heapalloc_value=2940928 +HeapAlloc dt=7 heapalloc_value=2949120 +HeapAlloc dt=18 heapalloc_value=2957312 +HeapAlloc dt=14 heapalloc_value=2965504 +HeapAlloc dt=12 heapalloc_value=2973696 +HeapAlloc dt=13 heapalloc_value=2981888 +HeapAlloc dt=12 heapalloc_value=2990080 +HeapAlloc dt=11 heapalloc_value=2998272 +HeapAlloc dt=12 heapalloc_value=3006464 +HeapAlloc dt=13 heapalloc_value=3014656 +HeapAlloc dt=12 heapalloc_value=3022848 +HeapAlloc dt=11 heapalloc_value=3031040 +HeapAlloc dt=11 heapalloc_value=3039232 +HeapAlloc dt=13 heapalloc_value=3047424 +HeapAlloc dt=11 heapalloc_value=3055616 +HeapAlloc dt=20 heapalloc_value=3063808 +HeapAlloc dt=12 heapalloc_value=3072000 +HeapAlloc dt=12 heapalloc_value=3080192 +HeapAlloc dt=11 heapalloc_value=3088384 +HeapAlloc dt=12 heapalloc_value=3096576 +HeapAlloc dt=11 heapalloc_value=3104768 +HeapAlloc dt=11 heapalloc_value=3112960 +HeapAlloc dt=12 heapalloc_value=3121152 +HeapAlloc dt=11 heapalloc_value=3129344 +HeapAlloc dt=15 heapalloc_value=3137536 +HeapAlloc dt=15 heapalloc_value=3145728 +HeapAlloc dt=18 heapalloc_value=3153920 +HeapAlloc dt=13 heapalloc_value=3162112 +HeapAlloc dt=12 heapalloc_value=3170304 +HeapAlloc dt=16 heapalloc_value=3178496 +HeapAlloc dt=11 heapalloc_value=3186688 +HeapAlloc dt=12 heapalloc_value=3194880 +HeapAlloc dt=11 heapalloc_value=3203072 +HeapAlloc dt=13 heapalloc_value=3211264 +HeapAlloc dt=12 heapalloc_value=3219456 +HeapAlloc dt=11 heapalloc_value=3227648 +HeapAlloc dt=13 heapalloc_value=3244032 +HeapAlloc dt=734 heapalloc_value=3252224 +HeapAlloc dt=16 heapalloc_value=3260416 +HeapAlloc dt=8 heapalloc_value=3268608 +HeapAlloc dt=5 heapalloc_value=3276800 +HeapAlloc dt=8 heapalloc_value=3284992 +HeapAlloc dt=88 heapalloc_value=3293184 HeapAlloc dt=7 heapalloc_value=3301376 -HeapAlloc dt=6 heapalloc_value=3309568 -HeapAlloc dt=7 heapalloc_value=3317760 -HeapAlloc dt=6 heapalloc_value=3325952 -HeapAlloc dt=6 heapalloc_value=3334144 -HeapAlloc dt=7 heapalloc_value=3342336 -HeapAlloc dt=6 heapalloc_value=3350528 -HeapAlloc dt=7 heapalloc_value=3358720 -HeapAlloc dt=6 heapalloc_value=3366912 -HeapAlloc dt=44 heapalloc_value=3375104 -HeapAlloc dt=8 heapalloc_value=3383296 +HeapAlloc dt=5 heapalloc_value=3309568 +HeapAlloc dt=6 heapalloc_value=3317760 +HeapAlloc dt=5 heapalloc_value=3325952 +HeapAlloc dt=5 heapalloc_value=3334144 +HeapAlloc dt=5 heapalloc_value=3342336 +HeapAlloc dt=5 heapalloc_value=3350528 +HeapAlloc dt=6 heapalloc_value=3358720 +HeapAlloc dt=5 heapalloc_value=3366912 +HeapAlloc dt=5 heapalloc_value=3375104 +HeapAlloc dt=7 heapalloc_value=3383296 HeapAlloc dt=6 heapalloc_value=3391488 -HeapAlloc dt=7 heapalloc_value=3399680 -HeapAlloc dt=6 heapalloc_value=3407872 -HeapAlloc dt=7 heapalloc_value=3416064 -HeapAlloc dt=7 heapalloc_value=3424256 -HeapAlloc dt=6 heapalloc_value=3432448 -HeapAlloc dt=6 heapalloc_value=3440640 -HeapAlloc dt=7 heapalloc_value=3448832 +HeapAlloc dt=5 heapalloc_value=3399680 +HeapAlloc dt=5 heapalloc_value=3407872 +HeapAlloc dt=5 heapalloc_value=3416064 +HeapAlloc dt=6 heapalloc_value=3424256 +HeapAlloc dt=5 heapalloc_value=3432448 +HeapAlloc dt=5 heapalloc_value=3440640 +HeapAlloc dt=5 heapalloc_value=3448832 HeapAlloc dt=6 heapalloc_value=3457024 -HeapAlloc dt=7 heapalloc_value=3465216 -HeapAlloc dt=6 heapalloc_value=3473408 +HeapAlloc dt=5 heapalloc_value=3465216 +HeapAlloc dt=38 heapalloc_value=3473408 HeapAlloc dt=6 heapalloc_value=3481600 -HeapAlloc dt=7 heapalloc_value=3489792 -HeapAlloc dt=73 heapalloc_value=3497984 -HeapAlloc dt=8 heapalloc_value=3506176 -HeapAlloc dt=7 heapalloc_value=3514368 -HeapAlloc dt=6 heapalloc_value=3522560 -HeapAlloc dt=6 heapalloc_value=3530752 -HeapAlloc dt=7 heapalloc_value=3538944 -HeapAlloc dt=7 heapalloc_value=3547136 +HeapAlloc dt=5 heapalloc_value=3489792 +HeapAlloc dt=6 heapalloc_value=3497984 +HeapAlloc dt=5 heapalloc_value=3506176 +HeapAlloc dt=6 heapalloc_value=3514368 +HeapAlloc dt=5 heapalloc_value=3522560 +HeapAlloc dt=5 heapalloc_value=3530752 +HeapAlloc dt=5 heapalloc_value=3538944 +HeapAlloc dt=5 heapalloc_value=3547136 HeapAlloc dt=6 heapalloc_value=3555328 -HeapAlloc dt=7 heapalloc_value=3563520 -HeapAlloc dt=6 heapalloc_value=3571712 -HeapAlloc dt=6 heapalloc_value=3579904 -HeapAlloc dt=47 heapalloc_value=3588096 -HeapAlloc dt=7 heapalloc_value=3596288 -HeapAlloc dt=6 heapalloc_value=3604480 -HeapAlloc dt=7 heapalloc_value=3612672 -HeapAlloc dt=6 heapalloc_value=3620864 -HeapAlloc dt=7 heapalloc_value=3629056 -HeapAlloc dt=6 heapalloc_value=3637248 -HeapAlloc dt=7 heapalloc_value=3645440 -HeapAlloc dt=6 heapalloc_value=3653632 -HeapAlloc dt=6 heapalloc_value=3661824 -HeapAlloc dt=7 heapalloc_value=3670016 -HeapAlloc dt=6 heapalloc_value=3678208 -HeapAlloc dt=6 heapalloc_value=3686400 -HeapAlloc dt=7 heapalloc_value=3694592 +HeapAlloc dt=5 heapalloc_value=3563520 +HeapAlloc dt=5 heapalloc_value=3571712 +HeapAlloc dt=5 heapalloc_value=3579904 +HeapAlloc dt=5 heapalloc_value=3588096 +HeapAlloc dt=6 heapalloc_value=3596288 +HeapAlloc dt=10 heapalloc_value=3678208 +HeapAlloc dt=2433 heapalloc_value=3686400 +HeapAlloc dt=6 heapalloc_value=3694592 HeapAlloc dt=6 heapalloc_value=3702784 -HeapAlloc dt=7 heapalloc_value=3710976 -HeapAlloc dt=6 heapalloc_value=3719168 +HeapAlloc dt=6 heapalloc_value=3710976 +HeapAlloc dt=5 heapalloc_value=3719168 HeapAlloc dt=6 heapalloc_value=3727360 -HeapAlloc dt=7 heapalloc_value=3735552 -HeapAlloc dt=6 heapalloc_value=3743744 -HeapAlloc dt=9 heapalloc_value=3751936 -HeapAlloc dt=72 heapalloc_value=3760128 -HeapAlloc dt=8 heapalloc_value=3768320 -HeapAlloc dt=7 heapalloc_value=3776512 -HeapAlloc dt=6 heapalloc_value=3784704 +HeapAlloc dt=5 heapalloc_value=3735552 +HeapAlloc dt=5 heapalloc_value=3743744 +HeapAlloc dt=5 heapalloc_value=3751936 +HeapAlloc dt=6 heapalloc_value=3760128 +HeapAlloc dt=5 heapalloc_value=3768320 +HeapAlloc dt=11 heapalloc_value=3776512 +HeapAlloc dt=31 heapalloc_value=3784704 HeapAlloc dt=7 heapalloc_value=3792896 -HeapAlloc dt=8 heapalloc_value=3801088 -HeapAlloc dt=64 heapalloc_value=3809280 -HeapAlloc dt=8 heapalloc_value=3817472 -HeapAlloc dt=6 heapalloc_value=3825664 -HeapAlloc dt=7 heapalloc_value=3833856 +HeapAlloc dt=6 heapalloc_value=3801088 +HeapAlloc dt=5 heapalloc_value=3809280 +HeapAlloc dt=6 heapalloc_value=3817472 +HeapAlloc dt=5 heapalloc_value=3825664 +HeapAlloc dt=5 heapalloc_value=3833856 HeapAlloc dt=6 heapalloc_value=3842048 -HeapAlloc dt=7 heapalloc_value=3850240 -HeapAlloc dt=6 heapalloc_value=3858432 +HeapAlloc dt=5 heapalloc_value=3850240 +HeapAlloc dt=5 heapalloc_value=3858432 HeapAlloc dt=6 heapalloc_value=3866624 -HeapAlloc dt=7 heapalloc_value=3874816 -HeapAlloc dt=7 heapalloc_value=3883008 -HeapAlloc dt=6 heapalloc_value=3891200 +HeapAlloc dt=5 heapalloc_value=3874816 +HeapAlloc dt=5 heapalloc_value=3883008 +HeapAlloc dt=78 heapalloc_value=3891200 HeapAlloc dt=7 heapalloc_value=3899392 HeapAlloc dt=6 heapalloc_value=3907584 -GoBlock dt=19 reason_string=19 stack=21 -ProcStop dt=232 -ProcStart dt=17560 p=1 p_seq=3 +HeapAlloc dt=5 heapalloc_value=3915776 +HeapAlloc dt=5 heapalloc_value=3923968 +HeapAlloc dt=5 heapalloc_value=3932160 +HeapAlloc dt=6 heapalloc_value=3940352 +HeapAlloc dt=5 heapalloc_value=3948544 +HeapAlloc dt=5 heapalloc_value=3956736 +HeapAlloc dt=5 heapalloc_value=3964928 +HeapAlloc dt=5 heapalloc_value=3973120 +HeapAlloc dt=6 heapalloc_value=3981312 +HeapAlloc dt=5 heapalloc_value=3989504 +HeapAlloc dt=6 heapalloc_value=3997696 +GCBegin dt=38 gc_seq=1 stack=22 +HeapAlloc dt=42 heapalloc_value=4005888 +HeapAlloc dt=14 heapalloc_value=4014080 +GoCreate dt=73 new_g=18 new_stack=23 stack=24 +GoBlock dt=235 reason_string=12 stack=25 +GoStart dt=11 g=18 g_seq=1 +HeapAlloc dt=16 heapalloc_value=4022272 +GoUnblock dt=15 g=1 g_seq=5 stack=26 +GoBlock dt=9 reason_string=15 stack=27 +GoStart dt=12 g=1 g_seq=6 +GoCreate dt=44 new_g=19 new_stack=23 stack=24 +GoBlock dt=4 reason_string=12 stack=25 +GoStart dt=3 g=19 g_seq=1 +GoUnblock dt=5 g=1 g_seq=7 stack=26 +GoBlock dt=2 reason_string=15 stack=27 +GoStart dt=2 g=1 g_seq=8 +GoCreate dt=8 new_g=20 new_stack=23 stack=24 +GoBlock dt=3 reason_string=12 stack=25 +GoStart dt=2 g=20 g_seq=1 +GoUnblock dt=3 g=1 g_seq=9 stack=26 +GoBlock dt=1 reason_string=15 stack=27 +GoStart dt=2 g=1 g_seq=10 +GoCreate dt=6 new_g=21 new_stack=23 stack=24 +GoBlock dt=3 reason_string=12 stack=25 +GoStart dt=1 g=21 g_seq=1 +GoUnblock dt=6 g=1 g_seq=11 stack=26 +GoBlock dt=1 reason_string=15 stack=27 +GoStart dt=8 g=1 g_seq=12 +GoCreate dt=7 new_g=22 new_stack=23 stack=24 +GoBlock dt=2 reason_string=12 stack=25 +GoStart dt=2 g=22 g_seq=1 +GoUnblock dt=2 g=1 g_seq=13 stack=26 +GoBlock dt=6 reason_string=15 stack=27 +GoStart dt=4 g=1 g_seq=14 +GoCreate dt=15 new_g=23 new_stack=23 stack=24 +GoBlock dt=166 reason_string=12 stack=25 +GoStart dt=4 g=23 g_seq=1 +GoUnblock dt=3 g=1 g_seq=15 stack=26 +GoBlock dt=3 reason_string=15 stack=27 +GoStart dt=3 g=1 g_seq=16 +HeapAlloc dt=18 heapalloc_value=4030464 +GoCreate dt=11 new_g=24 new_stack=23 stack=24 +GoBlock dt=3 reason_string=12 stack=25 +GoStart dt=1 g=24 g_seq=1 +GoUnblock dt=3 g=1 g_seq=17 stack=26 +GoBlock dt=2 reason_string=15 stack=27 +GoStart dt=1 g=1 g_seq=18 +GoCreate dt=6 new_g=25 new_stack=23 stack=24 +GoBlock dt=3 reason_string=12 stack=25 +GoStart dt=1 g=25 g_seq=1 +GoUnblock dt=2 g=1 g_seq=19 stack=26 +GoBlock dt=2 reason_string=15 stack=27 +GoStart dt=1 g=1 g_seq=20 +STWBegin dt=118 kind_string=22 stack=28 +GoStatus dt=1398 g=4 m=18446744073709551615 gstatus=4 +GoUnblock dt=83 g=4 g_seq=1 stack=29 +ProcsChange dt=91 procs_value=8 stack=30 +STWEnd dt=31 +GCMarkAssistBegin dt=149 stack=31 +GCMarkAssistEnd dt=1458 +GoBlock dt=23 reason_string=19 stack=21 +GoStart dt=166 g=4 g_seq=2 +GoBlock dt=22 reason_string=15 stack=32 +GoUnblock dt=35 g=23 g_seq=2 stack=0 +GoStart dt=4 g=23 g_seq=3 +GoLabel dt=1 label_string=4 +GoBlock dt=441 reason_string=15 stack=27 ProcStop dt=23 -ProcStart dt=25946 p=0 p_seq=28 +ProcStart dt=16781 p=0 p_seq=6 +GoUnblock dt=28 g=1 g_seq=27 stack=0 +GoStart dt=162 g=1 g_seq=28 +HeapAlloc dt=69 heapalloc_value=4663024 +HeapAlloc dt=23 heapalloc_value=4671216 +HeapAlloc dt=15 heapalloc_value=4679408 +HeapAlloc dt=10 heapalloc_value=4687600 +HeapAlloc dt=12 heapalloc_value=4695792 +HeapAlloc dt=8 heapalloc_value=4703984 +HeapAlloc dt=6 heapalloc_value=4712176 +HeapAlloc dt=12 heapalloc_value=4720368 +HeapAlloc dt=12 heapalloc_value=4728560 +HeapAlloc dt=12 heapalloc_value=4736752 +HeapAlloc dt=15 heapalloc_value=4744944 +HeapAlloc dt=9 heapalloc_value=4753136 +HeapAlloc dt=9 heapalloc_value=4761328 +HeapAlloc dt=7 heapalloc_value=4769520 +HeapAlloc dt=8 heapalloc_value=4777712 +HeapAlloc dt=9 heapalloc_value=4785904 +HeapAlloc dt=112 heapalloc_value=4794096 +HeapAlloc dt=7 heapalloc_value=4802288 +HeapAlloc dt=9 heapalloc_value=4810480 +HeapAlloc dt=13 heapalloc_value=4818672 +HeapAlloc dt=14 heapalloc_value=4826864 +HeapAlloc dt=6 heapalloc_value=4835056 +HeapAlloc dt=5 heapalloc_value=4843248 +HeapAlloc dt=6 heapalloc_value=4851440 +HeapAlloc dt=14 heapalloc_value=4859632 +HeapAlloc dt=10 heapalloc_value=4867824 +HeapAlloc dt=10 heapalloc_value=4876016 +HeapAlloc dt=6 heapalloc_value=4884208 +HeapAlloc dt=9 heapalloc_value=4892400 +HeapAlloc dt=72 heapalloc_value=4900592 +HeapAlloc dt=6 heapalloc_value=4908784 +HeapAlloc dt=5 heapalloc_value=4916976 +HeapAlloc dt=6 heapalloc_value=4925168 +HeapAlloc dt=6 heapalloc_value=4933360 +HeapAlloc dt=9 heapalloc_value=4941552 +HeapAlloc dt=46 heapalloc_value=4949744 +HeapAlloc dt=10 heapalloc_value=4957936 +HeapAlloc dt=6 heapalloc_value=4966128 +HeapAlloc dt=6 heapalloc_value=4974320 +HeapAlloc dt=6 heapalloc_value=4982512 +HeapAlloc dt=5 heapalloc_value=4990704 +HeapAlloc dt=6 heapalloc_value=4998896 +HeapAlloc dt=45 heapalloc_value=5007088 +HeapAlloc dt=6 heapalloc_value=5015280 +HeapAlloc dt=9 heapalloc_value=5023472 +HeapAlloc dt=6 heapalloc_value=5031664 +HeapAlloc dt=5 heapalloc_value=5039856 +HeapAlloc dt=6 heapalloc_value=5048048 +HeapAlloc dt=6 heapalloc_value=5056240 +HeapAlloc dt=15 heapalloc_value=5138160 +HeapAlloc dt=81 heapalloc_value=5146352 +HeapAlloc dt=6 heapalloc_value=5154544 +HeapAlloc dt=6 heapalloc_value=5162736 +HeapAlloc dt=5 heapalloc_value=5170928 +HeapAlloc dt=6 heapalloc_value=5179120 +HeapAlloc dt=5 heapalloc_value=5187312 +HeapAlloc dt=6 heapalloc_value=5195504 +HeapAlloc dt=7 heapalloc_value=5203696 +HeapAlloc dt=5 heapalloc_value=5211888 +HeapAlloc dt=6 heapalloc_value=5220080 +HeapAlloc dt=6 heapalloc_value=5228272 +HeapAlloc dt=37 heapalloc_value=5236464 +HeapAlloc dt=7 heapalloc_value=5244656 +HeapAlloc dt=6 heapalloc_value=5252848 +HeapAlloc dt=5 heapalloc_value=5261040 +HeapAlloc dt=8 heapalloc_value=5269232 +HeapAlloc dt=6 heapalloc_value=5277424 +HeapAlloc dt=6 heapalloc_value=5285616 +HeapAlloc dt=5 heapalloc_value=5293808 +HeapAlloc dt=7 heapalloc_value=5302000 +HeapAlloc dt=5 heapalloc_value=5310192 +HeapAlloc dt=5 heapalloc_value=5318384 +HeapAlloc dt=6 heapalloc_value=5326576 +HeapAlloc dt=7 heapalloc_value=5334768 +HeapAlloc dt=6 heapalloc_value=5342960 +HeapAlloc dt=5 heapalloc_value=5351152 +HeapAlloc dt=6 heapalloc_value=5359344 +HeapAlloc dt=5 heapalloc_value=5367536 +HeapAlloc dt=13 heapalloc_value=5375728 +HeapAlloc dt=6 heapalloc_value=5383920 +HeapAlloc dt=100 heapalloc_value=5392112 +HeapAlloc dt=8 heapalloc_value=5400304 +HeapAlloc dt=6 heapalloc_value=5408496 +HeapAlloc dt=6 heapalloc_value=5416688 +HeapAlloc dt=5 heapalloc_value=5424880 +HeapAlloc dt=6 heapalloc_value=5433072 +HeapAlloc dt=33 heapalloc_value=5441264 +HeapAlloc dt=7 heapalloc_value=5449456 +HeapAlloc dt=5 heapalloc_value=5457648 +HeapAlloc dt=8 heapalloc_value=5465840 +HeapAlloc dt=6 heapalloc_value=5474032 +HeapAlloc dt=5 heapalloc_value=5482224 +HeapAlloc dt=6 heapalloc_value=5490416 +HeapAlloc dt=5 heapalloc_value=5498608 +HeapAlloc dt=6 heapalloc_value=5506800 +HeapAlloc dt=6 heapalloc_value=5514992 +HeapAlloc dt=5 heapalloc_value=5523184 +HeapAlloc dt=12 heapalloc_value=5531376 +HeapAlloc dt=6 heapalloc_value=5539568 +HeapAlloc dt=6 heapalloc_value=5547760 +HeapAlloc dt=5 heapalloc_value=5555952 +HeapAlloc dt=6 heapalloc_value=5564144 +HeapAlloc dt=5 heapalloc_value=5572336 +HeapAlloc dt=6 heapalloc_value=5580528 +HeapAlloc dt=5 heapalloc_value=5588720 +HeapAlloc dt=7 heapalloc_value=5596912 +HeapAlloc dt=6 heapalloc_value=5605104 +HeapAlloc dt=5 heapalloc_value=5613296 +HeapAlloc dt=6 heapalloc_value=5621488 +HeapAlloc dt=5 heapalloc_value=5629680 +HeapAlloc dt=6 heapalloc_value=5637872 +HeapAlloc dt=6 heapalloc_value=5646064 +HeapAlloc dt=37 heapalloc_value=5654256 +HeapAlloc dt=7 heapalloc_value=5662448 +HeapAlloc dt=6 heapalloc_value=5670640 +HeapAlloc dt=5 heapalloc_value=5678832 +HeapAlloc dt=6 heapalloc_value=5687024 +HeapAlloc dt=5 heapalloc_value=5695216 +HeapAlloc dt=6 heapalloc_value=5703408 +HeapAlloc dt=6 heapalloc_value=5711600 +HeapAlloc dt=5 heapalloc_value=5719792 +HeapAlloc dt=5 heapalloc_value=5727984 +HeapAlloc dt=6 heapalloc_value=5736176 +HeapAlloc dt=6 heapalloc_value=5744368 +HeapAlloc dt=5 heapalloc_value=5752560 +HeapAlloc dt=5 heapalloc_value=5760752 +GoBlock dt=15 reason_string=19 stack=21 +ProcStop dt=178 +ProcStart dt=17613 p=4 p_seq=3 +ProcStop dt=26 +ProcStart dt=3944 p=0 p_seq=9 +ProcStop dt=12 +ProcStart dt=16762 p=4 p_seq=6 ProcStop dt=14 -ProcStart dt=16839 p=0 p_seq=29 -GoUnblock dt=21 g=1 g_seq=20 stack=0 -GoStart dt=209 g=1 g_seq=21 -HeapAlloc dt=60 heapalloc_value=4452592 -HeapAlloc dt=28 heapalloc_value=4460784 -HeapAlloc dt=29 heapalloc_value=4468976 -HeapAlloc dt=17 heapalloc_value=4477168 -HeapAlloc dt=19 heapalloc_value=4485360 -HeapAlloc dt=26 heapalloc_value=4493552 -HeapAlloc dt=17 heapalloc_value=4501744 -HeapAlloc dt=21 heapalloc_value=4509936 -HeapAlloc dt=22 heapalloc_value=4518128 -HeapAlloc dt=22 heapalloc_value=4526320 -HeapAlloc dt=36 heapalloc_value=4624624 -HeapAlloc dt=174 heapalloc_value=4632816 -HeapAlloc dt=22 heapalloc_value=4641008 -HeapAlloc dt=23 heapalloc_value=4649200 -HeapAlloc dt=144 heapalloc_value=4657392 -HeapAlloc dt=18 heapalloc_value=4665584 -HeapAlloc dt=19 heapalloc_value=4673776 -HeapAlloc dt=59 heapalloc_value=4681968 -HeapAlloc dt=15 heapalloc_value=4690160 -HeapAlloc dt=10 heapalloc_value=4698352 -HeapAlloc dt=20 heapalloc_value=4706544 -HeapAlloc dt=37 heapalloc_value=4714736 -HeapAlloc dt=33 heapalloc_value=4722928 -HeapAlloc dt=32 heapalloc_value=4731120 -HeapAlloc dt=30 heapalloc_value=4739312 -HeapAlloc dt=33 heapalloc_value=4747504 -HeapAlloc dt=28 heapalloc_value=4755696 -HeapAlloc dt=10 heapalloc_value=4763888 -HeapAlloc dt=9 heapalloc_value=4772080 -HeapAlloc dt=10 heapalloc_value=4780272 -HeapAlloc dt=10 heapalloc_value=4788464 -HeapAlloc dt=12 heapalloc_value=4796656 -HeapAlloc dt=11 heapalloc_value=4804848 -HeapAlloc dt=9 heapalloc_value=4813040 -HeapAlloc dt=9 heapalloc_value=4821232 -HeapAlloc dt=9 heapalloc_value=4829424 -HeapAlloc dt=9 heapalloc_value=4837616 -HeapAlloc dt=10 heapalloc_value=4845808 -HeapAlloc dt=10 heapalloc_value=4854000 -HeapAlloc dt=105 heapalloc_value=4862192 -HeapAlloc dt=13 heapalloc_value=4870384 -HeapAlloc dt=10 heapalloc_value=4878576 -HeapAlloc dt=9 heapalloc_value=4886768 -HeapAlloc dt=59 heapalloc_value=4894960 -HeapAlloc dt=11 heapalloc_value=4903152 -HeapAlloc dt=10 heapalloc_value=4911344 -HeapAlloc dt=9 heapalloc_value=4919536 -HeapAlloc dt=11 heapalloc_value=4927728 -HeapAlloc dt=12 heapalloc_value=4935920 -HeapAlloc dt=10 heapalloc_value=4944112 -HeapAlloc dt=9 heapalloc_value=4952304 -HeapAlloc dt=10 heapalloc_value=4960496 -HeapAlloc dt=9 heapalloc_value=4968688 -HeapAlloc dt=10 heapalloc_value=4976880 -HeapAlloc dt=9 heapalloc_value=4985072 -HeapAlloc dt=12 heapalloc_value=4993264 -HeapAlloc dt=9 heapalloc_value=5001456 -HeapAlloc dt=9 heapalloc_value=5009648 -HeapAlloc dt=10 heapalloc_value=5017840 -HeapAlloc dt=9 heapalloc_value=5026032 -HeapAlloc dt=10 heapalloc_value=5034224 -HeapAlloc dt=9 heapalloc_value=5042416 -HeapAlloc dt=10 heapalloc_value=5050608 -HeapAlloc dt=11 heapalloc_value=5058800 -HeapAlloc dt=10 heapalloc_value=5066992 -HeapAlloc dt=14 heapalloc_value=5075184 -HeapAlloc dt=9 heapalloc_value=5083376 -HeapAlloc dt=10 heapalloc_value=5091568 -HeapAlloc dt=9 heapalloc_value=5099760 -HeapAlloc dt=10 heapalloc_value=5107952 -HeapAlloc dt=10 heapalloc_value=5116144 -HeapAlloc dt=21 heapalloc_value=5124336 -HeapAlloc dt=11 heapalloc_value=5132528 -HeapAlloc dt=8 heapalloc_value=5140720 -HeapAlloc dt=7 heapalloc_value=5148912 -HeapAlloc dt=8 heapalloc_value=5157104 -HeapAlloc dt=9 heapalloc_value=5165296 -HeapAlloc dt=10 heapalloc_value=5173488 -HeapAlloc dt=78 heapalloc_value=5181680 -HeapAlloc dt=11 heapalloc_value=5189872 -HeapAlloc dt=7 heapalloc_value=5198064 -HeapAlloc dt=8 heapalloc_value=5206256 -HeapAlloc dt=8 heapalloc_value=5214448 -HeapAlloc dt=7 heapalloc_value=5222640 -HeapAlloc dt=10 heapalloc_value=5230832 -HeapAlloc dt=7 heapalloc_value=5239024 -HeapAlloc dt=8 heapalloc_value=5247216 -HeapAlloc dt=7 heapalloc_value=5255408 -HeapAlloc dt=8 heapalloc_value=5263600 -HeapAlloc dt=7 heapalloc_value=5271792 -HeapAlloc dt=8 heapalloc_value=5279984 -HeapAlloc dt=8 heapalloc_value=5288176 -HeapAlloc dt=96 heapalloc_value=5296368 -HeapAlloc dt=11 heapalloc_value=5304560 -HeapAlloc dt=53 heapalloc_value=5312752 -HeapAlloc dt=9 heapalloc_value=5320944 -HeapAlloc dt=8 heapalloc_value=5329136 -HeapAlloc dt=8 heapalloc_value=5337328 -HeapAlloc dt=7 heapalloc_value=5345520 -HeapAlloc dt=8 heapalloc_value=5353712 -HeapAlloc dt=9 heapalloc_value=5361904 -HeapAlloc dt=8 heapalloc_value=5370096 -HeapAlloc dt=7 heapalloc_value=5378288 -HeapAlloc dt=8 heapalloc_value=5386480 -HeapAlloc dt=7 heapalloc_value=5394672 -HeapAlloc dt=7 heapalloc_value=5402864 -HeapAlloc dt=8 heapalloc_value=5411056 -HeapAlloc dt=8 heapalloc_value=5419248 -HeapAlloc dt=9 heapalloc_value=5427440 -HeapAlloc dt=7 heapalloc_value=5435632 -HeapAlloc dt=8 heapalloc_value=5443824 -HeapAlloc dt=7 heapalloc_value=5452016 -HeapAlloc dt=8 heapalloc_value=5460208 -HeapAlloc dt=7 heapalloc_value=5468400 -HeapAlloc dt=8 heapalloc_value=5476592 -HeapAlloc dt=7 heapalloc_value=5484784 -HeapAlloc dt=10 heapalloc_value=5492976 -HeapAlloc dt=8 heapalloc_value=5501168 -HeapAlloc dt=7 heapalloc_value=5509360 -HeapAlloc dt=8 heapalloc_value=5517552 -HeapAlloc dt=7 heapalloc_value=5525744 -HeapAlloc dt=8 heapalloc_value=5533936 -HeapAlloc dt=8 heapalloc_value=5542128 -HeapAlloc dt=8 heapalloc_value=5550320 -HeapAlloc dt=84 heapalloc_value=5558512 -HeapAlloc dt=10 heapalloc_value=5566704 -GoBlock dt=17 reason_string=19 stack=21 -ProcStop dt=237 -ProcStart dt=17614 p=1 p_seq=17 -ProcStop dt=23 -ProcStart dt=4599 p=0 p_seq=32 -ProcStop dt=14 -ProcStart dt=16769 p=0 p_seq=33 -GoUnblock dt=22 g=1 g_seq=24 stack=0 -GoStart dt=189 g=1 g_seq=25 -HeapAlloc dt=55 heapalloc_value=6729968 -HeapAlloc dt=24 heapalloc_value=6738160 -HeapAlloc dt=12 heapalloc_value=6746352 -HeapAlloc dt=9 heapalloc_value=6754544 -HeapAlloc dt=10 heapalloc_value=6762736 -HeapAlloc dt=11 heapalloc_value=6770928 -HeapAlloc dt=8 heapalloc_value=6779120 -HeapAlloc dt=12 heapalloc_value=6787312 -HeapAlloc dt=8 heapalloc_value=6795504 -HeapAlloc dt=7 heapalloc_value=6803696 -HeapAlloc dt=9 heapalloc_value=6811888 -HeapAlloc dt=6 heapalloc_value=6820080 -HeapAlloc dt=6 heapalloc_value=6828272 -HeapAlloc dt=6 heapalloc_value=6836464 -HeapAlloc dt=6 heapalloc_value=6844656 -HeapAlloc dt=6 heapalloc_value=6852848 -HeapAlloc dt=6 heapalloc_value=6861040 -HeapAlloc dt=595 heapalloc_value=6869232 -HeapAlloc dt=89 heapalloc_value=6877424 -HeapAlloc dt=8 heapalloc_value=6885616 -HeapAlloc dt=7 heapalloc_value=6893808 -HeapAlloc dt=8 heapalloc_value=6902000 -HeapAlloc dt=43 heapalloc_value=6910192 -HeapAlloc dt=7 heapalloc_value=6918384 -HeapAlloc dt=6 heapalloc_value=6926576 -HeapAlloc dt=7 heapalloc_value=6934768 -HeapAlloc dt=6 heapalloc_value=6942960 -HeapAlloc dt=6 heapalloc_value=6951152 -HeapAlloc dt=6 heapalloc_value=6959344 -HeapAlloc dt=6 heapalloc_value=6967536 -HeapAlloc dt=6 heapalloc_value=6975728 -HeapAlloc dt=5 heapalloc_value=6983920 -HeapAlloc dt=6 heapalloc_value=6992112 -HeapAlloc dt=6 heapalloc_value=7000304 -HeapAlloc dt=6 heapalloc_value=7008496 -HeapAlloc dt=6 heapalloc_value=7016688 -HeapAlloc dt=6 heapalloc_value=7024880 -HeapAlloc dt=8 heapalloc_value=7033072 -HeapAlloc dt=5 heapalloc_value=7041264 -HeapAlloc dt=6 heapalloc_value=7049456 -HeapAlloc dt=6 heapalloc_value=7057648 -HeapAlloc dt=6 heapalloc_value=7065840 -HeapAlloc dt=5 heapalloc_value=7074032 -HeapAlloc dt=6 heapalloc_value=7082224 -HeapAlloc dt=6 heapalloc_value=7090416 -HeapAlloc dt=6 heapalloc_value=7098608 -HeapAlloc dt=5 heapalloc_value=7106800 -HeapAlloc dt=43 heapalloc_value=7114992 -HeapAlloc dt=7 heapalloc_value=7123184 -HeapAlloc dt=74 heapalloc_value=7131376 -HeapAlloc dt=8 heapalloc_value=7139568 -HeapAlloc dt=6 heapalloc_value=7147760 -HeapAlloc dt=6 heapalloc_value=7155952 -HeapAlloc dt=5 heapalloc_value=7164144 -HeapAlloc dt=6 heapalloc_value=7172336 -HeapAlloc dt=6 heapalloc_value=7180528 -HeapAlloc dt=6 heapalloc_value=7188720 -HeapAlloc dt=6 heapalloc_value=7196912 -HeapAlloc dt=379 heapalloc_value=7368944 -HeapAlloc dt=4398 heapalloc_value=7377136 -HeapAlloc dt=19 heapalloc_value=7385328 -HeapAlloc dt=14 heapalloc_value=7393520 -HeapAlloc dt=16 heapalloc_value=7401712 -HeapAlloc dt=12 heapalloc_value=7409904 -HeapAlloc dt=11 heapalloc_value=7418096 -HeapAlloc dt=13 heapalloc_value=7426288 -HeapAlloc dt=12 heapalloc_value=7434480 -HeapAlloc dt=12 heapalloc_value=7442672 -HeapAlloc dt=11 heapalloc_value=7450864 -HeapAlloc dt=12 heapalloc_value=7459056 -HeapAlloc dt=13 heapalloc_value=7467248 -HeapAlloc dt=13 heapalloc_value=7475440 -HeapAlloc dt=12 heapalloc_value=7483632 -HeapAlloc dt=13 heapalloc_value=7491824 -HeapAlloc dt=12 heapalloc_value=7500016 -HeapAlloc dt=12 heapalloc_value=7508208 -HeapAlloc dt=11 heapalloc_value=7516400 -HeapAlloc dt=12 heapalloc_value=7524592 -HeapAlloc dt=14 heapalloc_value=7532784 -HeapAlloc dt=12 heapalloc_value=7540976 -HeapAlloc dt=12 heapalloc_value=7549168 -HeapAlloc dt=13 heapalloc_value=7557360 -HeapAlloc dt=96 heapalloc_value=7565552 -HeapAlloc dt=9 heapalloc_value=7573744 -HeapAlloc dt=7 heapalloc_value=7581936 -HeapAlloc dt=6 heapalloc_value=7590128 -HeapAlloc dt=6 heapalloc_value=7598320 -HeapAlloc dt=6 heapalloc_value=7606512 -HeapAlloc dt=6 heapalloc_value=7614704 -HeapAlloc dt=6 heapalloc_value=7622896 -HeapAlloc dt=7 heapalloc_value=7631088 -HeapAlloc dt=6 heapalloc_value=7639280 -HeapAlloc dt=6 heapalloc_value=7647472 -HeapAlloc dt=81 heapalloc_value=7655664 -HeapAlloc dt=8 heapalloc_value=7663856 -HeapAlloc dt=6 heapalloc_value=7672048 -HeapAlloc dt=6 heapalloc_value=7680240 -HeapAlloc dt=6 heapalloc_value=7688432 -HeapAlloc dt=6 heapalloc_value=7696624 -HeapAlloc dt=45 heapalloc_value=7704816 -HeapAlloc dt=8 heapalloc_value=7713008 -HeapAlloc dt=6 heapalloc_value=7721200 -HeapAlloc dt=6 heapalloc_value=7729392 -HeapAlloc dt=6 heapalloc_value=7737584 -HeapAlloc dt=6 heapalloc_value=7745776 -HeapAlloc dt=6 heapalloc_value=7753968 -HeapAlloc dt=6 heapalloc_value=7762160 -HeapAlloc dt=6 heapalloc_value=7770352 -HeapAlloc dt=6 heapalloc_value=7778544 -HeapAlloc dt=6 heapalloc_value=7786736 -HeapAlloc dt=6 heapalloc_value=7794928 -HeapAlloc dt=6 heapalloc_value=7803120 -HeapAlloc dt=6 heapalloc_value=7811312 -HeapAlloc dt=6 heapalloc_value=7819504 -HeapAlloc dt=6 heapalloc_value=7827696 -HeapAlloc dt=6 heapalloc_value=7835888 -HeapAlloc dt=6 heapalloc_value=7844080 -HeapAlloc dt=6 heapalloc_value=7852272 -HeapAlloc dt=6 heapalloc_value=7860464 -HeapAlloc dt=6 heapalloc_value=7868656 -HeapAlloc dt=6 heapalloc_value=7876848 -HeapAlloc dt=6 heapalloc_value=7885040 -HeapAlloc dt=7 heapalloc_value=7893232 -HeapAlloc dt=5 heapalloc_value=7901424 -HeapAlloc dt=7 heapalloc_value=7909616 -HeapAlloc dt=72 heapalloc_value=7917808 -GCBegin dt=27 gc_seq=3 stack=41 -STWBegin dt=46 kind_string=22 stack=42 -GoUnblock dt=163 g=4 g_seq=3 stack=43 -ProcsChange dt=106 procs_value=8 stack=44 -STWEnd dt=26 -GCMarkAssistBegin dt=206 stack=30 -GCMarkAssistEnd dt=1163 -GoBlock dt=20 reason_string=19 stack=21 -GoStart dt=199 g=4 g_seq=4 -GoBlock dt=21 reason_string=15 stack=32 -GoUnblock dt=111 g=8 g_seq=2 stack=0 -GoStart dt=272 g=8 g_seq=3 -GoLabel dt=3 label_string=4 -GoBlock dt=553 reason_string=15 stack=26 -GoUnblock dt=12 g=1 g_seq=26 stack=0 -GoStart dt=9 g=1 g_seq=27 -HeapAlloc dt=172 heapalloc_value=7926000 -HeapAlloc dt=24 heapalloc_value=7934192 -HeapAlloc dt=9 heapalloc_value=7942384 -HeapAlloc dt=9 heapalloc_value=7950576 -HeapAlloc dt=15 heapalloc_value=7958768 -HeapAlloc dt=11 heapalloc_value=7966960 -HeapAlloc dt=12 heapalloc_value=7975152 -HeapAlloc dt=10 heapalloc_value=7983344 -HeapAlloc dt=11 heapalloc_value=7991536 -HeapAlloc dt=8 heapalloc_value=7999728 -HeapAlloc dt=7 heapalloc_value=8007920 -HeapAlloc dt=7 heapalloc_value=8016112 -HeapAlloc dt=9 heapalloc_value=8024304 -HeapAlloc dt=8 heapalloc_value=8032496 -HeapAlloc dt=9 heapalloc_value=8040688 -HeapAlloc dt=8 heapalloc_value=8048880 -HeapAlloc dt=7 heapalloc_value=8057072 -HeapAlloc dt=7 heapalloc_value=8065264 -HeapAlloc dt=8 heapalloc_value=8073456 -HeapAlloc dt=229 heapalloc_value=8081648 -HeapAlloc dt=13 heapalloc_value=8089840 -HeapAlloc dt=7 heapalloc_value=8098032 -HeapAlloc dt=7 heapalloc_value=8106224 -HeapAlloc dt=44 heapalloc_value=8114416 -HeapAlloc dt=9 heapalloc_value=8122608 -HeapAlloc dt=7 heapalloc_value=8130800 -HeapAlloc dt=7 heapalloc_value=8138992 -HeapAlloc dt=263 heapalloc_value=8147184 -HeapAlloc dt=9 heapalloc_value=8155376 -HeapAlloc dt=8 heapalloc_value=8163568 -HeapAlloc dt=7 heapalloc_value=8171760 -HeapAlloc dt=6 heapalloc_value=8179952 -HeapAlloc dt=42 heapalloc_value=8188144 -HeapAlloc dt=7 heapalloc_value=8196336 -HeapAlloc dt=7 heapalloc_value=8204528 -HeapAlloc dt=7 heapalloc_value=8212720 -HeapAlloc dt=8 heapalloc_value=8220912 -HeapAlloc dt=7 heapalloc_value=8229104 -HeapAlloc dt=7 heapalloc_value=8237296 -HeapAlloc dt=7 heapalloc_value=8245488 -HeapAlloc dt=7 heapalloc_value=8253680 -HeapAlloc dt=7 heapalloc_value=8261872 -HeapAlloc dt=6 heapalloc_value=8270064 -HeapAlloc dt=7 heapalloc_value=8278256 -HeapAlloc dt=7 heapalloc_value=8286448 -HeapAlloc dt=7 heapalloc_value=8294640 -HeapAlloc dt=7 heapalloc_value=8302832 -HeapAlloc dt=7 heapalloc_value=8311024 -HeapAlloc dt=50 heapalloc_value=8319216 -HeapAlloc dt=11 heapalloc_value=8327408 -HeapAlloc dt=14 heapalloc_value=8335600 -HeapAlloc dt=14 heapalloc_value=8343792 -HeapAlloc dt=11 heapalloc_value=8351984 -HeapAlloc dt=11 heapalloc_value=8360176 -HeapAlloc dt=13 heapalloc_value=8368368 -HeapAlloc dt=11 heapalloc_value=8376560 -HeapAlloc dt=11 heapalloc_value=8384752 -HeapAlloc dt=12 heapalloc_value=8392944 -HeapAlloc dt=11 heapalloc_value=8401136 -HeapAlloc dt=257 heapalloc_value=8409328 -HeapAlloc dt=19 heapalloc_value=8417520 -HeapAlloc dt=17 heapalloc_value=8425712 -HeapAlloc dt=15 heapalloc_value=8433904 -HeapAlloc dt=14 heapalloc_value=8442096 -HeapAlloc dt=50 heapalloc_value=8450288 -HeapAlloc dt=14 heapalloc_value=8458480 -HeapAlloc dt=14 heapalloc_value=8466672 -HeapAlloc dt=15 heapalloc_value=8474864 -HeapAlloc dt=14 heapalloc_value=8483056 -HeapAlloc dt=12 heapalloc_value=8491248 -HeapAlloc dt=12 heapalloc_value=8499440 -HeapAlloc dt=13 heapalloc_value=8507632 -HeapAlloc dt=14 heapalloc_value=8515824 -HeapAlloc dt=12 heapalloc_value=8524016 -HeapAlloc dt=13 heapalloc_value=8532208 -HeapAlloc dt=13 heapalloc_value=8540400 -HeapAlloc dt=13 heapalloc_value=8548592 -HeapAlloc dt=16 heapalloc_value=8556784 -HeapAlloc dt=14 heapalloc_value=8564976 -HeapAlloc dt=14 heapalloc_value=8573168 -HeapAlloc dt=16 heapalloc_value=8581360 -HeapAlloc dt=14 heapalloc_value=8589552 -HeapAlloc dt=14 heapalloc_value=8597744 -HeapAlloc dt=59 heapalloc_value=8605936 -HeapAlloc dt=15 heapalloc_value=8614128 -HeapAlloc dt=12 heapalloc_value=8622320 -HeapAlloc dt=12 heapalloc_value=8630512 -HeapAlloc dt=11 heapalloc_value=8638704 -HeapAlloc dt=15 heapalloc_value=8646896 -HeapAlloc dt=12 heapalloc_value=8655088 -HeapAlloc dt=11 heapalloc_value=8663280 -HeapAlloc dt=292 heapalloc_value=8671472 -HeapAlloc dt=14 heapalloc_value=8679664 -HeapAlloc dt=12 heapalloc_value=8687856 -HeapAlloc dt=11 heapalloc_value=8696048 -HeapAlloc dt=12 heapalloc_value=8704240 -HeapAlloc dt=44 heapalloc_value=8712432 -HeapAlloc dt=14 heapalloc_value=8720624 -HeapAlloc dt=11 heapalloc_value=8728816 -HeapAlloc dt=14 heapalloc_value=8737008 -HeapAlloc dt=52 heapalloc_value=8745200 -HeapAlloc dt=13 heapalloc_value=8753392 -HeapAlloc dt=13 heapalloc_value=8761584 -HeapAlloc dt=12 heapalloc_value=8769776 -HeapAlloc dt=15 heapalloc_value=8777968 -HeapAlloc dt=12 heapalloc_value=8786160 -HeapAlloc dt=14 heapalloc_value=8794352 -HeapAlloc dt=18 heapalloc_value=8802544 -GoStop dt=25 reason_string=16 stack=46 -GoStart dt=658 g=1 g_seq=28 -HeapAlloc dt=14 heapalloc_value=8810736 -HeapAlloc dt=24 heapalloc_value=8818928 -HeapAlloc dt=12 heapalloc_value=8827120 -HeapAlloc dt=13 heapalloc_value=8835312 -HeapAlloc dt=15 heapalloc_value=8843504 -HeapAlloc dt=12 heapalloc_value=8851696 -HeapAlloc dt=16 heapalloc_value=8859888 -HeapAlloc dt=14 heapalloc_value=8868080 -HeapAlloc dt=14 heapalloc_value=8876272 -HeapAlloc dt=13 heapalloc_value=8884464 -HeapAlloc dt=12 heapalloc_value=8892656 -HeapAlloc dt=13 heapalloc_value=8900848 -HeapAlloc dt=15 heapalloc_value=8909040 -HeapAlloc dt=13 heapalloc_value=8917232 -HeapAlloc dt=15 heapalloc_value=8925424 -HeapAlloc dt=101 heapalloc_value=8933616 -GCMarkAssistBegin dt=13 stack=30 -GoBlock dt=37 reason_string=10 stack=33 -ProcStop dt=16 -ProcStart dt=1559 p=0 p_seq=34 -GoStart dt=433 g=1 g_seq=30 -GCMarkAssistEnd dt=16 -HeapAlloc dt=13 heapalloc_value=8630512 -GCSweepBegin dt=342 stack=47 -GCSweepEnd dt=22 swept_value=131072 reclaimed_value=0 -GCSweepBegin dt=19 stack=38 -GCSweepEnd dt=412 swept_value=827392 reclaimed_value=0 -HeapAlloc dt=32 heapalloc_value=8638704 -GoBlock dt=26 reason_string=19 stack=21 -ProcStop dt=31 -ProcStart dt=4598 p=0 p_seq=35 -ProcStop dt=23 -ProcStart dt=60434 p=0 p_seq=39 -GoStart dt=172 g=4 g_seq=6 -GoBlock dt=37 reason_string=15 stack=32 -ProcStop dt=17 -ProcStart dt=50232 p=2 p_seq=21 -GoUnblock dt=21 g=25 g_seq=8 stack=0 -GoStart dt=277 g=25 g_seq=9 +ProcStart dt=9275 p=0 p_seq=12 +ProcStop dt=9 +ProcStart dt=16732 p=0 p_seq=13 +GoUnblock dt=9 g=1 g_seq=38 stack=0 +GoStart dt=84 g=1 g_seq=39 +HeapAlloc dt=23 heapalloc_value=9631048 +HeapAlloc dt=24 heapalloc_value=9639240 +HeapAlloc dt=15 heapalloc_value=9647432 +HeapAlloc dt=15 heapalloc_value=9655624 +HeapAlloc dt=15 heapalloc_value=9663816 +HeapAlloc dt=16 heapalloc_value=9672008 +HeapAlloc dt=14 heapalloc_value=9680200 +HeapAlloc dt=18 heapalloc_value=9688392 +HeapAlloc dt=14 heapalloc_value=9696584 +HeapAlloc dt=19 heapalloc_value=9704776 +HeapAlloc dt=15 heapalloc_value=9712968 +HeapAlloc dt=76 heapalloc_value=9721160 +HeapAlloc dt=18 heapalloc_value=9729352 +HeapAlloc dt=17 heapalloc_value=9737544 +HeapAlloc dt=14 heapalloc_value=9745736 +HeapAlloc dt=15 heapalloc_value=9753928 +HeapAlloc dt=16 heapalloc_value=9762120 +HeapAlloc dt=28 heapalloc_value=9770312 +HeapAlloc dt=23 heapalloc_value=9778504 +HeapAlloc dt=19 heapalloc_value=9786696 +HeapAlloc dt=14 heapalloc_value=9794888 +HeapAlloc dt=26 heapalloc_value=9803080 +HeapAlloc dt=18 heapalloc_value=9811272 +HeapAlloc dt=16 heapalloc_value=9819464 +HeapAlloc dt=15 heapalloc_value=9827656 +HeapAlloc dt=19 heapalloc_value=9835848 +HeapAlloc dt=16 heapalloc_value=9844040 +HeapAlloc dt=15 heapalloc_value=9852232 +HeapAlloc dt=15 heapalloc_value=9860424 +HeapAlloc dt=15 heapalloc_value=9868616 +HeapAlloc dt=15 heapalloc_value=9876808 +HeapAlloc dt=15 heapalloc_value=9885000 +HeapAlloc dt=15 heapalloc_value=9893192 +HeapAlloc dt=15 heapalloc_value=9901384 +HeapAlloc dt=16 heapalloc_value=9909576 +HeapAlloc dt=16 heapalloc_value=9917768 +HeapAlloc dt=15 heapalloc_value=9925960 +HeapAlloc dt=15 heapalloc_value=9934152 +HeapAlloc dt=15 heapalloc_value=9942344 +HeapAlloc dt=15 heapalloc_value=9950536 +HeapAlloc dt=16 heapalloc_value=9958728 +HeapAlloc dt=15 heapalloc_value=9966920 +HeapAlloc dt=63 heapalloc_value=9975112 +HeapAlloc dt=20 heapalloc_value=9983304 +HeapAlloc dt=14 heapalloc_value=9991496 +HeapAlloc dt=15 heapalloc_value=9999688 +HeapAlloc dt=14 heapalloc_value=10007880 +HeapAlloc dt=15 heapalloc_value=10016072 +HeapAlloc dt=16 heapalloc_value=10024264 +HeapAlloc dt=16 heapalloc_value=10032456 +HeapAlloc dt=16 heapalloc_value=10040648 +HeapAlloc dt=16 heapalloc_value=10048840 +HeapAlloc dt=15 heapalloc_value=10057032 +HeapAlloc dt=16 heapalloc_value=10065224 +HeapAlloc dt=14 heapalloc_value=10073416 +HeapAlloc dt=16 heapalloc_value=10081608 +HeapAlloc dt=15 heapalloc_value=10089800 +HeapAlloc dt=16 heapalloc_value=10097992 +HeapAlloc dt=16 heapalloc_value=10106184 +HeapAlloc dt=17 heapalloc_value=10114376 +HeapAlloc dt=15 heapalloc_value=10122568 +HeapAlloc dt=33 heapalloc_value=10327368 +HeapAlloc dt=367 heapalloc_value=10335560 +HeapAlloc dt=21 heapalloc_value=10343752 +HeapAlloc dt=16 heapalloc_value=10351944 +HeapAlloc dt=15 heapalloc_value=10360136 +HeapAlloc dt=16 heapalloc_value=10368328 +HeapAlloc dt=16 heapalloc_value=10376520 +HeapAlloc dt=16 heapalloc_value=10384712 +HeapAlloc dt=15 heapalloc_value=10392904 +HeapAlloc dt=15 heapalloc_value=10401096 +HeapAlloc dt=15 heapalloc_value=10409288 +HeapAlloc dt=15 heapalloc_value=10417480 +HeapAlloc dt=15 heapalloc_value=10425672 +HeapAlloc dt=17 heapalloc_value=10433864 +HeapAlloc dt=15 heapalloc_value=10442056 +HeapAlloc dt=15 heapalloc_value=10450248 +HeapAlloc dt=15 heapalloc_value=10458440 +HeapAlloc dt=15 heapalloc_value=10466632 +HeapAlloc dt=15 heapalloc_value=10474824 +HeapAlloc dt=15 heapalloc_value=10483016 +HeapAlloc dt=14 heapalloc_value=10491208 +HeapAlloc dt=22 heapalloc_value=10499400 +HeapAlloc dt=7 heapalloc_value=10507592 +HeapAlloc dt=9 heapalloc_value=10515784 +HeapAlloc dt=7 heapalloc_value=10523976 +HeapAlloc dt=6 heapalloc_value=10532168 +HeapAlloc dt=5 heapalloc_value=10540360 +HeapAlloc dt=6 heapalloc_value=10548552 +HeapAlloc dt=6 heapalloc_value=10556744 +HeapAlloc dt=5 heapalloc_value=10564936 +HeapAlloc dt=6 heapalloc_value=10573128 +HeapAlloc dt=6 heapalloc_value=10581320 +HeapAlloc dt=5 heapalloc_value=10589512 +HeapAlloc dt=6 heapalloc_value=10597704 +HeapAlloc dt=6 heapalloc_value=10605896 +HeapAlloc dt=5 heapalloc_value=10614088 +HeapAlloc dt=6 heapalloc_value=10622280 +HeapAlloc dt=5 heapalloc_value=10630472 +HeapAlloc dt=6 heapalloc_value=10638664 +HeapAlloc dt=6 heapalloc_value=10646856 +HeapAlloc dt=5 heapalloc_value=10655048 +HeapAlloc dt=6 heapalloc_value=10663240 +HeapAlloc dt=5 heapalloc_value=10671432 +HeapAlloc dt=6 heapalloc_value=10679624 +HeapAlloc dt=5 heapalloc_value=10687816 +HeapAlloc dt=221 heapalloc_value=10696008 +HeapAlloc dt=9 heapalloc_value=10704200 +HeapAlloc dt=6 heapalloc_value=10712392 +HeapAlloc dt=5 heapalloc_value=10720584 +HeapAlloc dt=6 heapalloc_value=10728776 +HeapAlloc dt=6 heapalloc_value=10736968 +HeapAlloc dt=5 heapalloc_value=10745160 +HeapAlloc dt=6 heapalloc_value=10753352 +HeapAlloc dt=5 heapalloc_value=10761544 +HeapAlloc dt=6 heapalloc_value=10769736 +HeapAlloc dt=5 heapalloc_value=10777928 +HeapAlloc dt=5 heapalloc_value=10786120 +HeapAlloc dt=6 heapalloc_value=10794312 +HeapAlloc dt=6 heapalloc_value=10802504 +HeapAlloc dt=5 heapalloc_value=10810696 +HeapAlloc dt=6 heapalloc_value=10818888 +HeapAlloc dt=5 heapalloc_value=10827080 +HeapAlloc dt=6 heapalloc_value=10835272 +HeapAlloc dt=5 heapalloc_value=10843464 +HeapAlloc dt=6 heapalloc_value=10851656 +GoBlock dt=11 reason_string=19 stack=21 +ProcStop dt=119 +ProcStart dt=17350 p=2 p_seq=7 +ProcStop dt=13 +ProcStart dt=1133 p=0 p_seq=16 +ProcStop dt=8 +ProcStart dt=16748 p=0 p_seq=17 +GoUnblock dt=7 g=1 g_seq=42 stack=0 +GoStart dt=84 g=1 g_seq=43 +HeapAlloc dt=15 heapalloc_value=11883848 +HeapAlloc dt=10 heapalloc_value=11892040 +HeapAlloc dt=6 heapalloc_value=11900232 +HeapAlloc dt=6 heapalloc_value=11908424 +HeapAlloc dt=6 heapalloc_value=11916616 +HeapAlloc dt=6 heapalloc_value=11924808 +HeapAlloc dt=8 heapalloc_value=11933000 +HeapAlloc dt=5 heapalloc_value=11941192 +HeapAlloc dt=6 heapalloc_value=11949384 +HeapAlloc dt=62 heapalloc_value=11957576 +HeapAlloc dt=7 heapalloc_value=11965768 +HeapAlloc dt=6 heapalloc_value=11973960 +HeapAlloc dt=6 heapalloc_value=11982152 +HeapAlloc dt=5 heapalloc_value=11990344 +HeapAlloc dt=6 heapalloc_value=11998536 +HeapAlloc dt=6 heapalloc_value=12006728 +HeapAlloc dt=5 heapalloc_value=12014920 +HeapAlloc dt=6 heapalloc_value=12023112 +HeapAlloc dt=5 heapalloc_value=12031304 +HeapAlloc dt=6 heapalloc_value=12039496 +HeapAlloc dt=5 heapalloc_value=12047688 +HeapAlloc dt=6 heapalloc_value=12055880 +HeapAlloc dt=6 heapalloc_value=12064072 +HeapAlloc dt=6 heapalloc_value=12072264 +HeapAlloc dt=5 heapalloc_value=12080456 +HeapAlloc dt=352 heapalloc_value=12088648 +HeapAlloc dt=14 heapalloc_value=12096840 +HeapAlloc dt=7 heapalloc_value=12105032 +HeapAlloc dt=5 heapalloc_value=12113224 +HeapAlloc dt=6 heapalloc_value=12121416 +HeapAlloc dt=41 heapalloc_value=12129608 +HeapAlloc dt=7 heapalloc_value=12137800 +HeapAlloc dt=5 heapalloc_value=12145992 +HeapAlloc dt=6 heapalloc_value=12154184 +HeapAlloc dt=6 heapalloc_value=12162376 +HeapAlloc dt=6 heapalloc_value=12170568 +HeapAlloc dt=5 heapalloc_value=12178760 +HeapAlloc dt=6 heapalloc_value=12186952 +HeapAlloc dt=5 heapalloc_value=12195144 +HeapAlloc dt=7 heapalloc_value=12203336 +HeapAlloc dt=5 heapalloc_value=12211528 +HeapAlloc dt=6 heapalloc_value=12219720 +HeapAlloc dt=5 heapalloc_value=12227912 +HeapAlloc dt=6 heapalloc_value=12236104 +HeapAlloc dt=6 heapalloc_value=12244296 +HeapAlloc dt=6 heapalloc_value=12252488 +HeapAlloc dt=5 heapalloc_value=12260680 +HeapAlloc dt=46 heapalloc_value=12268872 +HeapAlloc dt=6 heapalloc_value=12277064 +HeapAlloc dt=6 heapalloc_value=12285256 +HeapAlloc dt=6 heapalloc_value=12293448 +HeapAlloc dt=5 heapalloc_value=12301640 +HeapAlloc dt=6 heapalloc_value=12309832 +HeapAlloc dt=5 heapalloc_value=12318024 +HeapAlloc dt=6 heapalloc_value=12326216 +HeapAlloc dt=5 heapalloc_value=12334408 +HeapAlloc dt=6 heapalloc_value=12342600 +HeapAlloc dt=5 heapalloc_value=12350792 +HeapAlloc dt=6 heapalloc_value=12358984 +HeapAlloc dt=5 heapalloc_value=12367176 +HeapAlloc dt=6 heapalloc_value=12375368 +HeapAlloc dt=37 heapalloc_value=12383560 +HeapAlloc dt=7 heapalloc_value=12391752 +HeapAlloc dt=6 heapalloc_value=12399944 +HeapAlloc dt=5 heapalloc_value=12408136 +HeapAlloc dt=6 heapalloc_value=12416328 +HeapAlloc dt=6 heapalloc_value=12424520 +HeapAlloc dt=13 heapalloc_value=12686664 +HeapAlloc dt=2516 heapalloc_value=12694856 +HeapAlloc dt=9 heapalloc_value=12703048 +HeapAlloc dt=8 heapalloc_value=12711240 +HeapAlloc dt=7 heapalloc_value=12719432 +HeapAlloc dt=8 heapalloc_value=12727624 +HeapAlloc dt=7 heapalloc_value=12735816 +HeapAlloc dt=8 heapalloc_value=12744008 +HeapAlloc dt=7 heapalloc_value=12752200 +HeapAlloc dt=8 heapalloc_value=12760392 +HeapAlloc dt=7 heapalloc_value=12768584 +HeapAlloc dt=7 heapalloc_value=12776776 +HeapAlloc dt=8 heapalloc_value=12784968 +HeapAlloc dt=7 heapalloc_value=12793160 +HeapAlloc dt=8 heapalloc_value=12801352 +HeapAlloc dt=8 heapalloc_value=12809544 +HeapAlloc dt=7 heapalloc_value=12817736 +HeapAlloc dt=7 heapalloc_value=12825928 +HeapAlloc dt=8 heapalloc_value=12834120 +HeapAlloc dt=7 heapalloc_value=12842312 +HeapAlloc dt=8 heapalloc_value=12850504 +HeapAlloc dt=8 heapalloc_value=12858696 +HeapAlloc dt=7 heapalloc_value=12866888 +HeapAlloc dt=13 heapalloc_value=12875080 +HeapAlloc dt=8 heapalloc_value=12883272 +HeapAlloc dt=5 heapalloc_value=12891464 +HeapAlloc dt=6 heapalloc_value=12899656 +HeapAlloc dt=6 heapalloc_value=12907848 +HeapAlloc dt=5 heapalloc_value=12916040 +HeapAlloc dt=6 heapalloc_value=12924232 +HeapAlloc dt=6 heapalloc_value=12932424 +HeapAlloc dt=5 heapalloc_value=12940616 +HeapAlloc dt=6 heapalloc_value=12948808 +HeapAlloc dt=5 heapalloc_value=12957000 +HeapAlloc dt=6 heapalloc_value=12965192 +HeapAlloc dt=5 heapalloc_value=12973384 +HeapAlloc dt=6 heapalloc_value=12981576 +HeapAlloc dt=6 heapalloc_value=12989768 +HeapAlloc dt=5 heapalloc_value=12997960 +HeapAlloc dt=6 heapalloc_value=13006152 +HeapAlloc dt=6 heapalloc_value=13014344 +HeapAlloc dt=5 heapalloc_value=13022536 +HeapAlloc dt=6 heapalloc_value=13030728 +HeapAlloc dt=5 heapalloc_value=13038920 +HeapAlloc dt=62 heapalloc_value=13047112 +HeapAlloc dt=39 heapalloc_value=13055304 +HeapAlloc dt=7 heapalloc_value=13063496 +HeapAlloc dt=6 heapalloc_value=13071688 +HeapAlloc dt=6 heapalloc_value=13079880 +HeapAlloc dt=6 heapalloc_value=13088072 +HeapAlloc dt=5 heapalloc_value=13096264 +HeapAlloc dt=5 heapalloc_value=13104456 +HeapAlloc dt=6 heapalloc_value=13112648 +HeapAlloc dt=6 heapalloc_value=13120840 +HeapAlloc dt=5 heapalloc_value=13129032 +HeapAlloc dt=10 heapalloc_value=13137224 +HeapAlloc dt=6 heapalloc_value=13145416 +HeapAlloc dt=5 heapalloc_value=13153608 +HeapAlloc dt=6 heapalloc_value=13161800 +GoBlock dt=12 reason_string=19 stack=21 +ProcStop dt=124 +ProcStart dt=17212 p=2 p_seq=9 +ProcStop dt=13 +ProcStart dt=1068 p=0 p_seq=20 +ProcStop dt=8 +ProcStart dt=16756 p=0 p_seq=21 +GoUnblock dt=11 g=1 g_seq=46 stack=0 +GoStart dt=92 g=1 g_seq=47 +HeapAlloc dt=19 heapalloc_value=14193992 +HeapAlloc dt=10 heapalloc_value=14202184 +HeapAlloc dt=6 heapalloc_value=14210376 +HeapAlloc dt=6 heapalloc_value=14218568 +HeapAlloc dt=6 heapalloc_value=14226760 +HeapAlloc dt=6 heapalloc_value=14234952 +HeapAlloc dt=6 heapalloc_value=14243144 +HeapAlloc dt=6 heapalloc_value=14251336 +HeapAlloc dt=6 heapalloc_value=14259528 +HeapAlloc dt=6 heapalloc_value=14267720 +HeapAlloc dt=5 heapalloc_value=14275912 +HeapAlloc dt=6 heapalloc_value=14284104 +HeapAlloc dt=6 heapalloc_value=14292296 +HeapAlloc dt=6 heapalloc_value=14300488 +HeapAlloc dt=60 heapalloc_value=14308680 +HeapAlloc dt=8 heapalloc_value=14316872 +HeapAlloc dt=6 heapalloc_value=14325064 +HeapAlloc dt=6 heapalloc_value=14333256 +HeapAlloc dt=6 heapalloc_value=14341448 +HeapAlloc dt=5 heapalloc_value=14349640 +HeapAlloc dt=6 heapalloc_value=14357832 +HeapAlloc dt=6 heapalloc_value=14366024 +HeapAlloc dt=6 heapalloc_value=14374216 +HeapAlloc dt=6 heapalloc_value=14382408 +HeapAlloc dt=8 heapalloc_value=14390600 +HeapAlloc dt=6 heapalloc_value=14398792 +HeapAlloc dt=6 heapalloc_value=14406984 +HeapAlloc dt=6 heapalloc_value=14415176 +HeapAlloc dt=6 heapalloc_value=14423368 +HeapAlloc dt=5 heapalloc_value=14431560 +HeapAlloc dt=6 heapalloc_value=14439752 +HeapAlloc dt=7 heapalloc_value=14447944 +HeapAlloc dt=5 heapalloc_value=14456136 +HeapAlloc dt=6 heapalloc_value=14464328 +HeapAlloc dt=6 heapalloc_value=14472520 +HeapAlloc dt=5 heapalloc_value=14480712 +HeapAlloc dt=6 heapalloc_value=14488904 +HeapAlloc dt=6 heapalloc_value=14497096 +HeapAlloc dt=6 heapalloc_value=14505288 +HeapAlloc dt=6 heapalloc_value=14513480 +HeapAlloc dt=6 heapalloc_value=14521672 +HeapAlloc dt=6 heapalloc_value=14529864 +HeapAlloc dt=5 heapalloc_value=14538056 +HeapAlloc dt=6 heapalloc_value=14546248 +HeapAlloc dt=6 heapalloc_value=14554440 +HeapAlloc dt=5 heapalloc_value=14562632 +HeapAlloc dt=6 heapalloc_value=14570824 +HeapAlloc dt=6 heapalloc_value=14579016 +HeapAlloc dt=6 heapalloc_value=14587208 +HeapAlloc dt=6 heapalloc_value=14595400 +HeapAlloc dt=5 heapalloc_value=14603592 +HeapAlloc dt=6 heapalloc_value=14611784 +HeapAlloc dt=45 heapalloc_value=14619976 +HeapAlloc dt=7 heapalloc_value=14628168 +HeapAlloc dt=6 heapalloc_value=14636360 +HeapAlloc dt=7 heapalloc_value=14644552 +HeapAlloc dt=5 heapalloc_value=14652744 +HeapAlloc dt=6 heapalloc_value=14660936 +HeapAlloc dt=6 heapalloc_value=14669128 +HeapAlloc dt=5 heapalloc_value=14677320 +HeapAlloc dt=6 heapalloc_value=14685512 +HeapAlloc dt=6 heapalloc_value=14693704 +HeapAlloc dt=6 heapalloc_value=14701896 +HeapAlloc dt=15 heapalloc_value=14710088 +HeapAlloc dt=6 heapalloc_value=14718280 +HeapAlloc dt=5 heapalloc_value=14726472 +HeapAlloc dt=35 heapalloc_value=14734664 +HeapAlloc dt=7 heapalloc_value=14742856 +HeapAlloc dt=6 heapalloc_value=14751048 +HeapAlloc dt=6 heapalloc_value=14759240 +HeapAlloc dt=6 heapalloc_value=14767432 +HeapAlloc dt=6 heapalloc_value=14775624 +HeapAlloc dt=6 heapalloc_value=14783816 +HeapAlloc dt=6 heapalloc_value=14792008 +HeapAlloc dt=5 heapalloc_value=14800200 +HeapAlloc dt=6 heapalloc_value=14808392 +HeapAlloc dt=5 heapalloc_value=14816584 +HeapAlloc dt=6 heapalloc_value=14824776 +HeapAlloc dt=6 heapalloc_value=14832968 +HeapAlloc dt=6 heapalloc_value=14841160 +HeapAlloc dt=6 heapalloc_value=14849352 +HeapAlloc dt=45 heapalloc_value=14857544 +HeapAlloc dt=6 heapalloc_value=14865736 +HeapAlloc dt=5 heapalloc_value=14873928 +HeapAlloc dt=6 heapalloc_value=14882120 +HeapAlloc dt=6 heapalloc_value=14890312 +HeapAlloc dt=6 heapalloc_value=14898504 +HeapAlloc dt=6 heapalloc_value=14906696 +HeapAlloc dt=6 heapalloc_value=14914888 +HeapAlloc dt=5 heapalloc_value=14923080 +HeapAlloc dt=6 heapalloc_value=14931272 +HeapAlloc dt=6 heapalloc_value=14939464 +HeapAlloc dt=5 heapalloc_value=14947656 +HeapAlloc dt=6 heapalloc_value=14955848 +HeapAlloc dt=6 heapalloc_value=14964040 +HeapAlloc dt=6 heapalloc_value=14972232 +HeapAlloc dt=5 heapalloc_value=14980424 +HeapAlloc dt=6 heapalloc_value=14988616 +HeapAlloc dt=6 heapalloc_value=14996808 +HeapAlloc dt=5 heapalloc_value=15005000 +HeapAlloc dt=6 heapalloc_value=15013192 +HeapAlloc dt=6 heapalloc_value=15021384 +HeapAlloc dt=6 heapalloc_value=15029576 +HeapAlloc dt=6 heapalloc_value=15037768 +HeapAlloc dt=6 heapalloc_value=15045960 +HeapAlloc dt=5 heapalloc_value=15054152 +HeapAlloc dt=6 heapalloc_value=15062344 +HeapAlloc dt=6 heapalloc_value=15070536 +HeapAlloc dt=6 heapalloc_value=15078728 +HeapAlloc dt=5 heapalloc_value=15086920 +HeapAlloc dt=6 heapalloc_value=15095112 +HeapAlloc dt=6 heapalloc_value=15103304 +HeapAlloc dt=5 heapalloc_value=15111496 +HeapAlloc dt=6 heapalloc_value=15119688 +HeapAlloc dt=6 heapalloc_value=15127880 +HeapAlloc dt=5 heapalloc_value=15136072 +HeapAlloc dt=51 heapalloc_value=15471944 +HeapAlloc dt=2533 heapalloc_value=15480136 +HeapAlloc dt=11 heapalloc_value=15488328 +HeapAlloc dt=9 heapalloc_value=15496520 +HeapAlloc dt=7 heapalloc_value=15504712 +HeapAlloc dt=9 heapalloc_value=15512904 +HeapAlloc dt=9 heapalloc_value=15521096 +HeapAlloc dt=7 heapalloc_value=15529288 +HeapAlloc dt=8 heapalloc_value=15537480 +HeapAlloc dt=8 heapalloc_value=15545672 +GoBlock dt=13 reason_string=19 stack=21 +ProcStop dt=116 +ProcStart dt=17265 p=2 p_seq=11 +ProcStop dt=10 +ProcStart dt=1450 p=0 p_seq=24 +ProcStop dt=9 +ProcStart dt=17026 p=0 p_seq=25 +GoUnblock dt=12 g=1 g_seq=50 stack=0 +GoStart dt=148 g=1 g_seq=51 +HeapAlloc dt=20 heapalloc_value=16577864 +HeapAlloc dt=15 heapalloc_value=16586056 +HeapAlloc dt=10 heapalloc_value=16594248 +HeapAlloc dt=11 heapalloc_value=16602440 +HeapAlloc dt=9 heapalloc_value=16610632 +HeapAlloc dt=9 heapalloc_value=16618824 +HeapAlloc dt=10 heapalloc_value=16627016 +HeapAlloc dt=9 heapalloc_value=16635208 +HeapAlloc dt=11 heapalloc_value=16643400 +HeapAlloc dt=11 heapalloc_value=16651592 +HeapAlloc dt=9 heapalloc_value=16659784 +HeapAlloc dt=11 heapalloc_value=16667976 +HeapAlloc dt=9 heapalloc_value=16676168 +HeapAlloc dt=10 heapalloc_value=16684360 +HeapAlloc dt=10 heapalloc_value=16692552 +HeapAlloc dt=10 heapalloc_value=16700744 +HeapAlloc dt=11 heapalloc_value=16708936 +HeapAlloc dt=11 heapalloc_value=16717128 +HeapAlloc dt=9 heapalloc_value=16725320 +HeapAlloc dt=78 heapalloc_value=16733512 +HeapAlloc dt=14 heapalloc_value=16741704 +HeapAlloc dt=10 heapalloc_value=16749896 +HeapAlloc dt=11 heapalloc_value=16758088 +HeapAlloc dt=11 heapalloc_value=16766280 +HeapAlloc dt=10 heapalloc_value=16774472 +HeapAlloc dt=9 heapalloc_value=16782664 +HeapAlloc dt=10 heapalloc_value=16790856 +HeapAlloc dt=9 heapalloc_value=16799048 +HeapAlloc dt=21 heapalloc_value=16807240 +HeapAlloc dt=11 heapalloc_value=16815432 +HeapAlloc dt=9 heapalloc_value=16823624 +HeapAlloc dt=9 heapalloc_value=16831816 +HeapAlloc dt=9 heapalloc_value=16840008 +HeapAlloc dt=10 heapalloc_value=16848200 +HeapAlloc dt=11 heapalloc_value=16856392 +HeapAlloc dt=9 heapalloc_value=16864584 +HeapAlloc dt=6 heapalloc_value=16872776 +HeapAlloc dt=9 heapalloc_value=16880968 +HeapAlloc dt=6 heapalloc_value=16889160 +HeapAlloc dt=6 heapalloc_value=16897352 +HeapAlloc dt=5 heapalloc_value=16905544 +HeapAlloc dt=6 heapalloc_value=16913736 +HeapAlloc dt=6 heapalloc_value=16921928 +HeapAlloc dt=5 heapalloc_value=16930120 +HeapAlloc dt=6 heapalloc_value=16938312 +HeapAlloc dt=5 heapalloc_value=16946504 +HeapAlloc dt=6 heapalloc_value=16954696 +HeapAlloc dt=5 heapalloc_value=16962888 +HeapAlloc dt=5 heapalloc_value=16971080 +HeapAlloc dt=5 heapalloc_value=16979272 +HeapAlloc dt=6 heapalloc_value=16987464 +HeapAlloc dt=5 heapalloc_value=16995656 +HeapAlloc dt=5 heapalloc_value=17003848 +HeapAlloc dt=6 heapalloc_value=17012040 +HeapAlloc dt=5 heapalloc_value=17020232 +HeapAlloc dt=6 heapalloc_value=17028424 +HeapAlloc dt=5 heapalloc_value=17036616 +HeapAlloc dt=53 heapalloc_value=17044808 +HeapAlloc dt=7 heapalloc_value=17053000 +HeapAlloc dt=5 heapalloc_value=17061192 +HeapAlloc dt=6 heapalloc_value=17069384 +HeapAlloc dt=11 heapalloc_value=17077576 +HeapAlloc dt=10 heapalloc_value=17085768 +HeapAlloc dt=5 heapalloc_value=17093960 +HeapAlloc dt=5 heapalloc_value=17102152 +HeapAlloc dt=6 heapalloc_value=17110344 +HeapAlloc dt=5 heapalloc_value=17118536 +HeapAlloc dt=5 heapalloc_value=17126728 +HeapAlloc dt=6 heapalloc_value=17134920 +HeapAlloc dt=5 heapalloc_value=17143112 +HeapAlloc dt=6 heapalloc_value=17151304 +HeapAlloc dt=37 heapalloc_value=17159496 +GCBegin dt=15 gc_seq=5 stack=22 +STWBegin dt=37 kind_string=22 stack=28 +GoUnblock dt=288 g=4 g_seq=9 stack=29 +ProcsChange dt=56 procs_value=8 stack=30 +STWEnd dt=23 +GCMarkAssistBegin dt=90 stack=31 +GCMarkAssistEnd dt=3424 +HeapAlloc dt=523 heapalloc_value=17175048 +HeapAlloc dt=21 heapalloc_value=17183240 +HeapAlloc dt=46 heapalloc_value=17191432 +HeapAlloc dt=96 heapalloc_value=17199624 +HeapAlloc dt=12 heapalloc_value=17207816 +HeapAlloc dt=12 heapalloc_value=17216008 +HeapAlloc dt=13 heapalloc_value=17224200 +HeapAlloc dt=10 heapalloc_value=17232392 +HeapAlloc dt=12 heapalloc_value=17240584 +HeapAlloc dt=13 heapalloc_value=17248776 +HeapAlloc dt=12 heapalloc_value=17256968 +HeapAlloc dt=14 heapalloc_value=17265160 +HeapAlloc dt=12 heapalloc_value=17273352 +HeapAlloc dt=12 heapalloc_value=17281544 +HeapAlloc dt=11 heapalloc_value=17289736 +HeapAlloc dt=13 heapalloc_value=17297928 +HeapAlloc dt=36 heapalloc_value=17306120 +HeapAlloc dt=12 heapalloc_value=17314312 +HeapAlloc dt=10 heapalloc_value=17322504 +HeapAlloc dt=12 heapalloc_value=17330696 +HeapAlloc dt=10 heapalloc_value=17338888 +HeapAlloc dt=11 heapalloc_value=17347080 +HeapAlloc dt=10 heapalloc_value=17355272 +HeapAlloc dt=10 heapalloc_value=17363464 +HeapAlloc dt=10 heapalloc_value=17371656 +HeapAlloc dt=11 heapalloc_value=17379848 +HeapAlloc dt=8 heapalloc_value=17388040 +HeapAlloc dt=13 heapalloc_value=17396232 +HeapAlloc dt=10 heapalloc_value=17404424 +HeapAlloc dt=13 heapalloc_value=17412616 +HeapAlloc dt=13 heapalloc_value=17420808 +HeapAlloc dt=10 heapalloc_value=17429000 +HeapAlloc dt=31 heapalloc_value=17437192 +HeapAlloc dt=6 heapalloc_value=17445384 +HeapAlloc dt=7 heapalloc_value=17453576 +HeapAlloc dt=6 heapalloc_value=17461768 +HeapAlloc dt=7 heapalloc_value=17469960 +HeapAlloc dt=7 heapalloc_value=17478152 +HeapAlloc dt=7 heapalloc_value=17486344 +HeapAlloc dt=7 heapalloc_value=17494536 +HeapAlloc dt=12 heapalloc_value=17502728 +HeapAlloc dt=7 heapalloc_value=17510920 +HeapAlloc dt=12 heapalloc_value=17519112 +HeapAlloc dt=13 heapalloc_value=17527304 +HeapAlloc dt=20 heapalloc_value=17535496 +HeapAlloc dt=15 heapalloc_value=17543688 +HeapAlloc dt=6 heapalloc_value=17551880 +HeapAlloc dt=7 heapalloc_value=17560072 +HeapAlloc dt=72 heapalloc_value=17568264 +HeapAlloc dt=37 heapalloc_value=17576456 +HeapAlloc dt=7 heapalloc_value=17584648 +HeapAlloc dt=7 heapalloc_value=17592840 +HeapAlloc dt=6 heapalloc_value=17601032 +GoBlock dt=13 reason_string=19 stack=21 +GoUnblock dt=157 g=24 g_seq=12 stack=0 +GoStart dt=7 g=24 g_seq=13 GoLabel dt=1 label_string=2 -STWBegin dt=10275 kind_string=23 stack=34 -GoUnblock dt=637 g=34 g_seq=4 stack=35 -HeapAlloc dt=30 heapalloc_value=16793488 -GoUnblock dt=20 g=3 g_seq=5 stack=36 -GCEnd dt=7 gc_seq=6 -HeapGoal dt=5 heapgoal_value=34005760 -ProcsChange dt=48 procs_value=8 stack=37 -STWEnd dt=40 -GoBlock dt=1283 reason_string=15 stack=26 -GoStart dt=14 g=3 g_seq=6 -GoBlock dt=10077 reason_string=14 stack=40 -ProcStop dt=21 -ProcStart dt=84537 p=2 p_seq=27 -GoStart dt=249 g=4 g_seq=10 +STWBegin dt=4128 kind_string=23 stack=37 +GoUnblock dt=64 g=25 g_seq=8 stack=38 +HeapAlloc dt=25 heapalloc_value=16970376 +GoUnblock dt=24 g=3 g_seq=5 stack=39 +GCEnd dt=6 gc_seq=6 +HeapGoal dt=7 heapgoal_value=34360936 +ProcsChange dt=46 procs_value=8 stack=40 +STWEnd dt=49 +GoBlock dt=756 reason_string=15 stack=27 +GoStart dt=10 g=3 g_seq=6 +GoBlock dt=14862 reason_string=14 stack=44 +ProcStop dt=25 +ProcStart dt=132428 p=0 p_seq=32 +GoStart dt=162 g=4 g_seq=12 +GoBlock dt=19 reason_string=15 stack=32 +ProcStop dt=20 +ProcStart dt=8304 p=0 p_seq=33 +GoStart dt=191 g=39 g_seq=1 +GoStop dt=306173 reason_string=16 stack=50 +GoStart dt=17 g=39 g_seq=2 +GoStop dt=315175 reason_string=16 stack=50 +GoStart dt=7 g=39 g_seq=3 +GoDestroy dt=159902 +ProcStop dt=50 +EventBatch gen=1 m=1709040 time=7689670148204 size=3534 +ProcStart dt=256 p=1 p_seq=1 +GoStart dt=186 g=6 g_seq=1 +HeapAlloc dt=320 heapalloc_value=2768896 +HeapAlloc dt=22 heapalloc_value=2777088 +GoBlock dt=229 reason_string=12 stack=15 +GoStart dt=12 g=8 g_seq=1 +HeapAlloc dt=15 heapalloc_value=2785280 +GoSyscallBegin dt=16 p_seq=2 stack=16 +GoSyscallEnd dt=254 +GoBlock dt=293 reason_string=15 stack=17 +GoStart dt=19 g=9 g_seq=1 +GoDestroy dt=156265 +ProcStop dt=44 +ProcStart dt=67218 p=1 p_seq=3 +ProcStop dt=19 +ProcStart dt=88214 p=1 p_seq=4 +ProcStop dt=13 +ProcStart dt=17539 p=0 p_seq=1 +ProcStop dt=14 +ProcStart dt=9071 p=4 p_seq=1 +GoUnblock dt=33 g=22 g_seq=2 stack=0 +GoStart dt=6 g=22 g_seq=3 +GoLabel dt=1 label_string=4 +GoUnblock dt=2321 g=1 g_seq=23 stack=34 +STWBegin dt=1205 kind_string=23 stack=37 +GoUnblock dt=78 g=24 g_seq=6 stack=38 +HeapAlloc dt=26 heapalloc_value=3840752 +GoStatus dt=14 g=3 m=18446744073709551615 gstatus=4 +GoUnblock dt=7 g=3 g_seq=1 stack=39 +GCEnd dt=3 gc_seq=2 +HeapGoal dt=6 heapgoal_value=8101720 +ProcsChange dt=43 procs_value=8 stack=40 +STWEnd dt=31 +GoBlock dt=4030 reason_string=15 stack=27 +GoStart dt=12 g=3 g_seq=2 +GoBlock dt=1406 reason_string=14 stack=44 +ProcStop dt=24 +ProcStart dt=34332 p=4 p_seq=4 +GoStart dt=153 g=4 g_seq=4 GoBlock dt=20 reason_string=15 stack=32 -ProcStop dt=102 -ProcStart dt=8641 p=2 p_seq=28 -GoStart dt=201 g=11 g_seq=1 -GoStop dt=305542 reason_string=16 stack=52 -GoStart dt=20 g=11 g_seq=2 -GoStop dt=316424 reason_string=16 stack=52 -GoStart dt=16 g=11 g_seq=3 -GoDestroy dt=159274 -ProcStop dt=45 -EventBatch gen=1 m=2852339 time=420901991582 size=23 -GoUnblock dt=137 g=4 g_seq=5 stack=0 -GoUnblock dt=157581 g=4 g_seq=9 stack=0 -ProcSteal dt=948232 p=6 p_seq=9 m=2852347 -EventBatch gen=1 m=2852338 time=420901450373 size=416 -ProcStatus dt=115 p=1 pstatus=1 -GoStatus dt=4 g=1 m=2852338 gstatus=2 -ProcsChange dt=217 procs_value=8 stack=1 -STWBegin dt=68 kind_string=21 stack=2 -HeapGoal dt=2 heapgoal_value=4194304 -ProcStatus dt=1 p=0 pstatus=2 -ProcStatus dt=4 p=2 pstatus=2 -ProcStatus dt=3 p=3 pstatus=2 +ProcStop dt=19 +ProcStart dt=1832 p=2 p_seq=5 +GoUnblock dt=22 g=24 g_seq=8 stack=0 +GoStart dt=102 g=24 g_seq=9 +GoLabel dt=1 label_string=2 +STWBegin dt=11769 kind_string=23 stack=37 +GoUnblock dt=60 g=1 g_seq=36 stack=38 +HeapAlloc dt=23 heapalloc_value=8744264 +GoUnblock dt=17 g=3 g_seq=3 stack=39 +GCEnd dt=6 gc_seq=4 +HeapGoal dt=7 heapgoal_value=17908728 +ProcsChange dt=47 procs_value=8 stack=40 +STWEnd dt=28 +GoBlock dt=572 reason_string=15 stack=27 +GoStart dt=13 g=3 g_seq=4 +GoBlock dt=5707 reason_string=14 stack=44 +ProcStop dt=16 +ProcStart dt=136502 p=1 p_seq=11 +GoStart dt=17 g=4 g_seq=8 +GoBlock dt=12 reason_string=15 stack=32 +ProcStop dt=22 +ProcStart dt=5977 p=6 p_seq=1 +ProcStop dt=34 +ProcStart dt=16775 p=2 p_seq=15 +ProcStop dt=23 +ProcStart dt=3966 p=1 p_seq=14 +ProcStop dt=15 +ProcStart dt=16753 p=1 p_seq=15 +GoUnblock dt=35 g=1 g_seq=57 stack=0 +GoStart dt=139 g=1 g_seq=58 +HeapAlloc dt=71 heapalloc_value=17593992 +HeapAlloc dt=47 heapalloc_value=17602184 +HeapAlloc dt=24 heapalloc_value=17610376 +HeapAlloc dt=97 heapalloc_value=17618568 +HeapAlloc dt=23 heapalloc_value=17626760 +HeapAlloc dt=18 heapalloc_value=17634952 +HeapAlloc dt=15 heapalloc_value=17643144 +HeapAlloc dt=18 heapalloc_value=17651336 +HeapAlloc dt=21 heapalloc_value=17659528 +HeapAlloc dt=28 heapalloc_value=17667720 +HeapAlloc dt=26 heapalloc_value=17675912 +HeapAlloc dt=23 heapalloc_value=17684104 +HeapAlloc dt=12 heapalloc_value=17692296 +HeapAlloc dt=12 heapalloc_value=17700488 +HeapAlloc dt=11 heapalloc_value=17708680 +HeapAlloc dt=15 heapalloc_value=17716872 +HeapAlloc dt=18 heapalloc_value=17725064 +HeapAlloc dt=15 heapalloc_value=17733256 +HeapAlloc dt=165 heapalloc_value=17741448 +HeapAlloc dt=16 heapalloc_value=17749640 +HeapAlloc dt=12 heapalloc_value=17757832 +HeapAlloc dt=15 heapalloc_value=17766024 +HeapAlloc dt=12 heapalloc_value=17774216 +HeapAlloc dt=12 heapalloc_value=17782408 +HeapAlloc dt=15 heapalloc_value=17790600 +HeapAlloc dt=11 heapalloc_value=17798792 +HeapAlloc dt=11 heapalloc_value=17806984 +HeapAlloc dt=12 heapalloc_value=17815176 +HeapAlloc dt=12 heapalloc_value=17823368 +HeapAlloc dt=15 heapalloc_value=17831560 +HeapAlloc dt=11 heapalloc_value=17839752 +HeapAlloc dt=12 heapalloc_value=17847944 +HeapAlloc dt=15 heapalloc_value=17856136 +HeapAlloc dt=11 heapalloc_value=17864328 +HeapAlloc dt=12 heapalloc_value=17872520 +HeapAlloc dt=12 heapalloc_value=17880712 +HeapAlloc dt=14 heapalloc_value=17888904 +HeapAlloc dt=42 heapalloc_value=17897096 +HeapAlloc dt=54 heapalloc_value=17905288 +HeapAlloc dt=49 heapalloc_value=17913480 +HeapAlloc dt=54 heapalloc_value=17921672 +HeapAlloc dt=56 heapalloc_value=17929864 +HeapAlloc dt=45 heapalloc_value=17938056 +HeapAlloc dt=57 heapalloc_value=17946248 +HeapAlloc dt=63 heapalloc_value=17954440 +HeapAlloc dt=57 heapalloc_value=17962632 +HeapAlloc dt=56 heapalloc_value=17970824 +HeapAlloc dt=62 heapalloc_value=17979016 +HeapAlloc dt=109 heapalloc_value=17987208 +HeapAlloc dt=59 heapalloc_value=17995400 +HeapAlloc dt=45 heapalloc_value=18003592 +HeapAlloc dt=61 heapalloc_value=18011784 +HeapAlloc dt=35 heapalloc_value=18019976 +HeapAlloc dt=16 heapalloc_value=18028168 +HeapAlloc dt=15 heapalloc_value=18036360 +HeapAlloc dt=15 heapalloc_value=18044552 +HeapAlloc dt=21 heapalloc_value=18052744 +HeapAlloc dt=16 heapalloc_value=18060936 +HeapAlloc dt=16 heapalloc_value=18069128 +HeapAlloc dt=22 heapalloc_value=18077320 +HeapAlloc dt=43 heapalloc_value=18085512 +HeapAlloc dt=46 heapalloc_value=18093704 +HeapAlloc dt=43 heapalloc_value=18101896 +HeapAlloc dt=42 heapalloc_value=18110088 +HeapAlloc dt=44 heapalloc_value=18118280 +HeapAlloc dt=35 heapalloc_value=18126472 +HeapAlloc dt=39 heapalloc_value=18134664 +HeapAlloc dt=40 heapalloc_value=18142856 +HeapAlloc dt=43 heapalloc_value=18151048 +HeapAlloc dt=44 heapalloc_value=18159240 +HeapAlloc dt=38 heapalloc_value=18167432 +HeapAlloc dt=42 heapalloc_value=18175624 +HeapAlloc dt=40 heapalloc_value=18183816 +HeapAlloc dt=40 heapalloc_value=18192008 +HeapAlloc dt=36 heapalloc_value=18200200 +HeapAlloc dt=55 heapalloc_value=18208392 +HeapAlloc dt=54 heapalloc_value=18216584 +HeapAlloc dt=54 heapalloc_value=18224776 +HeapAlloc dt=41 heapalloc_value=18232968 +HeapAlloc dt=58 heapalloc_value=18241160 +HeapAlloc dt=61 heapalloc_value=18249352 +HeapAlloc dt=55 heapalloc_value=18257544 +HeapAlloc dt=141 heapalloc_value=18265736 +HeapAlloc dt=55 heapalloc_value=18273928 +HeapAlloc dt=54 heapalloc_value=18282120 +HeapAlloc dt=50 heapalloc_value=18290312 +HeapAlloc dt=82 heapalloc_value=18298504 +HeapAlloc dt=64 heapalloc_value=18306696 +HeapAlloc dt=55 heapalloc_value=18314888 +HeapAlloc dt=58 heapalloc_value=18323080 +HeapAlloc dt=54 heapalloc_value=18331272 +HeapAlloc dt=57 heapalloc_value=18339464 +HeapAlloc dt=46 heapalloc_value=18347656 +HeapAlloc dt=41 heapalloc_value=18355848 +HeapAlloc dt=56 heapalloc_value=18364040 +HeapAlloc dt=50 heapalloc_value=18372232 +HeapAlloc dt=54 heapalloc_value=18380424 +HeapAlloc dt=56 heapalloc_value=18388616 +HeapAlloc dt=57 heapalloc_value=18396808 +HeapAlloc dt=55 heapalloc_value=18405000 +HeapAlloc dt=55 heapalloc_value=18413192 +HeapAlloc dt=51 heapalloc_value=18421384 +HeapAlloc dt=52 heapalloc_value=18429576 +HeapAlloc dt=67 heapalloc_value=18437768 +HeapAlloc dt=36 heapalloc_value=18445960 +HeapAlloc dt=28 heapalloc_value=18454152 +HeapAlloc dt=30 heapalloc_value=18462344 +HeapAlloc dt=40 heapalloc_value=18470536 +HeapAlloc dt=29 heapalloc_value=18478728 +HeapAlloc dt=37 heapalloc_value=18486920 +HeapAlloc dt=34 heapalloc_value=18495112 +HeapAlloc dt=73 heapalloc_value=18503304 +HeapAlloc dt=37 heapalloc_value=18511496 +HeapAlloc dt=38 heapalloc_value=18519688 +HeapAlloc dt=29 heapalloc_value=18527880 +HeapAlloc dt=35 heapalloc_value=18536072 +HeapAlloc dt=33 heapalloc_value=18544264 +HeapAlloc dt=40 heapalloc_value=18552456 +HeapAlloc dt=32 heapalloc_value=18560648 +HeapAlloc dt=42 heapalloc_value=18568840 +HeapAlloc dt=34 heapalloc_value=18577032 +HeapAlloc dt=37 heapalloc_value=18585224 +HeapAlloc dt=35 heapalloc_value=18593416 +HeapAlloc dt=39 heapalloc_value=18601608 +HeapAlloc dt=35 heapalloc_value=18609800 +GoBlock dt=51 reason_string=19 stack=21 +ProcStop dt=192 +ProcStart dt=17579 p=0 p_seq=27 +ProcStop dt=18 +ProcStart dt=1930 p=1 p_seq=18 +ProcStop dt=15 +ProcStart dt=16696 p=1 p_seq=19 +GoUnblock dt=22 g=1 g_seq=61 stack=0 +GoStart dt=125 g=1 g_seq=62 +HeapAlloc dt=53 heapalloc_value=19641992 +HeapAlloc dt=19 heapalloc_value=19650184 +HeapAlloc dt=20 heapalloc_value=19658376 +HeapAlloc dt=23 heapalloc_value=19666568 +HeapAlloc dt=16 heapalloc_value=19674760 +HeapAlloc dt=16 heapalloc_value=19682952 +HeapAlloc dt=19 heapalloc_value=19691144 +HeapAlloc dt=15 heapalloc_value=19699336 +HeapAlloc dt=12 heapalloc_value=19707528 +HeapAlloc dt=12 heapalloc_value=19715720 +HeapAlloc dt=13 heapalloc_value=19723912 +HeapAlloc dt=18 heapalloc_value=19732104 +HeapAlloc dt=12 heapalloc_value=19740296 +HeapAlloc dt=12 heapalloc_value=19748488 +HeapAlloc dt=9 heapalloc_value=19756680 +HeapAlloc dt=6 heapalloc_value=19764872 +HeapAlloc dt=5 heapalloc_value=19773064 +HeapAlloc dt=6 heapalloc_value=19781256 +HeapAlloc dt=5 heapalloc_value=19789448 +HeapAlloc dt=10 heapalloc_value=19797640 +HeapAlloc dt=5 heapalloc_value=19805832 +HeapAlloc dt=6 heapalloc_value=19814024 +HeapAlloc dt=9 heapalloc_value=19822216 +HeapAlloc dt=6 heapalloc_value=19830408 +HeapAlloc dt=117 heapalloc_value=19838600 +HeapAlloc dt=17 heapalloc_value=19846792 +HeapAlloc dt=5 heapalloc_value=19854984 +HeapAlloc dt=10 heapalloc_value=19863176 +HeapAlloc dt=6 heapalloc_value=19871368 +HeapAlloc dt=6 heapalloc_value=19879560 +HeapAlloc dt=9 heapalloc_value=19887752 +HeapAlloc dt=6 heapalloc_value=19895944 +HeapAlloc dt=6 heapalloc_value=19904136 +HeapAlloc dt=5 heapalloc_value=19912328 +HeapAlloc dt=6 heapalloc_value=19920520 +HeapAlloc dt=10 heapalloc_value=19928712 +HeapAlloc dt=5 heapalloc_value=19936904 +HeapAlloc dt=6 heapalloc_value=19945096 +HeapAlloc dt=9 heapalloc_value=19953288 +HeapAlloc dt=6 heapalloc_value=19961480 +HeapAlloc dt=35 heapalloc_value=19969672 +HeapAlloc dt=7 heapalloc_value=19977864 +HeapAlloc dt=5 heapalloc_value=19986056 +HeapAlloc dt=468 heapalloc_value=19994248 +HeapAlloc dt=14 heapalloc_value=20002440 +HeapAlloc dt=6 heapalloc_value=20010632 +HeapAlloc dt=10 heapalloc_value=20018824 +HeapAlloc dt=5 heapalloc_value=20027016 +HeapAlloc dt=6 heapalloc_value=20035208 +HeapAlloc dt=11 heapalloc_value=20043400 +HeapAlloc dt=6 heapalloc_value=20051592 +HeapAlloc dt=5 heapalloc_value=20059784 +HeapAlloc dt=6 heapalloc_value=20067976 +HeapAlloc dt=5 heapalloc_value=20076168 +HeapAlloc dt=7 heapalloc_value=20084360 +HeapAlloc dt=6 heapalloc_value=20092552 +HeapAlloc dt=5 heapalloc_value=20100744 +HeapAlloc dt=6 heapalloc_value=20108936 +HeapAlloc dt=6 heapalloc_value=20117128 +HeapAlloc dt=5 heapalloc_value=20125320 +HeapAlloc dt=6 heapalloc_value=20133512 +HeapAlloc dt=6 heapalloc_value=20141704 +HeapAlloc dt=7 heapalloc_value=20149896 +HeapAlloc dt=5 heapalloc_value=20158088 +HeapAlloc dt=6 heapalloc_value=20166280 +HeapAlloc dt=5 heapalloc_value=20174472 +HeapAlloc dt=6 heapalloc_value=20182664 +HeapAlloc dt=6 heapalloc_value=20190856 +HeapAlloc dt=5 heapalloc_value=20199048 +HeapAlloc dt=5 heapalloc_value=20207240 +HeapAlloc dt=6 heapalloc_value=20215432 +HeapAlloc dt=6 heapalloc_value=20223624 +HeapAlloc dt=5 heapalloc_value=20231816 +HeapAlloc dt=6 heapalloc_value=20240008 +HeapAlloc dt=5 heapalloc_value=20248200 +HeapAlloc dt=5 heapalloc_value=20256392 +HeapAlloc dt=6 heapalloc_value=20264584 +HeapAlloc dt=5 heapalloc_value=20272776 +HeapAlloc dt=6 heapalloc_value=20280968 +HeapAlloc dt=5 heapalloc_value=20289160 +HeapAlloc dt=6 heapalloc_value=20297352 +HeapAlloc dt=5 heapalloc_value=20305544 +HeapAlloc dt=6 heapalloc_value=20313736 +HeapAlloc dt=5 heapalloc_value=20321928 +HeapAlloc dt=6 heapalloc_value=20330120 +HeapAlloc dt=5 heapalloc_value=20338312 +HeapAlloc dt=6 heapalloc_value=20346504 +HeapAlloc dt=6 heapalloc_value=20354696 +HeapAlloc dt=62 heapalloc_value=20362888 +HeapAlloc dt=7 heapalloc_value=20371080 +HeapAlloc dt=5 heapalloc_value=20379272 +HeapAlloc dt=6 heapalloc_value=20387464 +HeapAlloc dt=37 heapalloc_value=20395656 +HeapAlloc dt=7 heapalloc_value=20403848 +HeapAlloc dt=6 heapalloc_value=20412040 +HeapAlloc dt=5 heapalloc_value=20420232 +HeapAlloc dt=6 heapalloc_value=20428424 +HeapAlloc dt=5 heapalloc_value=20436616 +HeapAlloc dt=6 heapalloc_value=20444808 +HeapAlloc dt=5 heapalloc_value=20453000 +HeapAlloc dt=6 heapalloc_value=20461192 +HeapAlloc dt=5 heapalloc_value=20469384 +HeapAlloc dt=6 heapalloc_value=20477576 +HeapAlloc dt=5 heapalloc_value=20485768 +HeapAlloc dt=6 heapalloc_value=20493960 +HeapAlloc dt=5 heapalloc_value=20502152 +HeapAlloc dt=6 heapalloc_value=20510344 +HeapAlloc dt=9 heapalloc_value=20518536 +HeapAlloc dt=6 heapalloc_value=20526728 +HeapAlloc dt=5 heapalloc_value=20534920 +HeapAlloc dt=6 heapalloc_value=20543112 +HeapAlloc dt=5 heapalloc_value=20551304 +HeapAlloc dt=6 heapalloc_value=20559496 +HeapAlloc dt=5 heapalloc_value=20567688 +HeapAlloc dt=6 heapalloc_value=20575880 +HeapAlloc dt=5 heapalloc_value=20584072 +HeapAlloc dt=6 heapalloc_value=20592264 +HeapAlloc dt=38 heapalloc_value=20600456 +HeapAlloc dt=7 heapalloc_value=20608648 +HeapAlloc dt=5 heapalloc_value=20616840 +HeapAlloc dt=6 heapalloc_value=20625032 +HeapAlloc dt=5 heapalloc_value=20633224 +HeapAlloc dt=6 heapalloc_value=20641416 +HeapAlloc dt=5 heapalloc_value=20649608 +HeapAlloc dt=6 heapalloc_value=20657800 +GoBlock dt=12 reason_string=19 stack=21 +ProcStop dt=167 +ProcStart dt=17576 p=0 p_seq=29 +ProcStop dt=20 +ProcStart dt=3256 p=1 p_seq=22 +ProcStop dt=17 +ProcStart dt=16071 p=1 p_seq=23 +GoUnblock dt=21 g=1 g_seq=65 stack=0 +GoStart dt=124 g=1 g_seq=66 +HeapAlloc dt=51 heapalloc_value=22230664 +HeapAlloc dt=26 heapalloc_value=22238856 +HeapAlloc dt=16 heapalloc_value=22247048 +HeapAlloc dt=19 heapalloc_value=22255240 +HeapAlloc dt=19 heapalloc_value=22263432 +HeapAlloc dt=16 heapalloc_value=22271624 +HeapAlloc dt=16 heapalloc_value=22279816 +HeapAlloc dt=19 heapalloc_value=22288008 +HeapAlloc dt=18 heapalloc_value=22296200 +HeapAlloc dt=16 heapalloc_value=22304392 +HeapAlloc dt=12 heapalloc_value=22312584 +HeapAlloc dt=13 heapalloc_value=22320776 +HeapAlloc dt=15 heapalloc_value=22328968 +HeapAlloc dt=12 heapalloc_value=22337160 +HeapAlloc dt=6 heapalloc_value=22345352 +HeapAlloc dt=8 heapalloc_value=22353544 +HeapAlloc dt=6 heapalloc_value=22361736 +HeapAlloc dt=5 heapalloc_value=22369928 +HeapAlloc dt=25 heapalloc_value=22378120 +HeapAlloc dt=23 heapalloc_value=22386312 +HeapAlloc dt=9 heapalloc_value=22394504 +HeapAlloc dt=6 heapalloc_value=22402696 +HeapAlloc dt=5 heapalloc_value=22410888 +HeapAlloc dt=10 heapalloc_value=22419080 +HeapAlloc dt=5 heapalloc_value=22427272 +HeapAlloc dt=6 heapalloc_value=22435464 +HeapAlloc dt=5 heapalloc_value=22443656 +HeapAlloc dt=6 heapalloc_value=22451848 +HeapAlloc dt=8 heapalloc_value=22460040 +HeapAlloc dt=135 heapalloc_value=22468232 +HeapAlloc dt=8 heapalloc_value=22476424 +HeapAlloc dt=9 heapalloc_value=22484616 +HeapAlloc dt=6 heapalloc_value=22492808 +HeapAlloc dt=6 heapalloc_value=22501000 +HeapAlloc dt=6 heapalloc_value=22509192 +HeapAlloc dt=5 heapalloc_value=22517384 +HeapAlloc dt=9 heapalloc_value=22525576 +HeapAlloc dt=6 heapalloc_value=22533768 +HeapAlloc dt=6 heapalloc_value=22541960 +HeapAlloc dt=5 heapalloc_value=22550152 +HeapAlloc dt=6 heapalloc_value=22558344 +HeapAlloc dt=5 heapalloc_value=22566536 +HeapAlloc dt=6 heapalloc_value=22574728 +HeapAlloc dt=5 heapalloc_value=22582920 +HeapAlloc dt=9 heapalloc_value=22591112 +HeapAlloc dt=44 heapalloc_value=22599304 +HeapAlloc dt=7 heapalloc_value=22607496 +HeapAlloc dt=38 heapalloc_value=22615688 +HeapAlloc dt=6 heapalloc_value=22623880 +HeapAlloc dt=6 heapalloc_value=22632072 +HeapAlloc dt=6 heapalloc_value=22640264 +HeapAlloc dt=6 heapalloc_value=22648456 +HeapAlloc dt=6 heapalloc_value=22656648 +HeapAlloc dt=5 heapalloc_value=22664840 +HeapAlloc dt=6 heapalloc_value=22673032 +HeapAlloc dt=5 heapalloc_value=22681224 +HeapAlloc dt=6 heapalloc_value=22689416 +HeapAlloc dt=5 heapalloc_value=22697608 +HeapAlloc dt=6 heapalloc_value=22705800 +HeapAlloc dt=6 heapalloc_value=22713992 +HeapAlloc dt=5 heapalloc_value=22722184 +HeapAlloc dt=5 heapalloc_value=22730376 +HeapAlloc dt=6 heapalloc_value=22738568 +HeapAlloc dt=6 heapalloc_value=22746760 +HeapAlloc dt=5 heapalloc_value=22754952 +HeapAlloc dt=6 heapalloc_value=22763144 +HeapAlloc dt=6 heapalloc_value=22771336 +HeapAlloc dt=6 heapalloc_value=22779528 +HeapAlloc dt=5 heapalloc_value=22787720 +HeapAlloc dt=5 heapalloc_value=22795912 +HeapAlloc dt=6 heapalloc_value=22804104 +HeapAlloc dt=75 heapalloc_value=22812296 +HeapAlloc dt=7 heapalloc_value=22820488 +HeapAlloc dt=5 heapalloc_value=22828680 +HeapAlloc dt=6 heapalloc_value=22836872 +HeapAlloc dt=5 heapalloc_value=22845064 +HeapAlloc dt=6 heapalloc_value=22853256 +HeapAlloc dt=6 heapalloc_value=22861448 +HeapAlloc dt=5 heapalloc_value=22869640 +HeapAlloc dt=6 heapalloc_value=22877832 +HeapAlloc dt=5 heapalloc_value=22886024 +HeapAlloc dt=5 heapalloc_value=22894216 +HeapAlloc dt=6 heapalloc_value=22902408 +HeapAlloc dt=7 heapalloc_value=22910600 +HeapAlloc dt=6 heapalloc_value=22918792 +HeapAlloc dt=5 heapalloc_value=22926984 +HeapAlloc dt=6 heapalloc_value=22935176 +HeapAlloc dt=6 heapalloc_value=22943368 +HeapAlloc dt=6 heapalloc_value=22951560 +HeapAlloc dt=5 heapalloc_value=22959752 +HeapAlloc dt=6 heapalloc_value=22967944 +HeapAlloc dt=7 heapalloc_value=22976136 +HeapAlloc dt=5 heapalloc_value=22984328 +HeapAlloc dt=43 heapalloc_value=22992520 +HeapAlloc dt=7 heapalloc_value=23000712 +HeapAlloc dt=5 heapalloc_value=23008904 +HeapAlloc dt=6 heapalloc_value=23017096 +HeapAlloc dt=35 heapalloc_value=23025288 +HeapAlloc dt=7 heapalloc_value=23033480 +HeapAlloc dt=5 heapalloc_value=23041672 +HeapAlloc dt=5 heapalloc_value=23049864 +HeapAlloc dt=6 heapalloc_value=23058056 +HeapAlloc dt=5 heapalloc_value=23066248 +HeapAlloc dt=6 heapalloc_value=23074440 +HeapAlloc dt=5 heapalloc_value=23082632 +HeapAlloc dt=6 heapalloc_value=23090824 +HeapAlloc dt=5 heapalloc_value=23099016 +HeapAlloc dt=6 heapalloc_value=23107208 +HeapAlloc dt=5 heapalloc_value=23115400 +HeapAlloc dt=6 heapalloc_value=23123592 +HeapAlloc dt=5 heapalloc_value=23131784 +HeapAlloc dt=12 heapalloc_value=23139976 +HeapAlloc dt=5 heapalloc_value=23148168 +HeapAlloc dt=6 heapalloc_value=23156360 +HeapAlloc dt=5 heapalloc_value=23164552 +HeapAlloc dt=6 heapalloc_value=23172744 +HeapAlloc dt=5 heapalloc_value=23180936 +HeapAlloc dt=6 heapalloc_value=23189128 +HeapAlloc dt=5 heapalloc_value=23197320 +HeapAlloc dt=7 heapalloc_value=23205512 +HeapAlloc dt=5 heapalloc_value=23213704 +HeapAlloc dt=6 heapalloc_value=23221896 +HeapAlloc dt=38 heapalloc_value=23230088 +HeapAlloc dt=7 heapalloc_value=23238280 +HeapAlloc dt=5 heapalloc_value=23246472 +GoBlock dt=9 reason_string=19 stack=21 +ProcStop dt=164 +ProcStart dt=17494 p=0 p_seq=31 +ProcStop dt=25 +ProcStart dt=1701 p=1 p_seq=26 +ProcStop dt=16 +ProcStart dt=16748 p=2 p_seq=17 +GoUnblock dt=36 g=1 g_seq=71 stack=0 +GoStart dt=149 g=1 g_seq=72 +HeapAlloc dt=67 heapalloc_value=25302664 +HeapAlloc dt=38 heapalloc_value=25310856 +HeapAlloc dt=23 heapalloc_value=25319048 +HeapAlloc dt=17 heapalloc_value=25327240 +HeapAlloc dt=21 heapalloc_value=25335432 +HeapAlloc dt=17 heapalloc_value=25343624 +HeapAlloc dt=17 heapalloc_value=25351816 +HeapAlloc dt=16 heapalloc_value=25360008 +HeapAlloc dt=19 heapalloc_value=25368200 +HeapAlloc dt=16 heapalloc_value=25376392 +HeapAlloc dt=16 heapalloc_value=25384584 +HeapAlloc dt=16 heapalloc_value=25392776 +HeapAlloc dt=17 heapalloc_value=25400968 +HeapAlloc dt=16 heapalloc_value=25409160 +HeapAlloc dt=9 heapalloc_value=25417352 +HeapAlloc dt=9 heapalloc_value=25425544 +HeapAlloc dt=9 heapalloc_value=25433736 +HeapAlloc dt=10 heapalloc_value=25441928 +HeapAlloc dt=9 heapalloc_value=25450120 +HeapAlloc dt=10 heapalloc_value=25458312 +HeapAlloc dt=9 heapalloc_value=25466504 +HeapAlloc dt=6 heapalloc_value=25474696 +HeapAlloc dt=5 heapalloc_value=25482888 +HeapAlloc dt=6 heapalloc_value=25491080 +HeapAlloc dt=9 heapalloc_value=25499272 +HeapAlloc dt=6 heapalloc_value=25507464 +HeapAlloc dt=8 heapalloc_value=25515656 +HeapAlloc dt=7 heapalloc_value=25523848 +HeapAlloc dt=10 heapalloc_value=25532040 +HeapAlloc dt=9 heapalloc_value=25540232 +HeapAlloc dt=102 heapalloc_value=25548424 +HeapAlloc dt=7 heapalloc_value=25556616 +HeapAlloc dt=10 heapalloc_value=25564808 +HeapAlloc dt=5 heapalloc_value=25573000 +HeapAlloc dt=5 heapalloc_value=25581192 +HeapAlloc dt=36 heapalloc_value=25589384 +HeapAlloc dt=8 heapalloc_value=25597576 +HeapAlloc dt=5 heapalloc_value=25605768 +HeapAlloc dt=43 heapalloc_value=25613960 +HeapAlloc dt=7 heapalloc_value=25622152 +HeapAlloc dt=10 heapalloc_value=25630344 +HeapAlloc dt=6 heapalloc_value=25638536 +HeapAlloc dt=6 heapalloc_value=25646728 +HeapAlloc dt=6 heapalloc_value=25654920 +HeapAlloc dt=7 heapalloc_value=25663112 +HeapAlloc dt=5 heapalloc_value=25671304 +HeapAlloc dt=6 heapalloc_value=25679496 +HeapAlloc dt=41 heapalloc_value=25687688 +HeapAlloc dt=13 heapalloc_value=25695880 +HeapAlloc dt=5 heapalloc_value=25704072 +HeapAlloc dt=6 heapalloc_value=25712264 +HeapAlloc dt=13 heapalloc_value=25720456 +HeapAlloc dt=13 heapalloc_value=25728648 +HeapAlloc dt=5 heapalloc_value=25736840 +HeapAlloc dt=6 heapalloc_value=25745032 +HeapAlloc dt=6 heapalloc_value=25753224 +HeapAlloc dt=9 heapalloc_value=25761416 +HeapAlloc dt=6 heapalloc_value=25769608 +HeapAlloc dt=5 heapalloc_value=25777800 +HeapAlloc dt=6 heapalloc_value=25785992 +HeapAlloc dt=5 heapalloc_value=25794184 +HeapAlloc dt=6 heapalloc_value=25802376 +HeapAlloc dt=5 heapalloc_value=25810568 +HeapAlloc dt=6 heapalloc_value=25818760 +HeapAlloc dt=10 heapalloc_value=25826952 +HeapAlloc dt=6 heapalloc_value=25835144 +HeapAlloc dt=6 heapalloc_value=25843336 +HeapAlloc dt=5 heapalloc_value=25851528 +HeapAlloc dt=6 heapalloc_value=25859720 +HeapAlloc dt=5 heapalloc_value=25867912 +HeapAlloc dt=6 heapalloc_value=25876104 +HeapAlloc dt=6 heapalloc_value=25884296 +HeapAlloc dt=7 heapalloc_value=25892488 +HeapAlloc dt=6 heapalloc_value=25900680 +HeapAlloc dt=5 heapalloc_value=25908872 +HeapAlloc dt=6 heapalloc_value=25917064 +HeapAlloc dt=6 heapalloc_value=25925256 +HeapAlloc dt=5 heapalloc_value=25933448 +HeapAlloc dt=6 heapalloc_value=25941640 +HeapAlloc dt=6 heapalloc_value=25949832 +HeapAlloc dt=6 heapalloc_value=25958024 +HeapAlloc dt=5 heapalloc_value=25966216 +HeapAlloc dt=6 heapalloc_value=25974408 +HeapAlloc dt=5 heapalloc_value=25982600 +HeapAlloc dt=6 heapalloc_value=25990792 +HeapAlloc dt=6 heapalloc_value=25998984 +HeapAlloc dt=5 heapalloc_value=26007176 +HeapAlloc dt=6 heapalloc_value=26015368 +HeapAlloc dt=6 heapalloc_value=26023560 +HeapAlloc dt=6 heapalloc_value=26031752 +HeapAlloc dt=5 heapalloc_value=26039944 +HeapAlloc dt=6 heapalloc_value=26048136 +HeapAlloc dt=5 heapalloc_value=26056328 +HeapAlloc dt=6 heapalloc_value=26064520 +HeapAlloc dt=94 heapalloc_value=26072712 +HeapAlloc dt=7 heapalloc_value=26080904 +HeapAlloc dt=5 heapalloc_value=26089096 +HeapAlloc dt=6 heapalloc_value=26097288 +HeapAlloc dt=6 heapalloc_value=26105480 +HeapAlloc dt=5 heapalloc_value=26113672 +HeapAlloc dt=6 heapalloc_value=26121864 +HeapAlloc dt=6 heapalloc_value=26130056 +HeapAlloc dt=5 heapalloc_value=26138248 +HeapAlloc dt=6 heapalloc_value=26146440 +HeapAlloc dt=6 heapalloc_value=26154632 +HeapAlloc dt=5 heapalloc_value=26162824 +HeapAlloc dt=1696 heapalloc_value=26171016 +HeapAlloc dt=7 heapalloc_value=26179208 +HeapAlloc dt=6 heapalloc_value=26187400 +HeapAlloc dt=5 heapalloc_value=26195592 +HeapAlloc dt=6 heapalloc_value=26203784 +HeapAlloc dt=5 heapalloc_value=26211976 +HeapAlloc dt=47 heapalloc_value=26220168 +HeapAlloc dt=8 heapalloc_value=26228360 +HeapAlloc dt=5 heapalloc_value=26236552 +HeapAlloc dt=6 heapalloc_value=26244744 +HeapAlloc dt=6 heapalloc_value=26252936 +HeapAlloc dt=5 heapalloc_value=26261128 +HeapAlloc dt=6 heapalloc_value=26269320 +HeapAlloc dt=5 heapalloc_value=26277512 +HeapAlloc dt=6 heapalloc_value=26285704 +HeapAlloc dt=6 heapalloc_value=26293896 +HeapAlloc dt=5 heapalloc_value=26302088 +HeapAlloc dt=6 heapalloc_value=26310280 +HeapAlloc dt=6 heapalloc_value=26318472 +HeapAlloc dt=30 heapalloc_value=26326360 +HeapAlloc dt=30 heapalloc_value=26334536 +HeapAlloc dt=24 heapalloc_value=26336904 +GoCreate dt=72 new_g=34 new_stack=47 stack=48 +GoCreate dt=183 new_g=35 new_stack=47 stack=48 +GoCreate dt=15 new_g=36 new_stack=47 stack=48 +GoCreate dt=12 new_g=37 new_stack=47 stack=48 +GoCreate dt=14 new_g=38 new_stack=47 stack=48 +HeapAlloc dt=25 heapalloc_value=26344200 +GoCreate dt=9 new_g=39 new_stack=47 stack=48 +GoCreate dt=13 new_g=40 new_stack=47 stack=48 +GoCreate dt=4 new_g=41 new_stack=47 stack=48 +HeapAlloc dt=17 heapalloc_value=26351912 +GoBlock dt=15 reason_string=10 stack=49 +GoStart dt=5 g=41 g_seq=1 +GoStop dt=307427 reason_string=16 stack=51 +GoStart dt=34 g=41 g_seq=2 +GoStop dt=315328 reason_string=16 stack=50 +GoStart dt=10 g=41 g_seq=3 +GoDestroy dt=158464 +ProcStop dt=40 +EventBatch gen=1 m=1709039 time=7689670530705 size=53 +GoUnblock dt=117 g=4 g_seq=3 stack=0 +GoUnblock dt=157408 g=4 g_seq=7 stack=0 +GoUnblock dt=157553 g=4 g_seq=11 stack=0 +ProcSteal dt=947714 p=7 p_seq=9 m=1709048 +ProcSteal dt=646055 p=7 p_seq=13 m=1709046 +ProcSteal dt=5677 p=5 p_seq=11 m=1709046 +ProcSteal dt=1312 p=6 p_seq=9 m=1709048 +EventBatch gen=1 m=1709038 time=7689670147327 size=336 +ProcStatus dt=56 p=0 pstatus=1 +GoStatus dt=4 g=1 m=1709038 gstatus=2 +ProcsChange dt=184 procs_value=8 stack=1 +STWBegin dt=81 kind_string=21 stack=2 +HeapGoal dt=5 heapgoal_value=4194304 +ProcStatus dt=2 p=1 pstatus=2 +ProcStatus dt=1 p=2 pstatus=2 +ProcStatus dt=1 p=3 pstatus=2 ProcStatus dt=1 p=4 pstatus=2 ProcStatus dt=1 p=5 pstatus=2 ProcStatus dt=1 p=6 pstatus=2 -ProcStatus dt=2 p=7 pstatus=2 -ProcsChange dt=65 procs_value=8 stack=3 -STWEnd dt=23 -HeapAlloc dt=190 heapalloc_value=1638400 -GoCreate dt=157 new_g=19 new_stack=4 stack=5 -GoCreate dt=565 new_g=20 new_stack=6 stack=7 -HeapAlloc dt=31 heapalloc_value=1646592 -GoCreate dt=523 new_g=21 new_stack=8 stack=9 -GoCreate dt=702 new_g=22 new_stack=10 stack=12 -GoCreate dt=377 new_g=23 new_stack=13 stack=14 -GoBlock dt=18 reason_string=10 stack=15 -GoStart dt=12 g=23 g_seq=1 -GoStop dt=222604 reason_string=16 stack=19 -GoStart dt=399 g=23 g_seq=2 -GoUnblock dt=89532 g=1 g_seq=1 stack=20 -GoDestroy dt=165 -GoStart dt=14 g=1 g_seq=2 -GoBlock dt=21 reason_string=19 stack=21 -ProcStop dt=257 -ProcStart dt=60623 p=1 p_seq=4 -GoStart dt=5704 g=5 g_seq=1 -HeapAlloc dt=34 heapalloc_value=4046848 -GoBlock dt=461 reason_string=15 stack=26 -ProcStop dt=25 -ProcStart dt=294 p=0 p_seq=14 -GoStart dt=9 g=6 g_seq=1 -GoBlock dt=506 reason_string=15 stack=26 -ProcStop dt=8 -ProcStart dt=230 p=0 p_seq=17 -ProcStop dt=23 -ProcStart dt=1406 p=0 p_seq=18 -GoStart dt=339 g=34 g_seq=1 -GoBlock dt=291 reason_string=15 stack=26 -ProcStop dt=13 -ProcStart dt=465 p=1 p_seq=10 -GoStart dt=173 g=8 g_seq=1 -GoBlock dt=120 reason_string=15 stack=26 -ProcStop dt=12 -ProcStart dt=353 p=0 p_seq=24 -ProcStop dt=17 -ProcStart dt=968 p=0 p_seq=25 -ProcStop dt=6 -ProcStart dt=554 p=0 p_seq=26 -GoUnblock dt=16 g=25 g_seq=2 stack=0 -GoStart dt=334 g=25 g_seq=3 +ProcStatus dt=1 p=7 pstatus=2 +ProcsChange dt=51 procs_value=8 stack=3 +STWEnd dt=74 +GoCreate dt=216 new_g=6 new_stack=4 stack=5 +HeapAlloc dt=174 heapalloc_value=2752512 +GoCreate dt=140 new_g=7 new_stack=6 stack=7 +HeapAlloc dt=16 heapalloc_value=2760704 +GoCreate dt=11 new_g=8 new_stack=8 stack=9 +GoCreate dt=197 new_g=9 new_stack=10 stack=11 +GoCreate dt=18 new_g=10 new_stack=12 stack=13 +GoBlock dt=159 reason_string=10 stack=14 +GoStart dt=10 g=10 g_seq=1 +GoStop dt=224159 reason_string=16 stack=19 +GoStart dt=105 g=10 g_seq=2 +GoUnblock dt=88262 g=1 g_seq=1 stack=20 +GoDestroy dt=111 +GoStart dt=10 g=1 g_seq=2 +GoBlock dt=18 reason_string=19 stack=21 +ProcStop dt=177 +ProcStart dt=22598 p=0 p_seq=2 +ProcStop dt=20 +ProcStart dt=30 p=2 p_seq=2 +ProcStop dt=1158 +ProcStart dt=1116 p=0 p_seq=4 +GoUnblock dt=19 g=25 g_seq=2 stack=0 +GoStart dt=130 g=25 g_seq=3 GoLabel dt=1 label_string=2 -GoBlock dt=2066 reason_string=15 stack=26 -ProcStop dt=24 -ProcStart dt=202889 p=4 p_seq=3 -GoUnblock dt=53 g=34 g_seq=2 stack=0 -HeapAlloc dt=50 heapalloc_value=16498416 -HeapAlloc dt=32 heapalloc_value=16501200 -HeapAlloc dt=4276 heapalloc_value=16697040 -GoStart dt=1376 g=34 g_seq=3 -GoLabel dt=2 label_string=4 -HeapAlloc dt=69 heapalloc_value=16713136 -GoBlock dt=35 reason_string=10 stack=48 -ProcStop dt=50 -ProcStart dt=111183 p=5 p_seq=3 -HeapAlloc dt=56 heapalloc_value=23234784 -HeapAlloc dt=25 heapalloc_value=23242144 -HeapAlloc dt=343 heapalloc_value=23249312 -GoStart dt=1532 g=16 g_seq=1 -GoStop dt=302128 reason_string=16 stack=52 -GoStart dt=13 g=16 g_seq=2 -GoStop dt=316412 reason_string=16 stack=52 -GoStart dt=10 g=16 g_seq=3 -GoDestroy dt=162712 -ProcStop dt=30 -ProcStart dt=798510 p=5 p_seq=5 +GoBlock dt=1809 reason_string=15 stack=27 +ProcStop dt=35 +ProcStart dt=45680 p=3 p_seq=4 +HeapAlloc dt=46 heapalloc_value=7659248 +HeapAlloc dt=48 heapalloc_value=7663408 +HeapAlloc dt=6065 heapalloc_value=7876144 +GoStart dt=2865 g=4 g_seq=6 +GoBlock dt=31 reason_string=15 stack=32 +ProcStop dt=49 +ProcStart dt=1490 p=3 p_seq=5 ProcStop dt=29 -ProcStart dt=4349 p=6 p_seq=21 -ProcStop dt=41 -ProcStart dt=16784 p=6 p_seq=22 -GoUnblock dt=14 g=82 g_seq=2 stack=0 -GoStart dt=161 g=82 g_seq=3 -GoSyscallBegin dt=27 p_seq=23 stack=93 -GoSyscallEnd dt=663 -GoSyscallBegin dt=102 p_seq=24 stack=94 -GoSyscallEnd dt=258 -GoDestroy dt=9 -ProcStop dt=24 -EventBatch gen=1 m=18446744073709551615 time=420903766597 size=28 -GoStatus dt=69 g=2 m=18446744073709551615 gstatus=4 -GoStatus dt=2 g=18 m=18446744073709551615 gstatus=4 -EventBatch gen=1 m=18446744073709551615 time=420903767161 size=4524 +ProcStart dt=2071 p=1 p_seq=10 +ProcStop dt=21 +ProcStart dt=143297 p=2 p_seq=13 +GoUnblock dt=21 g=22 g_seq=6 stack=0 +GoStart dt=177 g=22 g_seq=7 +GoLabel dt=2 label_string=2 +GoBlock dt=2058 reason_string=15 stack=27 +ProcStop dt=2352 +ProcStart dt=162401 p=5 p_seq=2 +HeapAlloc dt=51 heapalloc_value=26353960 +HeapAlloc dt=42 heapalloc_value=26360360 +HeapAlloc dt=6510 heapalloc_value=26367784 +GoStart dt=1039 g=40 g_seq=1 +GoStop dt=297000 reason_string=16 stack=50 +GoStart dt=15 g=40 g_seq=2 +GoStop dt=315522 reason_string=16 stack=50 +GoStart dt=7 g=40 g_seq=3 +GoDestroy dt=168735 +ProcStop dt=43 +ProcStart dt=799345 p=6 p_seq=6 +ProcStop dt=33 +ProcStart dt=1506 p=6 p_seq=10 +ProcStop dt=26 +ProcStart dt=18634 p=7 p_seq=33 +ProcStop dt=34 +EventBatch gen=1 m=18446744073709551615 time=7689672466616 size=28 +GoStatus dt=61 g=2 m=18446744073709551615 gstatus=4 +GoStatus dt=3 g=5 m=18446744073709551615 gstatus=4 +EventBatch gen=1 m=18446744073709551615 time=7689672467258 size=4540 Stacks -Stack id=20 nframes=3 - pc=4700772 func=24 file=25 line=81 - pc=5073062 func=26 file=25 line=87 - pc=5072984 func=27 file=28 line=105 -Stack id=71 nframes=21 - pc=4746903 func=29 file=30 line=736 - pc=4807597 func=31 file=32 line=181 - pc=4807573 func=33 file=34 line=736 - pc=4807216 func=35 file=34 line=160 - pc=4813553 func=36 file=37 line=29 - pc=4813545 func=38 file=39 line=118 - pc=4735439 func=40 file=41 line=335 - pc=5034447 func=42 file=41 line=354 - pc=5034407 func=43 file=44 line=55 - pc=5039623 func=45 file=46 line=40 - pc=5060942 func=47 file=48 line=373 - pc=4696033 func=49 file=50 line=74 - pc=5026795 func=51 file=50 line=65 - pc=5026766 func=52 file=48 line=373 - pc=5040478 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=21 nframes=3 - pc=4633684 func=64 file=65 line=195 - pc=5073512 func=66 file=28 line=125 - pc=5070323 func=63 file=28 line=32 -Stack id=38 nframes=9 - pc=4578453 func=67 file=68 line=352 - pc=4353540 func=69 file=70 line=521 - pc=4290908 func=71 file=72 line=147 - pc=4288626 func=73 file=74 line=182 - pc=4252996 func=75 file=76 line=948 - pc=4254486 func=77 file=76 line=1149 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=34 nframes=1 - pc=4314212 func=80 file=81 line=1446 -Stack id=13 nframes=1 - pc=5072896 func=27 file=28 line=102 -Stack id=48 nframes=2 - pc=4307927 func=82 file=81 line=807 - pc=4314212 func=80 file=81 line=1446 -Stack id=65 nframes=7 - pc=4747354 func=83 file=30 line=964 - pc=4808839 func=84 file=32 line=209 - pc=4808831 func=33 file=34 line=736 - pc=4808384 func=85 file=34 line=380 - pc=4813744 func=86 file=37 line=46 - pc=4813736 func=87 file=39 line=183 - pc=5072644 func=88 file=28 line=89 -Stack id=63 nframes=3 - pc=4746903 func=29 file=30 line=736 - pc=5072295 func=31 file=32 line=181 - pc=5072241 func=89 file=28 line=90 -Stack id=85 nframes=15 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052502 func=94 file=95 line=21 - pc=5048264 func=96 file=97 line=245 - pc=5050832 func=98 file=58 line=114 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=1 nframes=4 - pc=4576875 func=107 file=68 line=255 - pc=4561423 func=108 file=109 line=237 - pc=5069285 func=110 file=111 line=125 - pc=5070075 func=63 file=28 line=20 -Stack id=7 nframes=4 - pc=4567652 func=112 file=109 line=868 - pc=4561732 func=108 file=109 line=258 - pc=5069285 func=110 file=111 line=125 - pc=5070075 func=63 file=28 line=20 -Stack id=88 nframes=8 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052074 func=113 file=114 line=15 - pc=5048202 func=96 file=97 line=239 - pc=5051452 func=115 file=58 line=156 - pc=5048431 func=116 file=97 line=315 - pc=5071227 func=117 file=28 line=59 -Stack id=16 nframes=3 - pc=4225233 func=118 file=119 line=442 - pc=4568106 func=120 file=109 line=928 - pc=4567719 func=121 file=109 line=871 -Stack id=95 nframes=8 - pc=4746468 func=122 file=30 line=335 - pc=4806160 func=123 file=124 line=24 - pc=4806130 func=125 file=34 line=81 - pc=4803890 func=126 file=127 line=213 - pc=4806308 func=128 file=34 line=104 - pc=4988529 func=129 file=130 line=37 - pc=5026133 func=131 file=48 line=203 - pc=5071131 func=63 file=28 line=74 -Stack id=94 nframes=8 - pc=4746468 func=122 file=30 line=335 - pc=4806160 func=123 file=124 line=24 - pc=4806130 func=125 file=34 line=81 - pc=4803890 func=126 file=127 line=213 - pc=4806308 func=128 file=34 line=104 - pc=4988529 func=129 file=130 line=37 - pc=5026133 func=131 file=48 line=203 - pc=5071317 func=117 file=28 line=66 -Stack id=43 nframes=6 - pc=4637735 func=132 file=133 line=474 - pc=4307012 func=134 file=81 line=684 - pc=4255286 func=77 file=76 line=1292 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=26 nframes=2 - pc=4433005 func=135 file=136 line=402 - pc=4313604 func=80 file=81 line=1310 -Stack id=66 nframes=2 - pc=4221878 func=137 file=119 line=145 - pc=5072533 func=89 file=28 line=94 -Stack id=55 nframes=1 - pc=5070565 func=63 file=28 line=47 -Stack id=42 nframes=4 - pc=4255286 func=77 file=76 line=1292 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=14 nframes=1 - pc=5070300 func=63 file=28 line=28 -Stack id=56 nframes=2 - pc=4225233 func=118 file=119 line=442 - pc=5070586 func=63 file=28 line=48 -Stack id=24 nframes=6 - pc=4313307 func=138 file=81 line=1234 - pc=4306780 func=134 file=81 line=663 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=45 nframes=1 - pc=0 func=0 file=0 line=0 -Stack id=44 nframes=5 - pc=4307322 func=134 file=81 line=746 - pc=4255286 func=77 file=76 line=1292 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=6 nframes=1 - pc=4567680 func=121 file=109 line=868 -Stack id=11 nframes=3 - pc=4225233 func=118 file=119 line=442 - pc=4568106 func=120 file=109 line=928 - pc=4570874 func=140 file=141 line=54 -Stack id=4 nframes=1 - pc=4570816 func=140 file=141 line=42 -Stack id=22 nframes=4 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=83 nframes=15 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5047242 func=142 file=143 line=88 - pc=5048249 func=96 file=97 line=244 - pc=5050832 func=98 file=58 line=114 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=37 nframes=3 - pc=4310566 func=144 file=81 line=1087 - pc=4308676 func=82 file=81 line=927 - pc=4314212 func=80 file=81 line=1446 -Stack id=9 nframes=2 - pc=5069359 func=110 file=111 line=128 - pc=5070075 func=63 file=28 line=20 -Stack id=35 nframes=2 - pc=4308599 func=82 file=81 line=915 - pc=4314212 func=80 file=81 line=1446 -Stack id=72 nframes=20 - pc=4746468 func=122 file=30 line=335 - pc=4806160 func=123 file=124 line=24 - pc=4806130 func=125 file=34 line=81 - pc=4803890 func=126 file=127 line=213 - pc=4806308 func=128 file=34 line=104 - pc=4816631 func=145 file=146 line=315 - pc=5040044 func=147 file=37 line=23 - pc=5040027 func=148 file=44 line=23 - pc=5039886 func=45 file=46 line=53 - pc=5060942 func=47 file=48 line=373 - pc=4696033 func=49 file=50 line=74 - pc=5026795 func=51 file=50 line=65 - pc=5026766 func=52 file=48 line=373 - pc=5040478 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=3 nframes=4 - pc=4442379 func=149 file=136 line=1382 - pc=4561715 func=108 file=109 line=255 - pc=5069285 func=110 file=111 line=125 - pc=5070075 func=63 file=28 line=20 -Stack id=19 nframes=1 - pc=5072969 func=27 file=28 line=104 -Stack id=61 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737158 func=151 file=152 line=106 - pc=4806697 func=153 file=34 line=129 - pc=5072228 func=154 file=146 line=90 - pc=5072241 func=89 file=28 line=90 -Stack id=79 nframes=8 - pc=4748798 func=155 file=30 line=1421 - pc=4743029 func=156 file=157 line=684 - pc=4810951 func=158 file=159 line=17 - pc=4809725 func=160 file=34 line=602 - pc=4992776 func=161 file=162 line=172 - pc=5051421 func=115 file=58 line=152 - pc=5048431 func=116 file=97 line=315 - pc=5071227 func=117 file=28 line=59 -Stack id=91 nframes=8 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052502 func=94 file=95 line=21 - pc=5048264 func=96 file=97 line=245 - pc=5051452 func=115 file=58 line=156 - pc=5048431 func=116 file=97 line=315 - pc=5071227 func=117 file=28 line=59 -Stack id=62 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737232 func=151 file=152 line=118 - pc=4806697 func=153 file=34 line=129 - pc=5072228 func=154 file=146 line=90 - pc=5072241 func=89 file=28 line=90 -Stack id=75 nframes=9 - pc=4748164 func=163 file=30 line=1213 - pc=5044432 func=164 file=54 line=170 - pc=5040531 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=73 nframes=11 - pc=4750130 func=90 file=30 line=1488 - pc=5046866 func=91 file=32 line=462 - pc=5046876 func=165 file=166 line=28 - pc=5043829 func=164 file=54 line=152 - pc=5040531 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=87 nframes=4 - pc=4807527 func=35 file=34 line=164 - pc=4988612 func=167 file=130 line=55 - pc=5025316 func=168 file=48 line=179 - pc=5071115 func=63 file=28 line=73 -Stack id=84 nframes=15 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052347 func=94 file=95 line=18 - pc=5048264 func=96 file=97 line=245 - pc=5050832 func=98 file=58 line=114 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=92 nframes=2 - pc=4633684 func=64 file=65 line=195 - pc=5071262 func=117 file=28 line=63 -Stack id=40 nframes=2 - pc=4352030 func=169 file=136 line=408 - pc=4351996 func=170 file=70 line=317 -Stack id=89 nframes=8 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5047242 func=142 file=143 line=88 - pc=5048249 func=96 file=97 line=244 - pc=5051452 func=115 file=58 line=156 - pc=5048431 func=116 file=97 line=315 - pc=5071227 func=117 file=28 line=59 -Stack id=53 nframes=3 - pc=4700772 func=24 file=25 line=81 - pc=5071718 func=26 file=25 line=87 - pc=5071644 func=171 file=28 line=41 -Stack id=81 nframes=16 - pc=4749883 func=172 file=30 line=1478 - pc=4744812 func=173 file=32 line=313 - pc=4991029 func=174 file=162 line=149 - pc=5041979 func=175 file=54 line=124 - pc=5040762 func=53 file=54 line=70 - pc=5014167 func=55 file=56 line=154 - pc=5050219 func=98 file=58 line=78 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=23 nframes=1 - pc=4313376 func=80 file=81 line=1276 -Stack id=52 nframes=1 - pc=5071629 func=171 file=28 line=40 -Stack id=28 nframes=6 - pc=4637735 func=132 file=133 line=474 - pc=4307012 func=134 file=81 line=684 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=12 nframes=1 - pc=5070234 func=63 file=28 line=27 -Stack id=76 nframes=1 - pc=5071200 func=117 file=28 line=58 -Stack id=60 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737232 func=151 file=152 line=118 - pc=4815748 func=176 file=146 line=218 - pc=4817144 func=177 file=178 line=21 - pc=5072014 func=89 file=28 line=82 -Stack id=64 nframes=1 - pc=5072608 func=88 file=28 line=89 -Stack id=47 nframes=11 - pc=4578453 func=67 file=68 line=352 - pc=4353540 func=69 file=70 line=521 - pc=4352604 func=179 file=70 line=389 - pc=4358543 func=180 file=70 line=926 - pc=4290148 func=71 file=72 line=84 - pc=4288626 func=73 file=74 line=182 - pc=4252996 func=75 file=76 line=948 - pc=4254486 func=77 file=76 line=1149 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=68 nframes=19 - pc=4745679 func=181 file=30 line=98 - pc=4814954 func=182 file=157 line=280 - pc=4814931 func=183 file=184 line=15 - pc=4816145 func=185 file=146 line=272 - pc=4814141 func=186 file=39 line=334 - pc=5034884 func=187 file=39 line=314 - pc=5034871 func=188 file=44 line=76 - pc=5039575 func=45 file=46 line=35 - pc=5060942 func=47 file=48 line=373 - pc=4696033 func=49 file=50 line=74 - pc=5026795 func=51 file=50 line=65 - pc=5026766 func=52 file=48 line=373 - pc=5040478 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=77 nframes=1 - pc=5070924 func=63 file=28 line=58 -Stack id=78 nframes=16 - pc=4749256 func=189 file=30 line=1442 - pc=4744549 func=190 file=32 line=298 - pc=4989295 func=174 file=162 line=59 - pc=5041979 func=175 file=54 line=124 - pc=5040762 func=53 file=54 line=70 - pc=5014167 func=55 file=56 line=154 - pc=5050219 func=98 file=58 line=78 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=54 nframes=1 - pc=5071968 func=89 file=28 line=81 -Stack id=32 nframes=2 - pc=4342189 func=191 file=192 line=425 - pc=4343672 func=193 file=192 line=658 -Stack id=57 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737158 func=151 file=152 line=106 - pc=4815748 func=176 file=146 line=218 - pc=4817109 func=177 file=178 line=21 - pc=5072014 func=89 file=28 line=82 -Stack id=74 nframes=10 - pc=4749032 func=194 file=30 line=1432 - pc=4744421 func=195 file=32 line=290 - pc=5044292 func=164 file=54 line=167 - pc=5040531 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=18 nframes=1 - pc=5069604 func=196 file=111 line=130 -Stack id=5 nframes=4 - pc=4570709 func=197 file=141 line=42 - pc=4561720 func=108 file=109 line=257 - pc=5069285 func=110 file=111 line=125 - pc=5070075 func=63 file=28 line=20 -Stack id=90 nframes=8 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052347 func=94 file=95 line=18 - pc=5048264 func=96 file=97 line=245 - pc=5051452 func=115 file=58 line=156 - pc=5048431 func=116 file=97 line=315 - pc=5071227 func=117 file=28 line=59 -Stack id=33 nframes=7 - pc=4307927 func=82 file=81 line=807 - pc=4324210 func=198 file=199 line=564 - pc=4255603 func=200 file=76 line=1337 - pc=4253576 func=77 file=76 line=1025 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=70 nframes=19 - pc=4746660 func=150 file=30 line=432 - pc=4737232 func=151 file=152 line=118 - pc=4815748 func=176 file=146 line=218 - pc=4816367 func=185 file=146 line=301 - pc=4814141 func=186 file=39 line=334 - pc=5034884 func=187 file=39 line=314 - pc=5034871 func=188 file=44 line=76 - pc=5039575 func=45 file=46 line=35 - pc=5060942 func=47 file=48 line=373 - pc=4696033 func=49 file=50 line=74 - pc=5026795 func=51 file=50 line=65 - pc=5026766 func=52 file=48 line=373 - pc=5040478 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=8 nframes=1 - pc=5069536 func=196 file=111 line=128 -Stack id=15 nframes=2 - pc=4701031 func=201 file=25 line=116 - pc=5070313 func=63 file=28 line=29 Stack id=86 nframes=7 - pc=4746903 func=29 file=30 line=736 - pc=4807597 func=31 file=32 line=181 - pc=4807573 func=33 file=34 line=736 - pc=4807216 func=35 file=34 line=160 - pc=4988612 func=167 file=130 line=55 - pc=5025316 func=168 file=48 line=179 - pc=5071115 func=63 file=28 line=73 -Stack id=67 nframes=1 - pc=0 func=0 file=0 line=0 -Stack id=80 nframes=15 - pc=4990958 func=202 file=34 line=683 - pc=4990987 func=174 file=162 line=141 - pc=5041979 func=175 file=54 line=124 - pc=5040762 func=53 file=54 line=70 - pc=5014167 func=55 file=56 line=154 - pc=5050219 func=98 file=58 line=78 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=93 nframes=7 - pc=4747354 func=83 file=30 line=964 - pc=4808839 func=84 file=32 line=209 - pc=4808831 func=33 file=34 line=736 - pc=4808384 func=85 file=34 line=380 - pc=4988868 func=203 file=130 line=96 - pc=5025764 func=204 file=48 line=191 - pc=5071301 func=117 file=28 line=65 -Stack id=46 nframes=1 - pc=5070323 func=63 file=28 line=32 -Stack id=25 nframes=5 - pc=4306780 func=134 file=81 line=663 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=58 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737232 func=151 file=152 line=118 - pc=4815748 func=176 file=146 line=218 - pc=4817109 func=177 file=178 line=21 - pc=5072014 func=89 file=28 line=82 -Stack id=39 nframes=9 - pc=4365530 func=205 file=206 line=958 - pc=4291537 func=207 file=72 line=254 - pc=4291127 func=71 file=72 line=170 - pc=4288626 func=73 file=74 line=182 - pc=4252996 func=75 file=76 line=948 - pc=4254486 func=77 file=76 line=1149 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=2 nframes=3 - pc=4561444 func=108 file=109 line=238 - pc=5069285 func=110 file=111 line=125 - pc=5070075 func=63 file=28 line=20 -Stack id=50 nframes=1 - pc=5070361 func=63 file=28 line=38 + pc=4754167 func=24 file=25 line=736 + pc=4814861 func=26 file=27 line=181 + pc=4814837 func=28 file=29 line=736 + pc=4814480 func=30 file=29 line=160 + pc=4996132 func=31 file=32 line=55 + pc=5032836 func=33 file=34 line=179 + pc=5078635 func=35 file=36 line=73 +Stack id=77 nframes=16 + pc=4756520 func=37 file=25 line=1442 + pc=4751813 func=38 file=27 line=298 + pc=4996815 func=39 file=40 line=59 + pc=5049499 func=41 file=42 line=124 + pc=5048282 func=43 file=42 line=70 + pc=5021687 func=44 file=45 line=154 + pc=5057739 func=46 file=47 line=85 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=13 nframes=1 + pc=5077820 func=35 file=36 line=28 +Stack id=65 nframes=2 + pc=4224086 func=57 file=58 line=145 + pc=5080123 func=59 file=36 line=94 +Stack id=21 nframes=3 + pc=4640852 func=60 file=61 line=195 + pc=5081128 func=62 file=36 line=125 + pc=5077843 func=35 file=36 line=32 +Stack id=11 nframes=1 + pc=5077754 func=35 file=36 line=27 Stack id=10 nframes=1 - pc=5072672 func=208 file=28 line=97 -Stack id=41 nframes=4 - pc=4255286 func=77 file=76 line=1292 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=31 nframes=3 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=36 nframes=4 - pc=4637735 func=132 file=133 line=474 - pc=4309597 func=144 file=81 line=965 - pc=4308676 func=82 file=81 line=927 - pc=4314212 func=80 file=81 line=1446 + pc=5080288 func=63 file=36 line=97 +Stack id=44 nframes=2 + pc=4354430 func=64 file=65 line=408 + pc=4354396 func=66 file=67 line=318 +Stack id=51 nframes=3 + pc=4658586 func=68 file=69 line=53 + pc=5080816 func=70 file=36 line=110 + pc=5079149 func=71 file=36 line=40 +Stack id=36 nframes=7 + pc=4310007 func=72 file=73 line=806 + pc=4326610 func=74 file=75 line=562 + pc=4258131 func=76 file=77 line=1353 + pc=4255947 func=78 file=77 line=1025 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=57 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744496 func=82 file=83 line=118 + pc=4823012 func=84 file=85 line=218 + pc=4824373 func=86 file=87 line=21 + pc=5079543 func=59 file=36 line=82 +Stack id=16 nframes=7 + pc=4754618 func=88 file=25 line=964 + pc=4816103 func=89 file=27 line=209 + pc=4816095 func=28 file=29 line=736 + pc=4815648 func=90 file=29 line=380 + pc=4821008 func=91 file=92 line=46 + pc=4821000 func=93 file=94 line=189 + pc=5077114 func=95 file=96 line=134 +Stack id=63 nframes=1 + pc=5080224 func=97 file=36 line=89 +Stack id=2 nframes=3 + pc=4567556 func=98 file=99 line=239 + pc=5076805 func=100 file=96 line=125 + pc=5077595 func=35 file=36 line=20 +Stack id=80 nframes=15 + pc=4998478 func=101 file=29 line=683 + pc=4998507 func=39 file=40 line=141 + pc=5049499 func=41 file=42 line=124 + pc=5048282 func=43 file=42 line=70 + pc=5021687 func=44 file=45 line=154 + pc=5057739 func=46 file=47 line=85 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=47 nframes=1 + pc=5079072 func=71 file=36 line=38 +Stack id=55 nframes=2 + pc=4227441 func=102 file=58 line=442 + pc=5078106 func=35 file=36 line=48 +Stack id=5 nframes=4 + pc=4576789 func=103 file=104 line=44 + pc=4567832 func=98 file=99 line=258 + pc=5076805 func=100 file=96 line=125 + pc=5077595 func=35 file=36 line=20 +Stack id=46 nframes=3 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=8 nframes=1 + pc=5077056 func=95 file=96 line=128 +Stack id=24 nframes=6 + pc=4315620 func=105 file=73 line=1249 + pc=4308860 func=106 file=73 line=662 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=37 nframes=1 + pc=4316644 func=107 file=73 line=1469 +Stack id=79 nframes=5 + pc=4817209 func=108 file=29 line=611 + pc=5000296 func=109 file=40 line=172 + pc=5058941 func=110 file=47 line=159 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=17 nframes=1 + pc=5077124 func=95 file=96 line=130 +Stack id=41 nframes=2 + pc=4310763 func=72 file=73 line=816 + pc=4316644 func=107 file=73 line=1469 +Stack id=33 nframes=7 + pc=4328420 func=114 file=75 line=747 + pc=4326674 func=74 file=75 line=587 + pc=4258131 func=76 file=77 line=1353 + pc=4255947 func=78 file=77 line=1025 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=29 nframes=6 + pc=4644903 func=115 file=116 line=474 + pc=4309092 func=106 file=73 line=683 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=73 nframes=10 + pc=4756296 func=117 file=25 line=1432 + pc=4751685 func=118 file=27 line=290 + pc=5051812 func=119 file=42 line=167 + pc=5048051 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=92 nframes=2 + pc=4640852 func=60 file=61 line=195 + pc=5078782 func=113 file=36 line=63 +Stack id=32 nframes=2 + pc=4344589 func=124 file=125 line=425 + pc=4346072 func=126 file=125 line=658 +Stack id=45 nframes=1 + pc=5077843 func=35 file=36 line=32 +Stack id=62 nframes=3 + pc=4754167 func=24 file=25 line=736 + pc=5079848 func=26 file=27 line=181 + pc=5079785 func=59 file=36 line=90 +Stack id=15 nframes=3 + pc=4227441 func=102 file=58 line=442 + pc=4574090 func=127 file=99 line=937 + pc=4576964 func=128 file=104 line=56 +Stack id=28 nframes=4 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=64 nframes=7 + pc=4754618 func=88 file=25 line=964 + pc=4816103 func=89 file=27 line=209 + pc=4816095 func=28 file=29 line=736 + pc=4815648 func=90 file=29 line=380 + pc=4821008 func=91 file=92 line=46 + pc=4821000 func=93 file=94 line=189 + pc=5080260 func=97 file=36 line=89 +Stack id=91 nframes=8 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5060022 func=133 file=134 line=21 + pc=5055784 func=135 file=112 line=257 + pc=5058972 func=110 file=47 line=163 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=95 nframes=8 + pc=4753732 func=136 file=25 line=335 + pc=4813424 func=137 file=138 line=24 + pc=4813394 func=139 file=29 line=81 + pc=4811154 func=140 file=141 line=213 + pc=4813572 func=142 file=29 line=104 + pc=4996049 func=143 file=32 line=37 + pc=5033653 func=144 file=34 line=203 + pc=5078651 func=35 file=36 line=74 +Stack id=22 nframes=4 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=56 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744422 func=82 file=83 line=106 + pc=4823012 func=84 file=85 line=218 + pc=4824373 func=86 file=87 line=21 + pc=5079543 func=59 file=36 line=82 +Stack id=60 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744422 func=82 file=83 line=106 + pc=4813961 func=145 file=29 line=129 + pc=5079772 func=146 file=85 line=90 + pc=5079785 func=59 file=36 line=90 +Stack id=38 nframes=2 + pc=4310679 func=72 file=73 line=914 + pc=4316644 func=107 file=73 line=1469 +Stack id=52 nframes=3 + pc=4708004 func=147 file=148 line=81 + pc=5079238 func=149 file=148 line=87 + pc=5079164 func=71 file=36 line=41 +Stack id=20 nframes=3 + pc=4708004 func=147 file=148 line=81 + pc=5080678 func=149 file=148 line=87 + pc=5080600 func=150 file=36 line=105 +Stack id=67 nframes=19 + pc=4752943 func=151 file=25 line=98 + pc=4822218 func=152 file=153 line=280 + pc=4822195 func=154 file=155 line=15 + pc=4823409 func=156 file=85 line=272 + pc=4821405 func=157 file=94 line=374 + pc=5042404 func=158 file=94 line=354 + pc=5042391 func=159 file=160 line=76 + pc=5047095 func=161 file=162 line=35 + pc=5068462 func=163 file=34 line=373 + pc=4703265 func=164 file=165 line=74 + pc=5034315 func=166 file=165 line=65 + pc=5034286 func=167 file=34 line=373 + pc=5047998 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=84 nframes=15 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5059867 func=133 file=134 line=18 + pc=5055784 func=135 file=112 line=257 + pc=5058352 func=46 file=47 line=121 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=74 nframes=9 + pc=4755428 func=168 file=25 line=1213 + pc=5051952 func=119 file=42 line=170 + pc=5048051 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=50 nframes=1 + pc=5079149 func=71 file=36 line=40 +Stack id=14 nframes=2 + pc=4708263 func=169 file=148 line=116 + pc=5077833 func=35 file=36 line=29 +Stack id=27 nframes=2 + pc=4437613 func=170 file=65 line=402 + pc=4316040 func=107 file=73 line=1333 +Stack id=30 nframes=5 + pc=4309402 func=106 file=73 line=745 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=75 nframes=1 + pc=5078720 func=113 file=36 line=58 +Stack id=88 nframes=8 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5059594 func=171 file=172 line=15 + pc=5055722 func=135 file=112 line=251 + pc=5058972 func=110 file=47 line=163 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=70 nframes=21 + pc=4754167 func=24 file=25 line=736 + pc=4814861 func=26 file=27 line=181 + pc=4814837 func=28 file=29 line=736 + pc=4814480 func=30 file=29 line=160 + pc=4820817 func=173 file=92 line=29 + pc=4820809 func=174 file=94 line=118 + pc=4742703 func=175 file=176 line=335 + pc=5041967 func=177 file=176 line=354 + pc=5041927 func=178 file=160 line=55 + pc=5047143 func=161 file=162 line=40 + pc=5068462 func=163 file=34 line=373 + pc=4703265 func=164 file=165 line=74 + pc=5034315 func=166 file=165 line=65 + pc=5034286 func=167 file=34 line=373 + pc=5047998 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=25 nframes=7 + pc=4227441 func=102 file=58 line=442 + pc=4315507 func=105 file=73 line=1259 + pc=4308860 func=106 file=73 line=662 + pc=4257811 func=78 file=77 line=1308 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=58 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744422 func=82 file=83 line=106 + pc=4823012 func=84 file=85 line=218 + pc=4824408 func=86 file=87 line=21 + pc=5079543 func=59 file=36 line=82 Stack id=69 nframes=19 - pc=4746660 func=150 file=30 line=432 - pc=4737158 func=151 file=152 line=106 - pc=4815748 func=176 file=146 line=218 - pc=4816367 func=185 file=146 line=301 - pc=4814141 func=186 file=39 line=334 - pc=5034884 func=187 file=39 line=314 - pc=5034871 func=188 file=44 line=76 - pc=5039575 func=45 file=46 line=35 - pc=5060942 func=47 file=48 line=373 - pc=4696033 func=49 file=50 line=74 - pc=5026795 func=51 file=50 line=65 - pc=5026766 func=52 file=48 line=373 - pc=5040478 func=53 file=54 line=57 - pc=5014167 func=55 file=56 line=154 - pc=5051652 func=57 file=58 line=182 - pc=4960356 func=59 file=58 line=172 - pc=4960318 func=60 file=61 line=734 - pc=4961094 func=62 file=61 line=808 - pc=5070695 func=63 file=28 line=53 -Stack id=59 nframes=5 - pc=4746660 func=150 file=30 line=432 - pc=4737158 func=151 file=152 line=106 - pc=4815748 func=176 file=146 line=218 - pc=4817144 func=177 file=178 line=21 - pc=5072014 func=89 file=28 line=82 -Stack id=30 nframes=7 - pc=4578913 func=209 file=68 line=378 - pc=4323996 func=198 file=199 line=536 - pc=4255603 func=200 file=76 line=1337 - pc=4253576 func=77 file=76 line=1025 - pc=4522824 func=78 file=79 line=103 - pc=5073532 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=51 nframes=2 - pc=4701031 func=201 file=25 line=116 - pc=5070481 func=63 file=28 line=43 -Stack id=49 nframes=1 - pc=5071552 func=171 file=28 line=38 -Stack id=29 nframes=5 - pc=4307322 func=134 file=81 line=746 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 + pc=4753924 func=81 file=25 line=432 + pc=4744496 func=82 file=83 line=118 + pc=4823012 func=84 file=85 line=218 + pc=4823631 func=156 file=85 line=301 + pc=4821405 func=157 file=94 line=374 + pc=5042404 func=158 file=94 line=354 + pc=5042391 func=159 file=160 line=76 + pc=5047095 func=161 file=162 line=35 + pc=5068462 func=163 file=34 line=373 + pc=4703265 func=164 file=165 line=74 + pc=5034315 func=166 file=165 line=65 + pc=5034286 func=167 file=34 line=373 + pc=5047998 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=83 nframes=15 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5054762 func=179 file=180 line=88 + pc=5055769 func=135 file=112 line=256 + pc=5058352 func=46 file=47 line=121 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=43 nframes=9 + pc=4368154 func=181 file=182 line=958 + pc=4293585 func=183 file=184 line=254 + pc=4293175 func=185 file=184 line=170 + pc=4290674 func=186 file=187 line=182 + pc=4255364 func=188 file=77 line=948 + pc=4256932 func=78 file=77 line=1149 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=78 nframes=8 + pc=4756062 func=189 file=25 line=1421 + pc=4750293 func=190 file=153 line=684 + pc=4818215 func=191 file=192 line=17 + pc=4816989 func=108 file=29 line=602 + pc=5000296 func=109 file=40 line=172 + pc=5058941 func=110 file=47 line=159 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=71 nframes=20 + pc=4753732 func=136 file=25 line=335 + pc=4813424 func=137 file=138 line=24 + pc=4813394 func=139 file=29 line=81 + pc=4811154 func=140 file=141 line=213 + pc=4813572 func=142 file=29 line=104 + pc=4823895 func=193 file=85 line=315 + pc=5047564 func=194 file=92 line=23 + pc=5047547 func=195 file=160 line=23 + pc=5047406 func=161 file=162 line=53 + pc=5068462 func=163 file=34 line=373 + pc=4703265 func=164 file=165 line=74 + pc=5034315 func=166 file=165 line=65 + pc=5034286 func=167 file=34 line=373 + pc=5047998 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=3 nframes=4 + pc=4446827 func=196 file=65 line=1369 + pc=4567827 func=98 file=99 line=256 + pc=5076805 func=100 file=96 line=125 + pc=5077595 func=35 file=36 line=20 +Stack id=35 nframes=2 + pc=4310007 func=72 file=73 line=806 + pc=4316644 func=107 file=73 line=1469 +Stack id=6 nframes=1 + pc=4573664 func=197 file=99 line=877 +Stack id=19 nframes=1 + pc=5080585 func=150 file=36 line=104 +Stack id=54 nframes=1 + pc=5078085 func=35 file=36 line=47 Stack id=82 nframes=15 - pc=4750130 func=90 file=30 line=1488 - pc=4811799 func=91 file=32 line=462 - pc=4811777 func=92 file=93 line=17 - pc=5052074 func=113 file=114 line=15 - pc=5048202 func=96 file=97 line=239 - pc=5050832 func=98 file=58 line=114 - pc=5049860 func=99 file=58 line=68 - pc=5049861 func=100 file=58 line=64 - pc=4958364 func=101 file=61 line=651 - pc=4956653 func=102 file=61 line=616 - pc=4954291 func=103 file=61 line=517 - pc=4952889 func=104 file=61 line=508 - pc=4951126 func=105 file=61 line=434 - pc=4951127 func=106 file=61 line=401 - pc=5070980 func=63 file=28 line=68 -Stack id=27 nframes=4 - pc=4255286 func=77 file=76 line=1292 - pc=4524282 func=139 file=79 line=246 - pc=5073584 func=66 file=28 line=127 - pc=5070323 func=63 file=28 line=32 -Stack id=17 nframes=7 - pc=4747354 func=83 file=30 line=964 - pc=4808839 func=84 file=32 line=209 - pc=4808831 func=33 file=34 line=736 - pc=4808384 func=85 file=34 line=380 - pc=4813744 func=86 file=37 line=46 - pc=4813736 func=87 file=39 line=183 - pc=5069594 func=196 file=111 line=134 -EventBatch gen=1 m=18446744073709551615 time=420901448919 size=6914 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5059594 func=171 file=172 line=15 + pc=5055722 func=135 file=112 line=251 + pc=5058352 func=46 file=47 line=121 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=90 nframes=8 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5059867 func=133 file=134 line=18 + pc=5055784 func=135 file=112 line=257 + pc=5058972 func=110 file=47 line=163 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=61 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744496 func=82 file=83 line=118 + pc=4813961 func=145 file=29 line=129 + pc=5079772 func=146 file=85 line=90 + pc=5079785 func=59 file=36 line=90 +Stack id=23 nframes=1 + pc=4315808 func=107 file=73 line=1298 +Stack id=12 nframes=1 + pc=5080512 func=150 file=36 line=102 +Stack id=68 nframes=19 + pc=4753924 func=81 file=25 line=432 + pc=4744422 func=82 file=83 line=106 + pc=4823012 func=84 file=85 line=218 + pc=4823631 func=156 file=85 line=301 + pc=4821405 func=157 file=94 line=374 + pc=5042404 func=158 file=94 line=354 + pc=5042391 func=159 file=160 line=76 + pc=5047095 func=161 file=162 line=35 + pc=5068462 func=163 file=34 line=373 + pc=4703265 func=164 file=165 line=74 + pc=5034315 func=166 file=165 line=65 + pc=5034286 func=167 file=34 line=373 + pc=5047998 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=4 nframes=1 + pc=4576896 func=128 file=104 line=44 +Stack id=66 nframes=6 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=81 nframes=16 + pc=4757147 func=198 file=25 line=1478 + pc=4752076 func=199 file=27 line=313 + pc=4998549 func=39 file=40 line=149 + pc=5049499 func=41 file=42 line=124 + pc=5048282 func=43 file=42 line=70 + pc=5021687 func=44 file=45 line=154 + pc=5057739 func=46 file=47 line=85 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=87 nframes=4 + pc=4814791 func=30 file=29 line=164 + pc=4996132 func=31 file=32 line=55 + pc=5032836 func=33 file=34 line=179 + pc=5078635 func=35 file=36 line=73 +Stack id=85 nframes=15 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5060022 func=133 file=134 line=21 + pc=5055784 func=135 file=112 line=257 + pc=5058352 func=46 file=47 line=121 + pc=5057380 func=48 file=47 line=75 + pc=5057381 func=49 file=47 line=71 + pc=4965884 func=50 file=51 line=651 + pc=4964173 func=52 file=51 line=616 + pc=4961811 func=53 file=51 line=517 + pc=4960409 func=54 file=51 line=508 + pc=4958646 func=55 file=51 line=434 + pc=4958647 func=56 file=51 line=401 + pc=5078500 func=35 file=36 line=68 +Stack id=39 nframes=4 + pc=4644903 func=115 file=116 line=474 + pc=4311677 func=200 file=73 line=964 + pc=4310756 func=72 file=73 line=926 + pc=4316644 func=107 file=73 line=1469 +Stack id=31 nframes=7 + pc=4585153 func=201 file=202 line=383 + pc=4326396 func=74 file=75 line=534 + pc=4258131 func=76 file=77 line=1353 + pc=4255947 func=78 file=77 line=1025 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=89 nframes=8 + pc=4757394 func=129 file=25 line=1488 + pc=4819063 func=130 file=27 line=462 + pc=4819041 func=131 file=132 line=17 + pc=5054762 func=179 file=180 line=88 + pc=5055769 func=135 file=112 line=256 + pc=5058972 func=110 file=47 line=163 + pc=5055951 func=111 file=112 line=327 + pc=5078747 func=113 file=36 line=59 +Stack id=53 nframes=1 + pc=5079488 func=59 file=36 line=81 +Stack id=18 nframes=3 + pc=4227441 func=102 file=58 line=442 + pc=4574090 func=127 file=99 line=937 + pc=4573703 func=197 file=99 line=880 +Stack id=48 nframes=1 + pc=5077881 func=35 file=36 line=38 +Stack id=94 nframes=8 + pc=4753732 func=136 file=25 line=335 + pc=4813424 func=137 file=138 line=24 + pc=4813394 func=139 file=29 line=81 + pc=4811154 func=140 file=141 line=213 + pc=4813572 func=142 file=29 line=104 + pc=4996049 func=143 file=32 line=37 + pc=5033653 func=144 file=34 line=203 + pc=5078837 func=113 file=36 line=66 +Stack id=42 nframes=9 + pc=4584693 func=203 file=202 line=357 + pc=4355940 func=204 file=67 line=522 + pc=4292956 func=185 file=184 line=147 + pc=4290674 func=186 file=187 line=182 + pc=4255364 func=188 file=77 line=948 + pc=4256932 func=78 file=77 line=1149 + pc=4528840 func=79 file=80 line=107 + pc=5081148 func=62 file=36 line=127 + pc=5077843 func=35 file=36 line=32 +Stack id=93 nframes=7 + pc=4754618 func=88 file=25 line=964 + pc=4816103 func=89 file=27 line=209 + pc=4816095 func=28 file=29 line=736 + pc=4815648 func=90 file=29 line=380 + pc=4996388 func=205 file=32 line=96 + pc=5033284 func=206 file=34 line=191 + pc=5078821 func=113 file=36 line=65 +Stack id=34 nframes=2 + pc=4644903 func=115 file=116 line=474 + pc=4316309 func=107 file=73 line=1393 +Stack id=49 nframes=2 + pc=4708263 func=169 file=148 line=116 + pc=5078001 func=35 file=36 line=43 +Stack id=7 nframes=4 + pc=4573636 func=207 file=99 line=877 + pc=4567844 func=98 file=99 line=259 + pc=5076805 func=100 file=96 line=125 + pc=5077595 func=35 file=36 line=20 +Stack id=76 nframes=1 + pc=5078444 func=35 file=36 line=58 +Stack id=1 nframes=4 + pc=4583115 func=208 file=202 line=260 + pc=4567535 func=98 file=99 line=238 + pc=5076805 func=100 file=96 line=125 + pc=5077595 func=35 file=36 line=20 +Stack id=26 nframes=2 + pc=4224086 func=57 file=58 line=145 + pc=4316011 func=107 file=73 line=1312 +Stack id=40 nframes=3 + pc=4312646 func=200 file=73 line=1086 + pc=4310756 func=72 file=73 line=926 + pc=4316644 func=107 file=73 line=1469 +Stack id=72 nframes=11 + pc=4757394 func=129 file=25 line=1488 + pc=5054386 func=130 file=27 line=462 + pc=5054396 func=209 file=210 line=28 + pc=5051349 func=119 file=42 line=152 + pc=5048051 func=43 file=42 line=57 + pc=5021687 func=44 file=45 line=154 + pc=5059172 func=120 file=47 line=189 + pc=4967876 func=121 file=47 line=179 + pc=4967838 func=122 file=51 line=734 + pc=4968614 func=123 file=51 line=808 + pc=5078215 func=35 file=36 line=53 +Stack id=59 nframes=5 + pc=4753924 func=81 file=25 line=432 + pc=4744496 func=82 file=83 line=118 + pc=4823012 func=84 file=85 line=218 + pc=4824408 func=86 file=87 line=21 + pc=5079543 func=59 file=36 line=82 +Stack id=9 nframes=2 + pc=5076879 func=100 file=96 line=128 + pc=5077595 func=35 file=36 line=20 +EventBatch gen=1 m=18446744073709551615 time=7689670146021 size=6980 Strings String id=1 data="Not worker" @@ -3985,7 +4256,7 @@ String id=18 String id=19 data="sleep" String id=20 - data="runtime.GoSched" + data="runtime.Gosched" String id=21 data="start trace" String id=22 @@ -3993,374 +4264,376 @@ String id=22 String id=23 data="GC mark termination" String id=24 - data="sync.(*WaitGroup).Add" -String id=25 - data="/usr/local/google/home/mknyszek/work/go-1/src/sync/waitgroup.go" -String id=26 - data="sync.(*WaitGroup).Done" -String id=27 - data="main.cpu20" -String id=28 - data="/usr/local/google/home/mknyszek/work/go-1/src/cmd/trace/v2/testdata/testprog/main.go" -String id=29 data="syscall.read" -String id=30 +String id=25 data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/zsyscall_linux_amd64.go" -String id=31 +String id=26 data="syscall.Read" -String id=32 +String id=27 data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/syscall_unix.go" -String id=33 +String id=28 data="internal/poll.ignoringEINTRIO" -String id=34 +String id=29 data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/fd_unix.go" -String id=35 +String id=30 data="internal/poll.(*FD).Read" -String id=36 - data="os.(*File).read" -String id=37 - data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_posix.go" -String id=38 - data="os.(*File).Read" -String id=39 - data="/usr/local/google/home/mknyszek/work/go-1/src/os/file.go" -String id=40 - data="io.ReadAtLeast" -String id=41 - data="/usr/local/google/home/mknyszek/work/go-1/src/io/io.go" -String id=42 - data="io.ReadFull" -String id=43 - data="net.(*file).readLine" -String id=44 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/parse.go" -String id=45 - data="net.maxListenerBacklog" -String id=46 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/sock_linux.go" -String id=47 - data="net.listenerBacklog.func1" -String id=48 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/net.go" -String id=49 - data="sync.(*Once).doSlow" -String id=50 - data="/usr/local/google/home/mknyszek/work/go-1/src/sync/once.go" -String id=51 - data="sync.(*Once).Do" -String id=52 - data="net.listenerBacklog" -String id=53 - data="net.socket" -String id=54 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/sock_posix.go" -String id=55 - data="net.internetSocket" -String id=56 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/ipsock_posix.go" -String id=57 - data="net.(*sysListener).listenTCPProto" -String id=58 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsock_posix.go" -String id=59 - data="net.(*sysListener).listenTCP" -String id=60 - data="net.(*ListenConfig).Listen" -String id=61 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/dial.go" -String id=62 - data="net.Listen" -String id=63 - data="main.main" -String id=64 - data="time.Sleep" -String id=65 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/time.go" -String id=66 - data="main.allocHog" -String id=67 - data="runtime.traceLocker.GCSweepSpan" -String id=68 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2runtime.go" -String id=69 - data="runtime.(*sweepLocked).sweep" -String id=70 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcsweep.go" -String id=71 - data="runtime.(*mcentral).cacheSpan" -String id=72 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mcentral.go" -String id=73 - data="runtime.(*mcache).refill" -String id=74 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mcache.go" -String id=75 - data="runtime.(*mcache).nextFree" -String id=76 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/malloc.go" -String id=77 - data="runtime.mallocgc" -String id=78 - data="runtime.makeslice" -String id=79 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/slice.go" -String id=80 - data="runtime.gcBgMarkWorker" -String id=81 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgc.go" -String id=82 - data="runtime.gcMarkDone" -String id=83 - data="syscall.write" -String id=84 - data="syscall.Write" -String id=85 - data="internal/poll.(*FD).Write" -String id=86 - data="os.(*File).write" -String id=87 - data="os.(*File).Write" -String id=88 - data="main.blockingSyscall.func1" -String id=89 - data="main.blockingSyscall" -String id=90 - data="syscall.setsockopt" -String id=91 - data="syscall.SetsockoptInt" -String id=92 - data="internal/poll.(*FD).SetsockoptInt" -String id=93 - data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/sockopt.go" -String id=94 - data="net.setKeepAlivePeriod" -String id=95 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsockopt_unix.go" -String id=96 - data="net.newTCPConn" -String id=97 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsock.go" -String id=98 - data="net.(*sysDialer).doDialTCPProto" -String id=99 - data="net.(*sysDialer).doDialTCP" -String id=100 - data="net.(*sysDialer).dialTCP" -String id=101 - data="net.(*sysDialer).dialSingle" -String id=102 - data="net.(*sysDialer).dialSerial" -String id=103 - data="net.(*sysDialer).dialParallel" -String id=104 - data="net.(*Dialer).DialContext" -String id=105 - data="net.(*Dialer).Dial" -String id=106 - data="net.Dial" -String id=107 - data="runtime.traceLocker.Gomaxprocs" -String id=108 - data="runtime.StartTrace" -String id=109 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2.go" -String id=110 - data="runtime/trace.Start" -String id=111 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace/trace.go" -String id=112 - data="runtime.(*traceAdvancerState).start" -String id=113 - data="net.setNoDelay" -String id=114 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsockopt_posix.go" -String id=115 - data="net.(*TCPListener).accept" -String id=116 - data="net.(*TCPListener).Accept" -String id=117 - data="main.main.func2" -String id=118 - data="runtime.chanrecv1" -String id=119 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/chan.go" -String id=120 - data="runtime.(*wakeableSleep).sleep" -String id=121 - data="runtime.(*traceAdvancerState).start.func1" -String id=122 - data="syscall.Close" -String id=123 - data="internal/poll.(*SysFile).destroy" -String id=124 - data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/fd_unixjs.go" -String id=125 - data="internal/poll.(*FD).destroy" -String id=126 - data="internal/poll.(*FD).decref" -String id=127 - data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/fd_mutex.go" -String id=128 - data="internal/poll.(*FD).Close" -String id=129 - data="net.(*netFD).Close" -String id=130 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/fd_posix.go" -String id=131 - data="net.(*conn).Close" -String id=132 - data="runtime.systemstack_switch" -String id=133 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/asm_amd64.s" -String id=134 - data="runtime.gcStart" -String id=135 - data="runtime.gopark" -String id=136 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/proc.go" -String id=137 - data="runtime.chansend1" -String id=138 - data="runtime.gcBgMarkStartWorkers" -String id=139 - data="runtime.growslice" -String id=140 - data="runtime.traceStartReadCPU.func1" -String id=141 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2cpu.go" -String id=142 - data="net.setKeepAlive" -String id=143 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/sockopt_posix.go" -String id=144 - data="runtime.gcMarkTermination" -String id=145 - data="os.(*file).close" -String id=146 - data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_unix.go" -String id=147 - data="os.(*File).Close" -String id=148 - data="net.(*file).close" -String id=149 - data="runtime.startTheWorld" -String id=150 - data="syscall.fcntl" -String id=151 - data="syscall.SetNonblock" -String id=152 - data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/exec_unix.go" -String id=153 - data="internal/poll.(*FD).SetBlocking" -String id=154 - data="os.(*File).Fd" -String id=155 - data="syscall.accept4" -String id=156 - data="syscall.Accept4" -String id=157 - data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/syscall_linux.go" -String id=158 - data="internal/poll.accept" -String id=159 - data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/sock_cloexec.go" -String id=160 - data="internal/poll.(*FD).Accept" -String id=161 - data="net.(*netFD).accept" -String id=162 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/fd_unix.go" -String id=163 - data="syscall.Listen" -String id=164 - data="net.(*netFD).listenStream" -String id=165 - data="net.setDefaultListenerSockopts" -String id=166 - data="/usr/local/google/home/mknyszek/work/go-1/src/net/sockopt_linux.go" -String id=167 +String id=31 data="net.(*netFD).Read" -String id=168 +String id=32 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/fd_posix.go" +String id=33 data="net.(*conn).Read" -String id=169 - data="runtime.goparkunlock" -String id=170 - data="runtime.bgsweep" -String id=171 - data="main.main.func1" -String id=172 - data="syscall.getsockopt" -String id=173 - data="syscall.GetsockoptInt" -String id=174 - data="net.(*netFD).connect" -String id=175 - data="net.(*netFD).dial" -String id=176 - data="os.newFile" -String id=177 - data="os.Pipe" -String id=178 - data="/usr/local/google/home/mknyszek/work/go-1/src/os/pipe2_unix.go" -String id=179 - data="runtime.sweepone" -String id=180 - data="runtime.deductSweepCredit" -String id=181 - data="syscall.openat" -String id=182 - data="syscall.Open" -String id=183 - data="os.open" -String id=184 - data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_open_unix.go" -String id=185 - data="os.openFileNolog" -String id=186 - data="os.OpenFile" -String id=187 - data="os.Open" -String id=188 - data="net.open" -String id=189 +String id=34 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/net.go" +String id=35 + data="main.main" +String id=36 + data="/usr/local/google/home/mknyszek/work/go-1/src/cmd/trace/v2/testdata/testprog/main.go" +String id=37 data="syscall.connect" -String id=190 +String id=38 data="syscall.Connect" -String id=191 - data="runtime.(*scavengerState).park" -String id=192 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcscavenge.go" -String id=193 - data="runtime.bgscavenge" -String id=194 - data="syscall.bind" -String id=195 - data="syscall.Bind" -String id=196 - data="runtime/trace.Start.func1" -String id=197 - data="runtime.traceStartReadCPU" -String id=198 - data="runtime.gcAssistAlloc" -String id=199 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcmark.go" -String id=200 - data="runtime.deductAssistCredit" -String id=201 - data="sync.(*WaitGroup).Wait" -String id=202 - data="internal/poll.(*FD).WaitWrite" -String id=203 - data="net.(*netFD).Write" -String id=204 - data="net.(*conn).Write" -String id=205 - data="runtime.(*mheap).alloc" -String id=206 - data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mheap.go" -String id=207 - data="runtime.(*mcentral).grow" -String id=208 +String id=39 + data="net.(*netFD).connect" +String id=40 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/fd_unix.go" +String id=41 + data="net.(*netFD).dial" +String id=42 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/sock_posix.go" +String id=43 + data="net.socket" +String id=44 + data="net.internetSocket" +String id=45 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/ipsock_posix.go" +String id=46 + data="net.(*sysDialer).doDialTCPProto" +String id=47 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsock_posix.go" +String id=48 + data="net.(*sysDialer).doDialTCP" +String id=49 + data="net.(*sysDialer).dialTCP" +String id=50 + data="net.(*sysDialer).dialSingle" +String id=51 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/dial.go" +String id=52 + data="net.(*sysDialer).dialSerial" +String id=53 + data="net.(*sysDialer).dialParallel" +String id=54 + data="net.(*Dialer).DialContext" +String id=55 + data="net.(*Dialer).Dial" +String id=56 + data="net.Dial" +String id=57 + data="runtime.chansend1" +String id=58 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/chan.go" +String id=59 + data="main.blockingSyscall" +String id=60 + data="time.Sleep" +String id=61 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/time.go" +String id=62 + data="main.allocHog" +String id=63 data="main.cpu10" -String id=209 +String id=64 + data="runtime.goparkunlock" +String id=65 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/proc.go" +String id=66 + data="runtime.bgsweep" +String id=67 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcsweep.go" +String id=68 + data="runtime.asyncPreempt" +String id=69 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/preempt_amd64.s" +String id=70 + data="main.cpuHog" +String id=71 + data="main.main.func1" +String id=72 + data="runtime.gcMarkDone" +String id=73 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgc.go" +String id=74 + data="runtime.gcAssistAlloc" +String id=75 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcmark.go" +String id=76 + data="runtime.deductAssistCredit" +String id=77 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/malloc.go" +String id=78 + data="runtime.mallocgc" +String id=79 + data="runtime.makeslice" +String id=80 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/slice.go" +String id=81 + data="syscall.fcntl" +String id=82 + data="syscall.SetNonblock" +String id=83 + data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/exec_unix.go" +String id=84 + data="os.newFile" +String id=85 + data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_unix.go" +String id=86 + data="os.Pipe" +String id=87 + data="/usr/local/google/home/mknyszek/work/go-1/src/os/pipe2_unix.go" +String id=88 + data="syscall.write" +String id=89 + data="syscall.Write" +String id=90 + data="internal/poll.(*FD).Write" +String id=91 + data="os.(*File).write" +String id=92 + data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_posix.go" +String id=93 + data="os.(*File).Write" +String id=94 + data="/usr/local/google/home/mknyszek/work/go-1/src/os/file.go" +String id=95 + data="runtime/trace.Start.func1" +String id=96 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace/trace.go" +String id=97 + data="main.blockingSyscall.func1" +String id=98 + data="runtime.StartTrace" +String id=99 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2.go" +String id=100 + data="runtime/trace.Start" +String id=101 + data="internal/poll.(*FD).WaitWrite" +String id=102 + data="runtime.chanrecv1" +String id=103 + data="runtime.traceStartReadCPU" +String id=104 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2cpu.go" +String id=105 + data="runtime.gcBgMarkStartWorkers" +String id=106 + data="runtime.gcStart" +String id=107 + data="runtime.gcBgMarkWorker" +String id=108 + data="internal/poll.(*FD).Accept" +String id=109 + data="net.(*netFD).accept" +String id=110 + data="net.(*TCPListener).accept" +String id=111 + data="net.(*TCPListener).Accept" +String id=112 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsock.go" +String id=113 + data="main.main.func2" +String id=114 + data="runtime.gcParkAssist" +String id=115 + data="runtime.systemstack_switch" +String id=116 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/asm_amd64.s" +String id=117 + data="syscall.bind" +String id=118 + data="syscall.Bind" +String id=119 + data="net.(*netFD).listenStream" +String id=120 + data="net.(*sysListener).listenTCPProto" +String id=121 + data="net.(*sysListener).listenTCP" +String id=122 + data="net.(*ListenConfig).Listen" +String id=123 + data="net.Listen" +String id=124 + data="runtime.(*scavengerState).park" +String id=125 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mgcscavenge.go" +String id=126 + data="runtime.bgscavenge" +String id=127 + data="runtime.(*wakeableSleep).sleep" +String id=128 + data="runtime.traceStartReadCPU.func1" +String id=129 + data="syscall.setsockopt" +String id=130 + data="syscall.SetsockoptInt" +String id=131 + data="internal/poll.(*FD).SetsockoptInt" +String id=132 + data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/sockopt.go" +String id=133 + data="net.setKeepAlivePeriod" +String id=134 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsockopt_unix.go" +String id=135 + data="net.newTCPConn" +String id=136 + data="syscall.Close" +String id=137 + data="internal/poll.(*SysFile).destroy" +String id=138 + data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/fd_unixjs.go" +String id=139 + data="internal/poll.(*FD).destroy" +String id=140 + data="internal/poll.(*FD).decref" +String id=141 + data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/fd_mutex.go" +String id=142 + data="internal/poll.(*FD).Close" +String id=143 + data="net.(*netFD).Close" +String id=144 + data="net.(*conn).Close" +String id=145 + data="internal/poll.(*FD).SetBlocking" +String id=146 + data="os.(*File).Fd" +String id=147 + data="sync.(*WaitGroup).Add" +String id=148 + data="/usr/local/google/home/mknyszek/work/go-1/src/sync/waitgroup.go" +String id=149 + data="sync.(*WaitGroup).Done" +String id=150 + data="main.cpu20" +String id=151 + data="syscall.openat" +String id=152 + data="syscall.Open" +String id=153 + data="/usr/local/google/home/mknyszek/work/go-1/src/syscall/syscall_linux.go" +String id=154 + data="os.open" +String id=155 + data="/usr/local/google/home/mknyszek/work/go-1/src/os/file_open_unix.go" +String id=156 + data="os.openFileNolog" +String id=157 + data="os.OpenFile" +String id=158 + data="os.Open" +String id=159 + data="net.open" +String id=160 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/parse.go" +String id=161 + data="net.maxListenerBacklog" +String id=162 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/sock_linux.go" +String id=163 + data="net.listenerBacklog.func1" +String id=164 + data="sync.(*Once).doSlow" +String id=165 + data="/usr/local/google/home/mknyszek/work/go-1/src/sync/once.go" +String id=166 + data="sync.(*Once).Do" +String id=167 + data="net.listenerBacklog" +String id=168 + data="syscall.Listen" +String id=169 + data="sync.(*WaitGroup).Wait" +String id=170 + data="runtime.gopark" +String id=171 + data="net.setNoDelay" +String id=172 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/tcpsockopt_posix.go" +String id=173 + data="os.(*File).read" +String id=174 + data="os.(*File).Read" +String id=175 + data="io.ReadAtLeast" +String id=176 + data="/usr/local/google/home/mknyszek/work/go-1/src/io/io.go" +String id=177 + data="io.ReadFull" +String id=178 + data="net.(*file).readLine" +String id=179 + data="net.setKeepAlive" +String id=180 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/sockopt_posix.go" +String id=181 + data="runtime.(*mheap).alloc" +String id=182 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mheap.go" +String id=183 + data="runtime.(*mcentral).grow" +String id=184 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mcentral.go" +String id=185 + data="runtime.(*mcentral).cacheSpan" +String id=186 + data="runtime.(*mcache).refill" +String id=187 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/mcache.go" +String id=188 + data="runtime.(*mcache).nextFree" +String id=189 + data="syscall.accept4" +String id=190 + data="syscall.Accept4" +String id=191 + data="internal/poll.accept" +String id=192 + data="/usr/local/google/home/mknyszek/work/go-1/src/internal/poll/sock_cloexec.go" +String id=193 + data="os.(*file).close" +String id=194 + data="os.(*File).Close" +String id=195 + data="net.(*file).close" +String id=196 + data="runtime.startTheWorld" +String id=197 + data="runtime.(*traceAdvancerState).start.func1" +String id=198 + data="syscall.getsockopt" +String id=199 + data="syscall.GetsockoptInt" +String id=200 + data="runtime.gcMarkTermination" +String id=201 data="runtime.traceLocker.GCMarkAssistStart" +String id=202 + data="/usr/local/google/home/mknyszek/work/go-1/src/runtime/trace2runtime.go" +String id=203 + data="runtime.traceLocker.GCSweepSpan" +String id=204 + data="runtime.(*sweepLocked).sweep" +String id=205 + data="net.(*netFD).Write" +String id=206 + data="net.(*conn).Write" +String id=207 + data="runtime.(*traceAdvancerState).start" +String id=208 + data="runtime.traceLocker.Gomaxprocs" +String id=209 + data="net.setDefaultListenerSockopts" +String id=210 + data="/usr/local/google/home/mknyszek/work/go-1/src/net/sockopt_linux.go" diff --git a/src/cmd/vendor/github.com/google/pprof/driver/driver.go b/src/cmd/vendor/github.com/google/pprof/driver/driver.go index 5a8222f70a..d5860036c3 100644 --- a/src/cmd/vendor/github.com/google/pprof/driver/driver.go +++ b/src/cmd/vendor/github.com/google/pprof/driver/driver.go @@ -186,9 +186,10 @@ type ObjFile interface { // A Frame describes a single line in a source file. type Frame struct { - Func string // name of function - File string // source file name - Line int // line in file + Func string // name of function + File string // source file name + Line int // line in file + Column int // column in file } // A Sym describes a single symbol in an object file. diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner_llvm.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner_llvm.go index 491422fcda..3049545b6b 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner_llvm.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner_llvm.go @@ -129,6 +129,7 @@ func (d *llvmSymbolizer) readFrame() (plugin.Frame, bool) { } linenumber := 0 + columnnumber := 0 // The llvm-symbolizer outputs the ::. // When it cannot identify the source code location, it outputs "??:0:0". // Older versions output just the filename and line number, so we check for @@ -137,22 +138,27 @@ func (d *llvmSymbolizer) readFrame() (plugin.Frame, bool) { fileline = "" } else { switch split := strings.Split(fileline, ":"); len(split) { - case 1: - // filename - fileline = split[0] - case 2, 3: - // filename:line , or - // filename:line:disc , or - fileline = split[0] + case 3: + // filename:line:column + if col, err := strconv.Atoi(split[2]); err == nil { + columnnumber = col + } + fallthrough + case 2: + // filename:line if line, err := strconv.Atoi(split[1]); err == nil { linenumber = line } + fallthrough + case 1: + // filename + fileline = split[0] default: // Unrecognized, ignore } } - return plugin.Frame{Func: funcname, File: fileline, Line: linenumber}, false + return plugin.Frame{Func: funcname, File: fileline, Line: linenumber, Column: columnnumber}, false } // addrInfo returns the stack frame information for a specific program diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/commands.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/commands.go index c9edf10bb4..f990780d75 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/commands.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/commands.go @@ -247,6 +247,8 @@ var configHelp = map[string]string{ "noinlines": helpText( "Ignore inlines.", "Attributes inlined functions to their first out-of-line caller."), + "showcolumns": helpText( + "Show column numbers at the source code line level."), } func helpText(s ...string) string { diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/config.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/config.go index 9fcdd459b2..f7d227416e 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/config.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/config.go @@ -51,6 +51,7 @@ type config struct { TagShow string `json:"tagshow,omitempty"` TagHide string `json:"taghide,omitempty"` NoInlines bool `json:"noinlines,omitempty"` + ShowColumns bool `json:"showcolumns,omitempty"` // Output granularity Granularity string `json:"granularity,omitempty"` @@ -157,6 +158,7 @@ func init() { "sort": "sort", "granularity": "g", "noinlines": "noinlines", + "showcolumns": "showcolumns", } def := defaultConfig() diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go index 27681c540f..74ce8cb422 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go @@ -256,7 +256,7 @@ func aggregate(prof *profile.Profile, cfg config) error { default: return fmt.Errorf("unexpected granularity") } - return prof.Aggregate(inlines, function, filename, linenumber, address) + return prof.Aggregate(inlines, function, filename, linenumber, cfg.ShowColumns, address) } func reportOptions(p *profile.Profile, numLabelUnits map[string]string, cfg config) (*report.Options, error) { diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go index 584c5d85e0..95204a394f 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go @@ -492,17 +492,23 @@ mapping: func fetch(source string, duration, timeout time.Duration, ui plugin.UI, tr http.RoundTripper) (p *profile.Profile, src string, err error) { var f io.ReadCloser - if sourceURL, timeout := adjustURL(source, duration, timeout); sourceURL != "" { - ui.Print("Fetching profile over HTTP from " + sourceURL) - if duration > 0 { - ui.Print(fmt.Sprintf("Please wait... (%v)", duration)) + // First determine whether the source is a file, if not, it will be treated as a URL. + if _, openErr := os.Stat(source); openErr == nil { + if isPerfFile(source) { + f, err = convertPerfData(source, ui) + } else { + f, err = os.Open(source) } - f, err = fetchURL(sourceURL, timeout, tr) - src = sourceURL - } else if isPerfFile(source) { - f, err = convertPerfData(source, ui) } else { - f, err = os.Open(source) + sourceURL, timeout := adjustURL(source, duration, timeout) + if sourceURL != "" { + ui.Print("Fetching profile over HTTP from " + sourceURL) + if duration > 0 { + ui.Print(fmt.Sprintf("Please wait... (%v)", duration)) + } + f, err = fetchURL(sourceURL, timeout, tr) + src = sourceURL + } } if err == nil { defer f.Close() diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go deleted file mode 100644 index fbeb765dbc..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package driver - -import ( - "encoding/json" - "html/template" - "net/http" - "strings" - - "github.com/google/pprof/internal/graph" - "github.com/google/pprof/internal/measurement" - "github.com/google/pprof/internal/report" -) - -type treeNode struct { - Name string `json:"n"` - FullName string `json:"f"` - Cum int64 `json:"v"` - CumFormat string `json:"l"` - Percent string `json:"p"` - Children []*treeNode `json:"c"` -} - -// flamegraph generates a web page containing a flamegraph. -func (ui *webInterface) flamegraph(w http.ResponseWriter, req *http.Request) { - // Force the call tree so that the graph is a tree. - // Also do not trim the tree so that the flame graph contains all functions. - rpt, errList := ui.makeReport(w, req, []string{"svg"}, func(cfg *config) { - cfg.CallTree = true - cfg.Trim = false - }) - if rpt == nil { - return // error already reported - } - - // Generate dot graph. - g, config := report.GetDOT(rpt) - var nodes []*treeNode - nroots := 0 - rootValue := int64(0) - nodeArr := []string{} - nodeMap := map[*graph.Node]*treeNode{} - // Make all nodes and the map, collect the roots. - for _, n := range g.Nodes { - v := n.CumValue() - fullName := n.Info.PrintableName() - node := &treeNode{ - Name: graph.ShortenFunctionName(fullName), - FullName: fullName, - Cum: v, - CumFormat: config.FormatValue(v), - Percent: strings.TrimSpace(measurement.Percentage(v, config.Total)), - } - nodes = append(nodes, node) - if len(n.In) == 0 { - nodes[nroots], nodes[len(nodes)-1] = nodes[len(nodes)-1], nodes[nroots] - nroots++ - rootValue += v - } - nodeMap[n] = node - // Get all node names into an array. - nodeArr = append(nodeArr, n.Info.Name) - } - // Populate the child links. - for _, n := range g.Nodes { - node := nodeMap[n] - for child := range n.Out { - node.Children = append(node.Children, nodeMap[child]) - } - } - - rootNode := &treeNode{ - Name: "root", - FullName: "root", - Cum: rootValue, - CumFormat: config.FormatValue(rootValue), - Percent: strings.TrimSpace(measurement.Percentage(rootValue, config.Total)), - Children: nodes[0:nroots], - } - - // JSON marshalling flame graph - b, err := json.Marshal(rootNode) - if err != nil { - http.Error(w, "error serializing flame graph", http.StatusInternalServerError) - ui.options.UI.PrintErr(err) - return - } - - ui.render(w, req, "flamegraph", rpt, errList, config.Labels, webArgs{ - FlameGraph: template.JS(b), - Nodes: nodeArr, - }) -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/common.js b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/common.js index ff980f66de..4a2067eb68 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/common.js +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/common.js @@ -558,11 +558,6 @@ function viewer(baseUrl, nodes, options) { return null; } - // convert a string to a regexp that matches that string. - function quotemeta(str) { - return str.replace(/([\\\.?+*\[\](){}|^$])/g, '\\$1'); - } - function setSampleIndexLink(si) { const elem = document.getElementById('sampletype-' + si); if (elem != null) { @@ -595,7 +590,7 @@ function viewer(baseUrl, nodes, options) { // list-based. Construct regular expression depending on mode. let re = regexpActive ? search.value - : Array.from(getSelection().keys()).map(key => quotemeta(nodes[key])).join('|'); + : Array.from(getSelection().keys()).map(key => pprofQuoteMeta(nodes[key])).join('|'); setHrefParams(elem, function (params) { if (re != '') { @@ -683,7 +678,7 @@ function viewer(baseUrl, nodes, options) { } const ids = ['topbtn', 'graphbtn', - 'flamegraph', 'flamegraph2', 'flamegraphold', + 'flamegraph', 'peek', 'list', 'disasm', 'focus', 'ignore', 'hide', 'show', 'show-from']; ids.forEach(makeSearchLinkDynamic); @@ -712,3 +707,8 @@ function viewer(baseUrl, nodes, options) { main.focus(); } } + +// convert a string to a regexp that matches exactly that string. +function pprofQuoteMeta(str) { + return '^' + str.replace(/([\\\.?+*\[\](){}|^$])/g, '\\$1') + '$'; +} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/flamegraph.html b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/flamegraph.html deleted file mode 100644 index 9866755bcd..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/flamegraph.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - {{.Title}} - {{template "css" .}} - - - - - {{template "header" .}} -
-
-
-
-
-
- {{template "script" .}} - - - - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/header.html b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/header.html index 42cb7960e6..e946e6b882 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/header.html +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/header.html @@ -12,7 +12,6 @@ Top Graph Flame Graph - Flame Graph (old) Peek Source Disassemble diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/stacks.js b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/stacks.js index be78edd553..c8059fe6bf 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/html/stacks.js +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/html/stacks.js @@ -75,8 +75,12 @@ function stackViewer(stacks, nodes) { hiliter: (n, on) => { return hilite(n, on); }, current: () => { let r = new Map(); - for (let p of pivots) { - r.set(p, true); + if (pivots.length == 1 && pivots[0] == 0) { + // Not pivoting + } else { + for (let p of pivots) { + r.set(p, true); + } } return r; }}); @@ -145,7 +149,7 @@ function stackViewer(stacks, nodes) { } // Update params to include src. - let v = stacks.Sources[src].RE; + let v = pprofQuoteMeta(stacks.Sources[src].FullName); if (param != 'f' && param != 'sf') { // old f,sf values are overwritten // Add new source to current parameter value. const old = params.get(param); @@ -174,7 +178,11 @@ function stackViewer(stacks, nodes) { function switchPivots(regexp) { // Switch URL without hitting the server. const url = new URL(document.URL); - url.searchParams.set('p', regexp); + if (regexp === '' || regexp === '^$') { + url.searchParams.delete('p'); // Not pivoting + } else { + url.searchParams.set('p', regexp); + } history.pushState('', '', url.toString()); // Makes back-button work matches = new Set(); search.value = ''; @@ -445,7 +453,7 @@ function stackViewer(stacks, nodes) { r.appendChild(t); } - r.addEventListener('click', () => { switchPivots(src.RE); }); + r.addEventListener('click', () => { switchPivots(pprofQuoteMeta(src.UniqueName)); }); r.addEventListener('mouseenter', () => { handleEnter(box, r); }); r.addEventListener('mouseleave', () => { handleLeave(box); }); r.addEventListener('contextmenu', (e) => { showActionMenu(e, box); }); diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/stacks.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/stacks.go index 249dfe0742..6a61613344 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/stacks.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/stacks.go @@ -22,7 +22,7 @@ import ( "github.com/google/pprof/internal/report" ) -// stackView generates the new flamegraph view. +// stackView generates the flamegraph view. func (ui *webInterface) stackView(w http.ResponseWriter, req *http.Request) { // Get all data in a report. rpt, errList := ui.makeReport(w, req, []string{"svg"}, func(cfg *config) { diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/svg.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/svg.go index 62767e726d..9cbef4d787 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/svg.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/svg.go @@ -65,7 +65,7 @@ func massageSVG(svg string) string { if loc := graphID.FindStringIndex(svg); loc != nil { svg = svg[:loc[0]] + - `` + + `` + `` + svg[loc[0]:] } diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/webhtml.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/webhtml.go index 55973ffb9f..984936a9d6 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/webhtml.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/webhtml.go @@ -19,8 +19,6 @@ import ( "fmt" "html/template" "os" - - "github.com/google/pprof/third_party/d3flamegraph" ) //go:embed html @@ -52,11 +50,7 @@ func addTemplates(templates *template.Template) { template.Must(templates.AddParseTree(name, sub.Tree)) } - // Pre-packaged third-party files. - def("d3flamegraphscript", d3flamegraph.JSSource) - def("d3flamegraphcss", d3flamegraph.CSSSource) - - // Embeded files. + // Embedded files. def("css", loadCSS("html/common.css")) def("header", loadFile("html/header.html")) def("graph", loadFile("html/graph.html")) @@ -64,7 +58,7 @@ func addTemplates(templates *template.Template) { def("top", loadFile("html/top.html")) def("sourcelisting", loadFile("html/source.html")) def("plaintext", loadFile("html/plaintext.html")) - def("flamegraph", loadFile("html/flamegraph.html")) + // TODO: Rename "stacks" to "flamegraph" to seal moving off d3 flamegraph. def("stacks", loadFile("html/stacks.html")) def("stacks_css", loadCSS("html/stacks.css")) def("stacks_js", loadJS("html/stacks.js")) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/webui.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/webui.go index 41b30021f5..476e1d2cdf 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/webui.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/webui.go @@ -112,7 +112,6 @@ func serveWebInterface(hostport string, p *profile.Profile, o *plugin.Options, d ui.help["details"] = "Show information about the profile and this view" ui.help["graph"] = "Display profile as a directed graph" ui.help["flamegraph"] = "Display profile as a flame graph" - ui.help["flamegraphold"] = "Display profile as a flame graph (old version; slated for removal)" ui.help["reset"] = "Show the entire profile" ui.help["save_config"] = "Save current settings" @@ -130,9 +129,9 @@ func serveWebInterface(hostport string, p *profile.Profile, o *plugin.Options, d "/disasm": http.HandlerFunc(ui.disasm), "/source": http.HandlerFunc(ui.source), "/peek": http.HandlerFunc(ui.peek), - "/flamegraphold": http.HandlerFunc(ui.flamegraph), "/flamegraph": http.HandlerFunc(ui.stackView), - "/flamegraph2": http.HandlerFunc(ui.stackView), // Support older URL + "/flamegraph2": redirectWithQuery("flamegraph", http.StatusMovedPermanently), // Keep legacy URL working. + "/flamegraphold": redirectWithQuery("flamegraph", http.StatusMovedPermanently), // Keep legacy URL working. "/saveconfig": http.HandlerFunc(ui.saveConfig), "/deleteconfig": http.HandlerFunc(ui.deleteConfig), "/download": http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { @@ -209,15 +208,20 @@ func defaultWebServer(args *plugin.HTTPServerArgs) error { // https://github.com/google/pprof/pull/348 mux := http.NewServeMux() mux.Handle("/ui/", http.StripPrefix("/ui", handler)) - mux.Handle("/", redirectWithQuery("/ui")) + mux.Handle("/", redirectWithQuery("/ui", http.StatusTemporaryRedirect)) s := &http.Server{Handler: mux} return s.Serve(ln) } -func redirectWithQuery(path string) http.HandlerFunc { +// redirectWithQuery responds with a given redirect code, preserving query +// parameters in the redirect URL. It does not convert relative paths to +// absolute paths like http.Redirect does, so that HTTPServerArgs.Handlers can +// generate relative redirects that work with the external prefixing. +func redirectWithQuery(path string, code int) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { pathWithQuery := &gourl.URL{Path: path, RawQuery: r.URL.RawQuery} - http.Redirect(w, r, pathWithQuery.String(), http.StatusTemporaryRedirect) + w.Header().Set("Location", pathWithQuery.String()) + w.WriteHeader(code) } } diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/graph.go b/src/cmd/vendor/github.com/google/pprof/internal/graph/graph.go index b64ef27991..5ad10a2ae0 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/graph.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/graph/graph.go @@ -154,6 +154,7 @@ type NodeInfo struct { Address uint64 File string StartLine, Lineno int + Columnno int Objfile string } @@ -174,8 +175,12 @@ func (i *NodeInfo) NameComponents() []string { switch { case i.Lineno != 0: + s := fmt.Sprintf("%s:%d", i.File, i.Lineno) + if i.Columnno != 0 { + s += fmt.Sprintf(":%d", i.Columnno) + } // User requested line numbers, provide what we have. - name = append(name, fmt.Sprintf("%s:%d", i.File, i.Lineno)) + name = append(name, s) case i.File != "": // User requested file name, provide it. name = append(name, i.File) @@ -239,6 +244,7 @@ func (nm NodeMap) FindOrInsertNode(info NodeInfo, kept NodeSet) *Node { // Find a node that represents the whole function. info.Address = 0 info.Lineno = 0 + info.Columnno = 0 n.Function = nm.FindOrInsertNode(info, nil) return n } @@ -592,9 +598,10 @@ func nodeInfo(l *profile.Location, line profile.Line, objfile string, o *Options return &NodeInfo{Address: l.Address, Objfile: objfile} } ni := &NodeInfo{ - Address: l.Address, - Lineno: int(line.Line), - Name: line.Function.Name, + Address: l.Address, + Lineno: int(line.Line), + Columnno: int(line.Column), + Name: line.Function.Name, } if fname := line.Function.Filename; fname != "" { ni.File = filepath.Clean(fname) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/plugin/plugin.go b/src/cmd/vendor/github.com/google/pprof/internal/plugin/plugin.go index 98eb1dd817..c934551036 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/plugin/plugin.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/plugin/plugin.go @@ -157,11 +157,12 @@ type ObjFile interface { Close() error } -// A Frame describes a single line in a source file. +// A Frame describes a location in a single line in a source file. type Frame struct { - Func string // name of function - File string // source file name - Line int // line in file + Func string // name of function + File string // source file name + Line int // line in file + Column int // column in line (if available) } // A Sym describes a single symbol in an object file. diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/report.go b/src/cmd/vendor/github.com/google/pprof/internal/report/report.go index f73e49a176..96b80039e6 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/report.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/report/report.go @@ -293,7 +293,7 @@ func (rpt *Report) newGraph(nodes graph.NodeSet) *graph.Graph { return graph.New(rpt.prof, gopt) } -// printProto writes the incoming proto via thw writer w. +// printProto writes the incoming proto via the writer w. // If the divide_by option has been specified, samples are scaled appropriately. func printProto(w io.Writer, rpt *Report) error { p, o := rpt.prof, rpt.options @@ -339,6 +339,7 @@ func printTopProto(w io.Writer, rpt *Report) error { Line: []profile.Line{ { Line: int64(n.Info.Lineno), + Column: int64(n.Info.Columnno), Function: f, }, }, diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/stacks.go b/src/cmd/vendor/github.com/google/pprof/internal/report/stacks.go index 7db51bc01c..aa3bf80f2d 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/stacks.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/report/stacks.go @@ -18,7 +18,6 @@ import ( "crypto/sha256" "encoding/binary" "fmt" - "regexp" "github.com/google/pprof/internal/measurement" "github.com/google/pprof/profile" @@ -54,9 +53,6 @@ type StackSource struct { // Guaranteed to be non-empty. Display []string - // Regular expression (anchored) that matches exactly FullName. - RE string - // Places holds the list of stack slots where this source occurs. // In particular, if [a,b] is an element in Places, // StackSet.Stacks[a].Sources[b] points to this source. @@ -135,7 +131,6 @@ func (s *StackSet) makeInitialStacks(rpt *Report) { unknownIndex++ } x.Inlined = inlined - x.RE = "^" + regexp.QuoteMeta(x.UniqueName) + "$" x.Display = shortNameList(x.FullName) s.Sources = append(s.Sources, x) srcs[k] = len(s.Sources) - 1 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer.go b/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer.go index c3f6cc6281..5ca71ab8be 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer.go @@ -181,6 +181,7 @@ func doLocalSymbolize(prof *profile.Profile, fast, force bool, obj plugin.ObjToo l.Line[i] = profile.Line{ Function: f, Line: int64(frame.Line), + Column: int64(frame.Column), } } diff --git a/src/cmd/vendor/github.com/google/pprof/profile/encode.go b/src/cmd/vendor/github.com/google/pprof/profile/encode.go index 182c926b90..860bb304c3 100644 --- a/src/cmd/vendor/github.com/google/pprof/profile/encode.go +++ b/src/cmd/vendor/github.com/google/pprof/profile/encode.go @@ -530,6 +530,7 @@ func (p *Line) decoder() []decoder { func (p *Line) encode(b *buffer) { encodeUint64Opt(b, 1, p.functionIDX) encodeInt64Opt(b, 2, p.Line) + encodeInt64Opt(b, 3, p.Column) } var lineDecoder = []decoder{ @@ -538,6 +539,8 @@ var lineDecoder = []decoder{ func(b *buffer, m message) error { return decodeUint64(b, &m.(*Line).functionIDX) }, // optional int64 line = 2 func(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Line) }, + // optional int64 column = 3 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Column) }, } func (p *Function) decoder() []decoder { diff --git a/src/cmd/vendor/github.com/google/pprof/profile/legacy_java_profile.go b/src/cmd/vendor/github.com/google/pprof/profile/legacy_java_profile.go index 91f45e53c6..4580bab183 100644 --- a/src/cmd/vendor/github.com/google/pprof/profile/legacy_java_profile.go +++ b/src/cmd/vendor/github.com/google/pprof/profile/legacy_java_profile.go @@ -56,7 +56,7 @@ func javaCPUProfile(b []byte, period int64, parse func(b []byte) (uint64, []byte } // Strip out addresses for better merge. - if err = p.Aggregate(true, true, true, true, false); err != nil { + if err = p.Aggregate(true, true, true, true, false, false); err != nil { return nil, err } @@ -99,7 +99,7 @@ func parseJavaProfile(b []byte) (*Profile, error) { } // Strip out addresses for better merge. - if err = p.Aggregate(true, true, true, true, false); err != nil { + if err = p.Aggregate(true, true, true, true, false, false); err != nil { return nil, err } diff --git a/src/cmd/vendor/github.com/google/pprof/profile/merge.go b/src/cmd/vendor/github.com/google/pprof/profile/merge.go index 4b66282cb8..eee0132e74 100644 --- a/src/cmd/vendor/github.com/google/pprof/profile/merge.go +++ b/src/cmd/vendor/github.com/google/pprof/profile/merge.go @@ -326,12 +326,13 @@ func (l *Location) key() locationKey { key.addr -= l.Mapping.Start key.mappingID = l.Mapping.ID } - lines := make([]string, len(l.Line)*2) + lines := make([]string, len(l.Line)*3) for i, line := range l.Line { if line.Function != nil { lines[i*2] = strconv.FormatUint(line.Function.ID, 16) } lines[i*2+1] = strconv.FormatInt(line.Line, 16) + lines[i*2+2] = strconv.FormatInt(line.Column, 16) } key.lines = strings.Join(lines, "|") return key @@ -418,6 +419,7 @@ func (pm *profileMerger) mapLine(src Line) Line { ln := Line{ Function: pm.mapFunction(src.Function), Line: src.Line, + Column: src.Column, } return ln } diff --git a/src/cmd/vendor/github.com/google/pprof/profile/profile.go b/src/cmd/vendor/github.com/google/pprof/profile/profile.go index 60ef7e9268..62df80a556 100644 --- a/src/cmd/vendor/github.com/google/pprof/profile/profile.go +++ b/src/cmd/vendor/github.com/google/pprof/profile/profile.go @@ -145,6 +145,7 @@ type Location struct { type Line struct { Function *Function Line int64 + Column int64 functionIDX uint64 } @@ -436,7 +437,7 @@ func (p *Profile) CheckValid() error { // Aggregate merges the locations in the profile into equivalence // classes preserving the request attributes. It also updates the // samples to point to the merged locations. -func (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, address bool) error { +func (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, columnnumber, address bool) error { for _, m := range p.Mapping { m.HasInlineFrames = m.HasInlineFrames && inlineFrame m.HasFunctions = m.HasFunctions && function @@ -458,7 +459,7 @@ func (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, address } // Aggregate locations - if !inlineFrame || !address || !linenumber { + if !inlineFrame || !address || !linenumber || !columnnumber { for _, l := range p.Location { if !inlineFrame && len(l.Line) > 1 { l.Line = l.Line[len(l.Line)-1:] @@ -466,6 +467,12 @@ func (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, address if !linenumber { for i := range l.Line { l.Line[i].Line = 0 + l.Line[i].Column = 0 + } + } + if !columnnumber { + for i := range l.Line { + l.Line[i].Column = 0 } } if !address { @@ -627,10 +634,11 @@ func (l *Location) string() string { for li := range l.Line { lnStr := "??" if fn := l.Line[li].Function; fn != nil { - lnStr = fmt.Sprintf("%s %s:%d s=%d", + lnStr = fmt.Sprintf("%s %s:%d:%d s=%d", fn.Name, fn.Filename, l.Line[li].Line, + l.Line[li].Column, fn.StartLine) if fn.Name != fn.SystemName { lnStr = lnStr + "(" + fn.SystemName + ")" diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_FLAME_GRAPH_LICENSE b/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_FLAME_GRAPH_LICENSE deleted file mode 100644 index 8dada3edaf..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_FLAME_GRAPH_LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_LICENSE b/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_LICENSE deleted file mode 100644 index b0145150fd..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/D3_LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2010-2021 Mike Bostock - -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/README.md b/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/README.md deleted file mode 100644 index eb84b68007..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Building a customized D3.js bundle - -The D3.js version distributed with pprof is customized to only include the -modules required by pprof. - -## Dependencies - -- Install [npm](https://www.npmjs.com). - -## Building - -- Run `update.sh` to: - - Download npm package dependencies (declared in `package.json` and `package-lock.json`) - - Create a d3.js bundle containing the JavScript of d3 and d3-flame-graph (by running `webpack`) - -This will `d3_flame_graph.go`, the minified custom D3.js bundle as Go source code. - -# References / Appendix - -## D3 Custom Bundle - -A demonstration of building a custom D3 4.0 bundle using ES2015 modules and Rollup. - -[bl.ocks.org/mbostock/bb09af4c39c79cffcde4](https://bl.ocks.org/mbostock/bb09af4c39c79cffcde4) - -## Old version of d3-pprof - -A previous version of d3-flame-graph bundled for pprof used Rollup instead of -Webpack. This has now been migrated directly into this directory. - -The repository configuring Rollup was here: - -[github.com/spiermar/d3-pprof](https://github.com/spiermar/d3-pprof) diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/d3_flame_graph.go b/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/d3_flame_graph.go deleted file mode 100644 index 7e27941995..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/d3_flame_graph.go +++ /dev/null @@ -1,65 +0,0 @@ -// D3.js is a JavaScript library for manipulating documents based on data. -// https://github.com/d3/d3 -// See D3_LICENSE file for license details - -// d3-flame-graph is a D3.js plugin that produces flame graphs from hierarchical data. -// https://github.com/spiermar/d3-flame-graph -// See D3_FLAME_GRAPH_LICENSE file for license details - -package d3flamegraph - -// JSSource returns the d3 and d3-flame-graph JavaScript bundle -const JSSource = ` - -!function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var e=n();for(var r in e)("object"==typeof exports?exports:t)[r]=e[r]}}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return function(n){return n.matches(t)}}t.r(n),t.d(n,{flamegraph:()=>ji,select:()=>pt});var a=Array.prototype.find;function l(){return this.firstElementChild}var s=Array.prototype.filter;function c(){return Array.from(this.children)}function f(t){return new Array(t.length)}function h(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function p(t){return function(){return t}}function d(t,n,e,r,i,o){for(var u,a=0,l=n.length,s=o.length;an?1:t>=n?0:NaN}h.prototype={constructor:h,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var _="http://www.w3.org/1999/xhtml";const w={svg:"http://www.w3.org/2000/svg",xhtml:_,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function b(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),w.hasOwnProperty(n)?{space:w[n],local:t}:t}function x(t){return function(){this.removeAttribute(t)}}function M(t){return function(){this.removeAttributeNS(t.space,t.local)}}function A(t,n){return function(){this.setAttribute(t,n)}}function N(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function E(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function k(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function S(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function C(t){return function(){this.style.removeProperty(t)}}function P(t,n,e){return function(){this.style.setProperty(t,n,e)}}function j(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function q(t,n){return t.style.getPropertyValue(n)||S(t).getComputedStyle(t,null).getPropertyValue(n)}function O(t){return function(){delete this[t]}}function L(t,n){return function(){this[t]=n}}function T(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function B(t){return t.trim().split(/^|\s+/)}function D(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=B(t.getAttribute("class")||"")}function R(t,n){for(var e=D(t),r=-1,i=n.length;++r=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function ut(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ft=[null];function ht(t,n){this._groups=t,this._parents=n}function pt(t){return"string"==typeof t?new ht([[document.querySelector(t)]],[document.documentElement]):new ht([[t]],ft)}function dt(){}function gt(t){return null==t?dt:function(){return this.querySelector(t)}}function vt(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function yt(){return[]}function mt(t){return null==t?yt:function(){return this.querySelectorAll(t)}}function _t(t){return function(){return this.matches(t)}}function wt(t){return function(n){return n.matches(t)}}ht.prototype=function(){return new ht([[document.documentElement]],ft)}.prototype={constructor:ht,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o=E&&(E=N+1);!(A=b[E])&&++E<_;);M._next=A||null}}return(u=new ht(u,r))._enter=a,u._exit=l,u},enter:function(){return new ht(this._enter||this._groups.map(f),this._parents)},exit:function(){return new ht(this._exit||this._groups.map(f),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),l=0;l=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=m);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?C:"function"==typeof n?j:P)(t,n,null==e?"":e)):q(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?O:"function"==typeof n?T:L)(t,n)):this.node()[t]},classed:function(t,n){var e=B(t+"");if(arguments.length<2){for(var r=D(this.node()),i=-1,o=e.length;++in?1:t>=n?0:NaN}Et.prototype={constructor:Et,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Ot="http://www.w3.org/1999/xhtml";const Lt={svg:"http://www.w3.org/2000/svg",xhtml:Ot,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Tt(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Lt.hasOwnProperty(n)?{space:Lt[n],local:t}:t}function Bt(t){return function(){this.removeAttribute(t)}}function Dt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ht(t,n){return function(){this.setAttribute(t,n)}}function Rt(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Vt(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function Xt(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function zt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function It(t){return function(){this.style.removeProperty(t)}}function $t(t,n,e){return function(){this.style.setProperty(t,n,e)}}function Ut(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Yt(t,n){return t.style.getPropertyValue(n)||zt(t).getComputedStyle(t,null).getPropertyValue(n)}function Ft(t){return function(){delete this[t]}}function Zt(t,n){return function(){this[t]=n}}function Gt(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function Jt(t){return t.trim().split(/^|\s+/)}function Kt(t){return t.classList||new Qt(t)}function Qt(t){this._node=t,this._names=Jt(t.getAttribute("class")||"")}function Wt(t,n){for(var e=Kt(t),r=-1,i=n.length;++r=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function bn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var En=[null];function kn(t,n){this._groups=t,this._parents=n}function Sn(){return new kn([[document.documentElement]],En)}kn.prototype=Sn.prototype={constructor:kn,select:function(t){"function"!=typeof t&&(t=gt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=b&&(b=w+1);!(_=v[b])&&++b=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=qt);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?It:"function"==typeof n?Ut:$t)(t,n,null==e?"":e)):Yt(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?Ft:"function"==typeof n?Gt:Zt)(t,n)):this.node()[t]},classed:function(t,n){var e=Jt(t+"");if(arguments.length<2){for(var r=Kt(this.node()),i=-1,o=e.length;++i1?r[0]+r.slice(2):r,+t.slice(e+1)]}function qn(t){return(t=jn(Math.abs(t)))?t[1]:NaN}var On,Ln=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Tn(t){if(!(n=Ln.exec(t)))throw new Error("invalid format: "+t);var n;return new Bn({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Bn(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Dn(t,n){var e=jn(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Tn.prototype=Bn.prototype,Bn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Hn={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>Dn(100*t,n),r:Dn,s:function(t,n){var e=jn(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(On=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+jn(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Rn(t){return t}var Vn,Xn,zn,In=Array.prototype.map,$n=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Un(t,n){return null==t||null==n?NaN:tn?1:t>=n?0:NaN}function Yn(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Fn(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Zn(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Jn)):void 0===n&&(n=Gn);for(var e,r,i,o,u,a=new Wn(t),l=[a];e=l.pop();)if((i=n(e.data))&&(u=(i=Array.from(i)).length))for(e.children=i,o=u-1;o>=0;--o)l.push(r=i[o]=new Wn(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Qn)}function Gn(t){return t.children}function Jn(t){return Array.isArray(t)?t[1]:null}function Kn(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Qn(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Wn(t){this.data=t,this.depth=this.height=0,this.parent=null}Vn=function(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?Rn:(n=In.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],u=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),o.push(t.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[u=(u+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",u=void 0===t.decimal?".":t.decimal+"",a=void 0===t.numerals?Rn:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(In.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function f(t){var n=(t=Tn(t)).fill,e=t.align,f=t.sign,h=t.symbol,p=t.zero,d=t.width,g=t.comma,v=t.precision,y=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Hn[m]||(void 0===v&&(v=12),y=!0,m="g"),(p||"0"===n&&"="===e)&&(p=!0,n="0",e="=");var _="$"===h?i:"#"===h&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",w="$"===h?o:/[%p]/.test(m)?l:"",b=Hn[m],x=/[defgprs%]/.test(m);function M(t){var i,o,l,h=_,M=w;if("c"===m)M=b(t)+M,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:b(Math.abs(t),v),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),A&&0==+t&&"+"!==f&&(A=!1),h=(A?"("===f?f:s:"-"===f||"("===f?"":f)+h,M=("s"===m?$n[8+On/3]:"")+M+(A&&"("===f?")":""),x)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){M=(46===l?u+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!p&&(t=r(t,1/0));var N=h.length+t.length+M.length,E=N>1)+h+t+M+E.slice(N);break;default:t=E+h+t+M}return a(t)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:f,formatPrefix:function(t,n){var e=f(((t=Tn(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(qn(n)/3))),i=Math.pow(10,-r),o=$n[8+r/3];return function(t){return e(i*t)+o}}}}({thousands:",",grouping:[3],currency:["$",""]}),Xn=Vn.format,zn=Vn.formatPrefix,Wn.prototype=Zn.prototype={constructor:Wn,count:function(){return this.eachAfter(Fn)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,u=[o],a=[],l=-1;o=u.pop();)if(a.push(o),e=o.children)for(r=0,i=e.length;r=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Zn(this).eachBefore(Kn)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e=0?(o>=te?10:o>=ne?5:o>=ee?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=te?10:o>=ne?5:o>=ee?2:1)}function ie(t){let n=t,e=t,r=t;function i(t,n,i=0,o=t.length){if(i>>1;r(t[e],n)<0?i=e+1:o=e}while(it(n)-e,e=Un,r=(n,e)=>Un(t(n),e)),{left:i,center:function(t,e,r=0,o=t.length){const u=i(t,e,r,o-1);return u>r&&n(t[u-1],e)>-n(t[u],e)?u-1:u},right:function(t,n,i=0,o=t.length){if(i>>1;r(t[e],n)<=0?i=e+1:o=e}while(i>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Se(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Se(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=ye.exec(t))?new je(n[1],n[2],n[3],1):(n=me.exec(t))?new je(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=_e.exec(t))?Se(n[1],n[2],n[3],n[4]):(n=we.exec(t))?Se(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=be.exec(t))?Te(n[1],n[2]/100,n[3]/100,1):(n=xe.exec(t))?Te(n[1],n[2]/100,n[3]/100,n[4]):Me.hasOwnProperty(t)?ke(Me[t]):"transparent"===t?new je(NaN,NaN,NaN,0):null}function ke(t){return new je(t>>16&255,t>>8&255,255&t,1)}function Se(t,n,e,r){return r<=0&&(t=n=e=NaN),new je(t,n,e,r)}function Ce(t){return t instanceof ce||(t=Ee(t)),t?new je((t=t.rgb()).r,t.g,t.b,t.opacity):new je}function Pe(t,n,e,r){return 1===arguments.length?Ce(t):new je(t,n,e,null==r?1:r)}function je(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function qe(){return"#"+Le(this.r)+Le(this.g)+Le(this.b)}function Oe(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Le(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Te(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new De(t,n,e,r)}function Be(t){if(t instanceof De)return new De(t.h,t.s,t.l,t.opacity);if(t instanceof ce||(t=Ee(t)),!t)return new De;if(t instanceof De)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,l=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&l<1?0:u,new De(u,a,l,t.opacity)}function De(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function He(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Re(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function Ve(t){return function(){return t}}function Xe(t,n){var e=n-t;return e?function(t,n){return function(e){return t+e*n}}(t,e):Ve(isNaN(t)?n:t)}le(ce,Ee,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Ae,formatHex:Ae,formatHsl:function(){return Be(this).formatHsl()},formatRgb:Ne,toString:Ne}),le(je,Pe,se(ce,{brighter:function(t){return t=null==t?he:Math.pow(he,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?fe:Math.pow(fe,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qe,formatHex:qe,formatRgb:Oe,toString:Oe})),le(De,(function(t,n,e,r){return 1===arguments.length?Be(t):new De(t,n,e,null==r?1:r)}),se(ce,{brighter:function(t){return t=null==t?he:Math.pow(he,t),new De(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?fe:Math.pow(fe,t),new De(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new je(He(t>=240?t-240:t+120,i,r),He(t,i,r),He(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const ze=function t(n){var e=function(t){return 1==(t=+t)?Xe:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Ve(isNaN(n)?e:n)}}(n);function r(t,n){var r=e((t=Pe(t)).r,(n=Pe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Xe(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function Ie(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=ro&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,l.push({i:u,x:Ye(e,r)})),o=Ge.lastIndex;return on&&(e=t,t=n,n=e),s=function(e){return Math.max(t,Math.min(n,e))}),r=l>2?or:ir,i=o=null,f}function f(n){return null==n||isNaN(n=+n)?e:(i||(i=r(u.map(t),a,l)))(t(s(n)))}return f.invert=function(e){return s(n((o||(o=r(a,u.map(t),Ye)))(e)))},f.domain=function(t){return arguments.length?(u=Array.from(t,tr),c()):u.slice()},f.range=function(t){return arguments.length?(a=Array.from(t),c()):a.slice()},f.rangeRound=function(t){return a=Array.from(t),l=We,c()},f.clamp=function(t){return arguments.length?(s=!!t||er,c()):s!==er},f.interpolate=function(t){return arguments.length?(l=t,c()):l},f.unknown=function(t){return arguments.length?(e=t,f):e},function(e,r){return t=e,n=r,c()}}()(er,er)}function lr(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function sr(t){var n=t.domain;return t.ticks=function(t){var e=n();return function(t,n,e){var r,i,o,u,a=-1;if(e=+e,(t=+t)==(n=+n)&&e>0)return[t];if((r=n0){let e=Math.round(t/u),r=Math.round(n/u);for(e*un&&--r,o=new Array(i=r-e+1);++an&&--r,o=new Array(i=r-e+1);++a=te?i*=10:o>=ne?i*=5:o>=ee&&(i*=2),n0;){if((i=re(l,s,e))===r)return o[u]=l,o[a]=s,n(o);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}r=i}return t},t}function cr(){var t=ar();return t.copy=function(){return ur(t,cr())},lr.apply(t,arguments),sr(t)}function fr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var hr={value:()=>{}};function pr(){for(var t,n=0,e=arguments.length,r={};n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function vr(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&n._call.call(null,t),n=n._next;--br}()}finally{br=0,function(){for(var t,n,e=_r,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:_r=n);wr=t,Tr(r)}(),Nr=0}}function Lr(){var t=kr.now(),n=t-Ar;n>1e3&&(Er-=n,Ar=t)}function Tr(t){br||(xr&&(xr=clearTimeout(xr)),t-Nr>24?(t<1/0&&(xr=setTimeout(Or,t-kr.now()-Er)),Mr&&(Mr=clearInterval(Mr))):(Mr||(Ar=kr.now(),Mr=setInterval(Lr,1e3)),br=1,Sr(Or)))}function Br(t,n,e){var r=new jr;return n=null==n?0:+n,r.restart((function(e){r.stop(),t(e+n)}),n,e),r}jr.prototype=qr.prototype={constructor:jr,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Cr():+e)+(null==n?0:+n),this._next||wr===this||(wr?wr._next=this:_r=this,wr=this),this._call=t,this._time=e,Tr()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tr())}};var Dr=mr("start","end","cancel","interrupt"),Hr=[];function Rr(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(l){var s,c,f,h;if(1!==e.state)return a();for(s in i)if((h=i[s]).name===e.name){if(3===h.state)return Br(o);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[s]):+s0)throw new Error("too late; already scheduled");return e}function Xr(t,n){var e=zr(t,n);if(e.state>3)throw new Error("too late; already running");return e}function zr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}var Ir,$r,Ur,Yr,Fr=180/Math.PI,Zr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Gr(t,n,e,r,i,o){var u,a,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*e+n*r)&&(e-=t*l,r-=n*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),t*r180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Ye(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,l),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Ye(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,l),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Ye(t,e)},{i:a-2,x:Ye(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,l),o=u=null,function(t){for(var n,e=-1,r=l.length;++e=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?Vr:Xr;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var _i=Cn.prototype.constructor;function wi(t){return function(){this.style.removeProperty(t)}}function bi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function xi(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&bi(t,o,e)),r}return o._value=n,o}function Mi(t){return function(n){this.textContent=t.call(this,n)}}function Ai(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&Mi(r)),n}return r._value=t,r}var Ni=0;function Ei(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function ki(){return++Ni}var Si=Cn.prototype;Ei.prototype=function(t){return Cn().transition(t)}.prototype={constructor:Ei,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=gt(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u{p&&(p.textContent="search: "+n+" of "+e+" total samples ( "+Xn(".3f")(n/e*100,3)+"%)")},d()};const k=E;let S=(t,n,e=!1)=>{if(!n)return!1;let r=b(t);e&&(n=n.toLowerCase(),r=r.toLowerCase());const i=new RegExp(n);return void 0!==r&&r&&r.match(i)};const C=S;let P=function(t){p&&(t?p.textContent=t:"function"==typeof d?d():p.textContent="")};const j=P;let q=function(t){return b(t)+" ("+Xn(".3f")(100*(t.x1-t.x0),3)+"%, "+x(t)+" samples)"},O=function(t){return t.highlight?"#E600E6":function(t,n){let e=w||"warm";w||void 0===n||""===n||(e="red",void 0!==t&&t&&t.match(/::/)&&(e="yellow"),"kernel"===n?e="orange":"jit"===n?e="green":"inlined"===n&&(e="aqua"));const r=function(t){let n=0;if(t){const e=t.split("` + "`" + `");e.length>1&&(t=e[e.length-1]),n=function(t){let n=0,e=0,r=1;if(t){for(let i=0;i6);i++)n+=r*(t.charCodeAt(i)%10),e+=9*r,r*=.7;e>0&&(n/=e)}return n}(t=t.split("(")[0])}return n}(t);return function(t,n){let e,r,i;return"red"===t?(e=200+Math.round(55*n),r=50+Math.round(80*n),i=r):"orange"===t?(e=190+Math.round(65*n),r=90+Math.round(65*n),i=0):"yellow"===t?(e=175+Math.round(55*n),r=e,i=50+Math.round(20*n)):"green"===t?(e=50+Math.round(60*n),r=200+Math.round(55*n),i=e):"pastelgreen"===t?(e=163+Math.round(75*n),r=195+Math.round(49*n),i=72+Math.round(149*n)):"blue"===t?(e=91+Math.round(126*n),r=156+Math.round(76*n),i=221+Math.round(26*n)):"aqua"===t?(e=50+Math.round(60*n),r=165+Math.round(55*n),i=r):"cold"===t?(e=0+Math.round(55*(1-n)),r=0+Math.round(230*(1-n)),i=200+Math.round(55*n)):(e=200+Math.round(55*n),r=0+Math.round(230*(1-n)),i=0+Math.round(55*(1-n))),"rgb("+e+","+r+","+i+")"}(e,r)}(b(t),A(t))};const L=O;function T(t){t.data.fade=!1,t.data.hide=!1,t.children&&t.children.forEach(T)}function B(t){t.parent&&(t.parent.data.fade=!0,B(t.parent))}function D(t){if(i&&i.hide(),function(t){let n,e,r,i=t,o=i.parent;for(;o;){for(n=o.children,e=n.length;e--;)r=n[e],r!==i&&(r.data.hide=!0);i=o,o=i.parent}}(t),T(t),B(t),z(),y){const n=Pn(this).select("svg")._groups[0][0].parentNode.offsetTop,r=(window.innerHeight-n)/e,i=(t.height-r+10)*e;window.scrollTo({top:n+i,left:0,behavior:"smooth"})}"function"==typeof c&&c(t)}function H(t,n){if(t.id===n)return t;{const e=M(t);if(e)for(let t=0;t0){const r=t/(n.x1-n.x0);e=e.filter((function(t){return(t.x1-t.x0)*r>h}))}return e}(r),y=Pn(this).select("svg");y.attr("width",t);let _=y.selectAll("g").data(g,(function(t){return t.id}));if(!n||v){const t=Math.max.apply(null,g.map((function(t){return t.depth})));n=(t+3)*e,n{D(n)})),_.exit().remove(),_.on("mouseover",(function(t,n){i&&i.show(n,this),P(q(n)),"function"==typeof f&&f(n)})).on("mouseout",(function(){i&&i.hide(),P(null)}))}))}function I(t,n){n.forEach((function(n){const e=t.find((function(t){return t.name===n.name}));e?(e.value+=n.value,n.children&&(e.children||(e.children=[]),I(e.children,n.children))):t.push(n)}))}function $(t){let n,e,r,i,o,u,a,l;const s=[],c=[],f=[],h=!g;let p=t.data;for(p.hide?(t.value=0,e=t.children,e&&f.push(e)):(t.value=p.fade?0:x(p),s.push(t));n=s.pop();)if(e=n.children,e&&(o=e.length)){for(i=0;o--;)a=e[o],p=a.data,p.hide?(a.value=0,r=a.children,r&&f.push(r)):(p.fade?a.value=0:(l=x(p),a.value=l,i+=l),s.push(a));h&&n.value&&(n.value-=i),c.push(e)}for(o=c.length;o--;){for(e=c[o],i=0,u=e.length;u--;)i+=e[u].value;e[0].parent.value+=i}for(;f.length;)for(e=f.pop(),u=e.length;u--;)a=e[u],a.value=0,r=a.children,r&&f.push(r)}function U(){r.datum((t=>{if("Node"!==t.constructor.name){const n=Zn(t,M);return function(t){let n=0;!function(t,n){n(t);let e=t.children;if(e){const t=[e];let r,i,o;for(;t.length;)for(e=t.pop(),r=e.length;r--;)i=e[r],n(i),o=i.children,o&&t.push(o)}}(t,(function(t){t.id=n++}))}(n),$(n),n.originalValue=n.value,_&&n.eachAfter((t=>{let n=N(t);const e=t.children;let r=e&&e.length;for(;--r>=0;)n+=e[r].delta;t.delta=n})),n}}))}function Y(e){if(!arguments.length)return Y;r=e,U(),r.each((function(e){if(0===Pn(this).select("svg").size()){const e=Pn(this).append("svg:svg").attr("width",t).attr("class","partition d3-flame-graph");n&&(n(I([n.data],[t]),n.data))),U(),z(),Y):Y},Y.update=function(t){return r?(t&&(r.datum(t),U()),z(),Y):Y},Y.destroy=function(){return r?(i&&(i.hide(),"function"==typeof i.destroy&&i.destroy()),r.selectAll("svg").remove(),Y):Y},Y.setColorMapper=function(t){return arguments.length?(O=n=>{const e=L(n);return t(n,e)},Y):(O=L,Y)},Y.color=Y.setColorMapper,Y.setColorHue=function(t){return arguments.length?(w=t,Y):(w=null,Y)},Y.minFrameSize=function(t){return arguments.length?(h=t,Y):h},Y.setDetailsElement=function(t){return arguments.length?(p=t,Y):p},Y.details=Y.setDetailsElement,Y.selfValue=function(t){return arguments.length?(g=t,Y):g},Y.resetHeightOnZoom=function(t){return arguments.length?(v=t,Y):v},Y.scrollOnZoom=function(t){return arguments.length?(y=t,Y):y},Y.getName=function(t){return arguments.length?(b=t,Y):b},Y.getValue=function(t){return arguments.length?(x=t,Y):x},Y.getChildren=function(t){return arguments.length?(M=t,Y):M},Y.getLibtype=function(t){return arguments.length?(A=t,Y):A},Y.getDelta=function(t){return arguments.length?(N=t,Y):N},Y.setSearchHandler=function(t){return arguments.length?(E=t,Y):(E=k,Y)},Y.setDetailsHandler=function(t){return arguments.length?(P=t,Y):(P=j,Y)},Y.setSearchMatch=function(t){return arguments.length?(S=t,Y):(S=C,Y)},Y}return Cn.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},Cn.prototype.transition=function(t){var n,e;t instanceof Ei?(n=t._id,t=t._name):(n=ki(),(e=Ci).time=Cr(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o d3_flame_graph.go -// D3.js is a JavaScript library for manipulating documents based on data. -// https://github.com/d3/d3 -// See D3_LICENSE file for license details - -// d3-flame-graph is a D3.js plugin that produces flame graphs from hierarchical data. -// https://github.com/spiermar/d3-flame-graph -// See D3_FLAME_GRAPH_LICENSE file for license details - -package d3flamegraph - -// JSSource returns the d3 and d3-flame-graph JavaScript bundle -const JSSource = \` - -$d3_js -\` - -// CSSSource returns the $D3FLAMEGRAPH_CSS file -const CSSSource = \` -$d3_css -\` - -EOF - gofmt -w d3_flame_graph.go -} - -get_licenses() { - cp node_modules/d3-selection/LICENSE D3_LICENSE - cp node_modules/d3-flame-graph/LICENSE D3_FLAME_GRAPH_LICENSE -} - -get_licenses -generate_d3_flame_graph_go diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/webpack.config.js b/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/webpack.config.js deleted file mode 100644 index 71239d9e96..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph/webpack.config.js +++ /dev/null @@ -1,13 +0,0 @@ -// Minimal webpack config to package a minified JS bundle (including -// dependencies) for execution in a