Opened 3 years ago

Closed 17 months ago

#16702 closed defect (fixed)

Broken INTRODUCE2 cell on an intro circ bothers Tor

Reported by: s7r Owned by:
Priority: High Milestone: Tor: unspecified
Component: Core Tor/Tor Version: Tor: 0.2.7.2-alpha
Severity: Normal Keywords: tor-hs
Cc: Actual Points:
Parent ID: Points: 2
Reviewer: Sponsor: SponsorR-must

Description

This was mentioned before in #8864 and #13973 which I've closed in favor of this ticket.

Debian Jessie 64 bit.
Tor 0.2.7.2-alpha

Jul 31 07:11:18.000 [warn] rend_service_receive_introduction(): Bug: Internal error: Got an INTRODUCE2 cell on an intro circ (for service "<hs>") with no corresponding rend_intro_point_t. (on Tor 0.2.7.2-alpha-dev )

<hs> is a valid hidden service hosted on this server. Hidden service is up and reachable, no Tor process failure as well.

Concerning that it states Bug: Internal Error. Shouldn't this be already fixed in 0.2.7.2-alpha?

Child Tickets

Change History (26)

comment:1 Changed 3 years ago by nickm

Keywords: PostFreeze027 added

I'd merge patches for these for 0.2.7 if they come in on time. In some cases, that will require figuring out an as-yet-unsolved bugs.

comment:2 Changed 3 years ago by asn

Cc: asn dgoulet added

If that error message was in 0.2.7.2-alpha, then it seems like #8864 did not fix this issue.
We need to look more into this.

comment:3 Changed 3 years ago by nickm

Keywords: PostFreeze027 removed
Milestone: Tor: 0.2.7.x-finalTor: 0.2.8.x-final

Moving these tickets into 0.2.8. Not expecting to take patches for any into 0.2.7 at this late date. As usual, please say something if you disagree! :)

comment:4 Changed 3 years ago by nickm

Keywords: SponsorR removed
Sponsor: SponsorR

Bulk-replace SponsorR keyword with SponsorR sponsor field in Tor component.

comment:5 Changed 3 years ago by dgoulet

Cc: asn dgoulet removed
Points: medium

comment:6 Changed 3 years ago by asn

Cc: dgoulet added
Severity: Normal

OK, so this is the code that prints the log message:

  intro_point = find_intro_point(circuit);
  if (intro_point == NULL) {
    intro_point = find_expiring_intro_point(service, circuit);
    if (intro_point == NULL) {
      log_warn(LD_BUG,
               "Internal error: Got an INTRODUCE2 cell on an "
               "intro circ (for service %s) with no corresponding "
               "rend_intro_point_t.",
               escaped(serviceid));
      goto err;
    }
  }

I'm wondering what's the functional difference between find_intro_point() and find_expiring_intro_point(). They seem almost the same currently.

Maybe we should be using service->expiring_nodes in the latter function?
Could this be causing the bug?

comment:7 Changed 3 years ago by dgoulet

Cc: dgoulet removed
Points: mediumsmall
Status: newneeds_review

Oh wow, that's a good catch! Indeed, find_expiring_intro_point should iterates on service->expiring_nodes and not the current intro nodes...

Here is a fix: bug16702_027_01

comment:8 Changed 3 years ago by asn

Fix looks good to me.

comment:9 Changed 3 years ago by nickm

Priority: MediumHigh

comment:10 in reply to:  8 ; Changed 3 years ago by teor

Keywords: 027-backport added

Replying to asn:

Fix looks good to me.

This patch looks good.
We could backport to 0.2.6 as well - do you think that's worthwhile, dgoulet, asn?

comment:11 in reply to:  10 Changed 3 years ago by dgoulet

Replying to teor:

Replying to asn:

Fix looks good to me.

This patch looks good.
We could backport to 0.2.6 as well - do you think that's worthwhile, dgoulet, asn?

This applies to 0.2.7.2-alpha ;) (See changes file)

The expiring nodes list has been introduced only in 027.

comment:12 Changed 3 years ago by nickm

Resolution: fixed
Status: needs_reviewclosed

Merged to maint-0.2.7. Thanks!

comment:13 Changed 3 years ago by Sebastian

Resolution: fixed
Status: closedreopened

Looks like this wasn't fixed, I hit it today on 0.2.7.6

comment:14 Changed 3 years ago by asn

Hm. To debug this we would probably need to make a tor patch that logs information about intro point creation and tear down. It should log everytime a new intro point is chosen, when one is expired, when it's added to the expire list and when it's removed from the expired list. We should also add log statements to find_intro_point() and its sister find_expiring_intro_point() function. We might be able to accelerate the warning message trigger by reducing the intro point rotation period like dgoulet suggested.

Last edited 3 years ago by asn (previous) (diff)

comment:15 Changed 3 years ago by dgoulet

Sponsor: SponsorRSponsorR-must

comment:16 Changed 2 years ago by nickm

Keywords: 029-proposed added
Milestone: Tor: 0.2.8.x-finalTor: 0.2.???

Calling this 0.2.9-proposed, since it is R-must. I don't think it blocks 0.2.8. Let me know if that's wrong.

comment:17 Changed 2 years ago by nickm

Keywords: 029-nickm-says-yes added

marking these as the tickets I am in favor of for 029, among the 029-proposed ones.

comment:18 Changed 2 years ago by nickm

Keywords: 029-proposed 029-nickm-says-yes removed
Milestone: Tor: 0.2.???Tor: 0.2.9.x-final

Nobody objected to including any of these, so I guess they are in.

comment:19 Changed 2 years ago by isabela

Points: small1

comment:20 Changed 2 years ago by asn

Points: 12

Hard bug to catch!

comment:21 Changed 2 years ago by dgoulet

Milestone: Tor: 0.2.9.x-finalTor: 0.2.???

comment:22 Changed 2 years ago by teor

Milestone: Tor: 0.2.???Tor: 0.3.???

Milestone renamed

comment:23 Changed 22 months ago by nickm

Keywords: tor-03-unspecified-201612 added
Milestone: Tor: 0.3.???Tor: unspecified

Finally admitting that 0.3.??? was a euphemism for Tor: unspecified all along.

comment:24 Changed 17 months ago by nickm

Keywords: tor-03-unspecified-201612 removed

Remove an old triaging keyword.

comment:25 Changed 17 months ago by nickm

Keywords: 027-backport removed

These are not ripe for an 027 backport

comment:26 Changed 17 months ago by dgoulet

Resolution: fixed
Status: reopenedclosed

I haven't seen this error in a long time. Please re-open if this is still an issue on latest stable.

Note: See TracTickets for help on using tickets.