func readCore() (*core.Process, *gocore.Process, error) {
	cc := coreCache
	if cc.cfg == cfg {
		return cc.coreP, cc.gocoreP, cc.err
	}
	c, err := core.Core(cfg.corefile, cfg.base, cfg.exePath)
	if err != nil {
		return nil, nil, err
	}
	p, err := gocore.Core(c)
	if os.IsNotExist(err) && cfg.exePath == "" {
		return nil, nil, fmt.Errorf("%v; consider specifying the --exe flag", err)
	}
	if err != nil {
		return nil, nil, err
	}
	for _, w := range c.Warnings() {
		fmt.Fprintf(os.Stderr, "WARNING: %s\n", w)
	}
	cc.cfg = cfg
	cc.coreP = c
	cc.gocoreP = p
	cc.err = nil
	return c, p, nil
}
func readCore() (*core.Process, *gocore.Process, error) {
	cc := coreCache
	if cc.cfg == cfg {
		return cc.coreP, cc.gocoreP, cc.err
	}
	c, err := core.Core(cfg.corefile, cfg.base, cfg.exePath)
	if err != nil {
		return nil, nil, err
	}
	p, err := gocore.Core(c)
	if os.IsNotExist(err) && cfg.exePath == "" {
		return nil, nil, fmt.Errorf("%v; consider specifying the --exe flag", err)
	}
	if err != nil {
		return nil, nil, err
	}
	for _, w := range c.Warnings() {
		fmt.Fprintf(os.Stderr, "WARNING: %s\n", w)
	}
	cc.cfg = cfg
	cc.coreP = c
	cc.gocoreP = p
	cc.err = nil
	return c, p, nil
}
func readCore ( ) ( * core . Process , * gocore . Process , error ) { cc := coreCache if cc . cfg == cfg { return cc . coreP , cc . gocoreP , cc . err } c , err := core . Core ( cfg . corefile , cfg . base , cfg . exePath ) if err != nil { return nil , nil , err } p , err := gocore . Core ( c ) if os . IsNotExist ( err ) && cfg . exePath == " " { return nil , nil , fmt . Errorf ( " " , err ) } if err != nil { return nil , nil , err } for _ , w := range c . Warnings ( ) { fmt . Fprintf ( os . Stderr , " \n " , w ) } cc . cfg = cfg cc . coreP = c cc . gocoreP = p cc . err = nil return c , p , nil }
// readCore reads corefile and returns core and gocore process states.
readCore reads corefile and returns core and gocore process states .