Since litter checks for circular references it needs to keep a ref to every object it sees.
With a large tree you will run out of memory. > On Jul 21, 2021, at 7:19 AM, jake...@gmail.com <jake6...@gmail.com> wrote: > > > The first thing I would do is remove the call to litter, and see if that > solved the issue. That would tell you immediately if the problem was the > litter package or the packages package. I have so specific knowledge, but it > is not impossible to imagine that you are simply trying to print something > way to big for litter. > > After that, using pprof might be your next step. > > Have you tried it on a really tiny package? > >> On Wednesday, July 21, 2021 at 6:41:39 AM UTC-4 mlevi...@gmail.com wrote: >> Hi all, >> >> I'm having a very hard time with golang.org/x/tools/go/packages. Spent most >> of my evening yesterday trying to understand what's happening here. >> Here's my code: https://play.golang.com/p/5L1N0lSaetB >> >> With this very simple code I would expect that the program prints detailed >> information about the package path I run it with. But whatever the package, >> or module, I try to use this with, the program is killed because it takes >> all the memory (~32GB) of my machine in a few seconds, nothing ever gets >> printed... >> >> Here's my config: >> GO111MODULE="" >> GOARCH="amd64" >> GOBIN="" >> GOCACHE="/home/michel/.cache/go-build" >> GOENV="/home/michel/.config/go/env" >> GOEXE="" >> GOFLAGS="" >> GOHOSTARCH="amd64" >> GOHOSTOS="linux" >> GOINSECURE="" >> GOMODCACHE="/home/michel/.go/pkg/mod" >> GONOPROXY="" >> GONOSUMDB="" >> GOOS="linux" >> GOPATH="/home/michel/.go" >> GOPRIVATE="" >> GOPROXY="https://proxy.golang.org,direct" >> GOROOT="/usr/local/go" >> GOSUMDB="sum.golang.org" >> GOTMPDIR="" >> GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" >> GOVCS="" >> GOVERSION="go1.16" >> GCCGO="gccgo" >> AR="ar" >> CC="gcc" >> CXX="g++" >> CGO_ENABLED="1" >> GOMOD="/dev/null" >> CGO_CFLAGS="-g -O2" >> CGO_CPPFLAGS="" >> CGO_CXXFLAGS="-g -O2" >> CGO_FFLAGS="-g -O2" >> CGO_LDFLAGS="-g -O2" >> PKG_CONFIG="pkg-config" >> GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 >> -fdebug-prefix-map=/tmp/go-build3825502007=/tmp/go-build >> -gno-record-gcc-switches" >> >> >> I have tried many, many things yesterday, including: >> - changing the `Mode` in the config >> - using go/types directly ("can't find import" for the package I'm look to >> parse) >> - using different importers >> - trying to load and parse different packages >> - ... >> >> For context, and to avoid any XY problem here, my goal is to parse a package >> and find an interface based on its name. Once this interface is found, I >> need to range over its method set and generate a structure implementing this >> interface, with (maybe not at the beginning but) a lot of logic, e.g. detect >> that an interface returns an implementation of itself, and so on. >> I'm working on a tool to generate mock structures from their interface >> method set, as a personal project, and this is kind of the most important >> part of it (being able to automatically generate the mock). >> >> If anyone would kindly help me find what I'm doing wrong, or at least point >> me to useful resources explaining how to fix my problem, I would be >> reaaaaaally delighted. This has been a problem for days now... And I can't >> find any relevant issue or blog as this is a peculiar context. >> >> Thanks in advance to all that will read this and have a nice day! :D > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/36cd11af-ee05-4e9e-8324-51212c80d99cn%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/7F218DE8-684D-4E56-8170-845A6053B0EC%40ix.netcom.com.