Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3322210
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T23:09:17+00:00 2026-05-17T23:09:17+00:00

I have this code to get the caller of my function’s file name, line

  • 0

I have this code to get the caller of my function’s file name, line number, and function. It seems to be leaking frames though and I don’t understand why. Is this just throwing me off and my leak must be elsewhere?

        rv = "(unknown file)", 0, "(unknown function)"

            for f in inspect.stack()[1:]:
                if __file__ in f:
                    continue
                else:
                    rv = f[1:4]
                    break

        return rv

I’m not saving a reference to the frame anywhere. But it’s definitely frames that are leaking:

> objcallgraph.show_most_common_types()
>tuple                      24798
>frame                      9601
>...

Update:
My frames are definitely being leaked. I did the suggestion about gc.set_debug() and frames are very slowly going into the gc.garbage list. Not even close to how many are being created though as show in show_most_common_types(). I have a question about scope though, in the above, doesn’t f go out of scope after the for loop? Because I just tried this:


for f in range(20):
    l = 1

print f

and it printed 19. So could it be my f in the for loop leaking? This is a reference graph of a frame reference that was in my gc.garbage list:

alt text

Update2:

It looks like the inspect module itself is holding references to the frames. This is an objectgraph of a backreference from a live frame, not one on the garbage list.

alt text

Link here because it’s too wide.

Is there a way to clear the inspect module? Where the hell are these frames being saved =\

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T23:09:18+00:00Added an answer on May 17, 2026 at 11:09 pm

    Well I think I found the problem. It seems to be an issue with the inspect module and the underlying C code in a multi-threaded app. The module with the code above is being imported from different threads. And that 2nd graph points to the issue.

    alt text

    The function listed here in the 3rd node down is inspect.getmodule(). I couldn’t fit it all in there and had to do some cropping.

    (Pdb) objgraph.at(3510928)
    <cell at 0x359290: dict object at 0x3849c0>
    

    And inside the dict is all the frames

    (Pdb) objgraph.at(0x3849c0)
    
         {(<frame object at 0x97a288>, '/lib/python26.zip/logging/__init__.py'): <module 'logging' from '/lib/python26.zip/logging/__init__.py'>,
         (<frame object at 0x896288>, '/lib/python26.zip/logging/__init__.py'): <module 'logging' from '/lib/python26.zip/logging/__init__.py'>,
         (<frame object at 0xa621b0>, '/lib/python26.zip/logging/__init__.py'): <module 'logging' from '/lib/python26.zip/logging/__init__.py'>,
         (<frame object at 0x11266e8>, '/lib/python26.zip/logging/__init__.py'): <module 'logging' from '/lib/python26.zip/logging/__init__.py'>,
        ...}
    

    And if you get the outer frames of all those frames

    (Pdb) inspect.getouterframes(objgraph.at(0x97a288))
    [(<frame object at 0x97a288>, '/lib/python26.zip/logging/__init__.py', 1028, 'debug', ['            self._log(DEBUG, msg, args, **kwargs)\n'], 0),
     (<frame object at 0x794040>, '/lib/python26.zip/logging/__init__.py', 1505, 'debug', ['    root.debug(*((msg,)+args), **kwargs)\n'], 0),
     (<frame object at 0x794e58>, '/mmc/src/core/controller/main.py', 1046, '__startCharge', ['            self.chargeLock.release()\n'], 0),
     (<frame object at 0x5c4260>, '/mmc/src/core/controller/main.py', 1420, 'watchScheduleStartChargeCondition', ['                        ret = self.__startCharge(0, eventCode=eventCode)\n'], 0),
     (<frame object at 0x5c0dd0>, '/home/ephibian/Python2/_install/lib/python2.6/threading.py', 484, 'run', None, None),
     (<frame object at 0x5c3b48>, '/home/ephibian/Python2/_install/lib/python2.6/threading.py', 532, '__bootstrap_inner', None, None),
     (<frame object at 0x218170>, '/home/ephibian/Python2/_install/lib/python2.6/threading.py', 504, '__bootstrap', None, None)]
    

    They all point to the __bootstrap method in threading. I could be on the wrong track here, but the context of some of these frames are nowhere near where I’m calling the method I posted.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this code to get the default constructor: Public Function f(ByVal t As
i have this code to get the search resutls from the api: querygoogle.php: <?php
the xml <publication_date media_type=print> <month>1</month> <year>2011</year> </publication_date> I have used this code to get
I have this code right now to get the row value from jquery grid..
i have this code: def some_method(): #i need to get some attrs :( return
I have this code in one of my controllers to get access to eventful.
I have this code in a prepareForSegue method // Get destination view UIViewController *viewController
I have this code and I couldn't run it because i get this error:
I have this code require 'mechanize' @agent = Mechanize.new page = @agent.get('http://something.com/?page=1') next_page =
I have this formula in a cell: =GetData(Channel_01,Chicago) Which executes this code: Public Function

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.