Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/net/spdy: processing of 35 bytes takes 7 seconds #10544

Closed
dvyukov opened this issue Apr 22, 2015 · 2 comments
Closed

x/net/spdy: processing of 35 bytes takes 7 seconds #10544

dvyukov opened this issue Apr 22, 2015 · 2 comments
Milestone

Comments

@dvyukov
Copy link
Member

dvyukov commented Apr 22, 2015

The following program runs for 7+ seconds. This is too much to process 35 bytes of input.

package main

import (
    "bytes"
    "encoding/hex"
    "golang.org/x/net/spdy"
    "io/ioutil"
)

func main() {
    data, _ := hex.DecodeString("80300002303030303030303078f9e3c6a7c24230104e04e57c08af090600000000ffff")
    framer, err := spdy.NewFramer(ioutil.Discard, bytes.NewReader(data))
    if err != nil {
        panic(err)
    }
    for score := 0; ; score++ {
        f, err := framer.ReadFrame()
        if err != nil {
            if f != nil {
                panic(err)
            }
            return
        }
        err = framer.WriteFrame(f)
        if err != nil {
            panic(err)
        }
    }
}

on commit 6f62f426de90c0ed6a55207b51476115fcb17237

@dvyukov dvyukov added this to the Go1.5 milestone Apr 22, 2015
@dvyukov
Copy link
Member Author

dvyukov commented Apr 22, 2015

The profile looks like:

 90.12%  spdy  spdy               [.] runtime.heapBitsSetType
  6.76%  spdy  [kernel.kallsyms]  [k] clear_page_c
  1.85%  spdy  spdy               [.] runtime.memclr

@iyangsj
Copy link

iyangsj commented Jan 5, 2016

The number of headers in SYN_REPLY frame is 740961381 !
As a result, it takes more than 7 seconds to create such a map with size 740961381.

@golang golang locked and limited conversation to collaborators Jan 4, 2017
@rsc rsc removed their assignment Jun 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants