Haha, for some reason I read it as Python 2.6 when I said ancient.

Anyway, can you grab section of code around line 825 in 
/data/dev/Python-3.6.3s/lib/python3.6/inspect.py.

Python 3.6.7 doesn't match that code at that line number, so wondering whether 
you are using older patch revision which was since updated. In 3.6.7 it has:

    if iscode(object):
        if not hasattr(object, 'co_firstlineno'):
            raise OSError('could not find function definition')
        lnum = object.co_firstlineno - 1. #### <----- This is line 825
        pat = 
re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
        while lnum > 0:
            if pat.match(lines[lnum]): break
            lnum = lnum - 1
        return lines, lnum

In your stack trace, line 825 is 3 lines later. Has the code in that function 
changed, with your version not having the "while lnum > 0"?

> On 16 May 2019, at 1:11 pm, Sujai Kumar <[email protected]> wrote:
> 
> Hi Graham,
> 
> Here are the version of softwares being used.
> Python -> 3.6
> mod_wsgi -> 4.6.4
> Sujai@machine0009:/usr/lib64/httpd/modules> ldd mod_wsgi.so
>         linux-vdso.so.1 =>  (0x00007ffc74cd7000)
>         libpython3.6m.so.1.0 => 
> /data/ev/Python-3.6.3s/lib/libpython3.6m.so.1.0 (0x00007fbd76c66000)
>         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbd76a4a000)
>         libc.so.6 => /lib64/libc.so.6 (0x00007fbd7667d000)
>         libssl.so.1.0.0 => /data/dev/openssl-1.0.2sh/lib/libssl.so.1.0.0 
> (0x00007fbd7640b000)
>         libcrypto.so.1.0.0 => 
> /data/dev/openssl-1.0.2sh/lib/libcrypto.so.1.0.0 (0x00007fbd75fbd000)
>         libz.so.1 => /data/dev/Python-3.6.3s/lib/libz.so.1 
> (0x00007fbd75da2000)
>         libdl.so.2 => /lib64/libdl.so.2 (0x00007fbd75b9e000)
>         libutil.so.1 => /lib64/libutil.so.1 (0x00007fbd7599b000)
>         libm.so.6 => /lib64/libm.so.6 (0x00007fbd75699000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007fbd773fa000)
> Sujai@machine0009 :/usr/lib64/httpd/modules> strings mod_wsgi.so | grep -w -A 
> 1 "wsgi_init"
> wsgi_init
> 4.6.4
> 
> Stack Trace of the Error
> 2019-05-09 09:18:08,471 - root - ERROR] - Error : Traceback (most recent call 
> last):
>   File 
> "/data/dev/deployment/production/release/server-python/sf_django/sf_app/views/utils/__init__.py",
>  line 135, in function_wrapper
>     return_value = func(caller_object, request, *args, **kwargs)
>   File 
> "/data/dev/deployment/production/release/server-python/sf_django/starfish_app/views/api/api_id.py",
>  line 27, in get
>     response = get_sub_discipline_wise_api_ids(user_itss_id, 
> parameters["bs_revision_id"])
>   File 
> "/data/dev/deployment/production/release/server-python/sf_django/starfish_app/core/api/api_id.py",
>  line 21, in get_sub_discipline_wise_api_ids
>     log_user_access(user_itss_id, func_param={"bs_revision_id": 
> bs_revision_id})
>   File 
> "/data/dev/deployment/production/release/server-python/sf_django/starfish_app/core/api/api_util.py",
>  line 15, in log_user_access
>     caller_func_name = inspect.stack()[1][3]  # retrieves the name of the 
> function that calls this function
>   File "/data/dev/Python-3.6.3s/lib/python3.6/inspect.py", line 1491, in stack
>     return getouterframes(sys._getframe(1), context)
>   File "/data/dev/Python-3.6.3s/lib/python3.6/inspect.py", line 1468, in 
> getouterframes
>     frameinfo = (frame,) + getframeinfo(frame, context)
>   File "/data/dev/Python-3.6.3s/lib/python3.6/inspect.py", line 1442, in 
> getframeinfo
>     lines, lnum = findsource(frame)
>   File "/data/dev/Python-3.6.3s/lib/python3.6/inspect.py", line 825, in 
> findsource
>     if pat.match(lines[lnum]): break
> IndexError: list index out of range
> 
> In what case the interpreter will have half destroyed code. Won't the 
> 'apapche reload' perform the process shutdown gracefully (maening, all 
> existing connections to a thread would be served before the thread redeems 
> itself)?
> 
> Thanks & regards,
> Sujaikumar
> 
> On Thu, May 16, 2019 at 8:15 AM Graham Dumpleton <[email protected] 
> <mailto:[email protected]>> wrote:
> As already mentioned, if it is only on process shutdown (caused by a reload), 
> then it is possibly because it is trying to execute code when the interpreter 
> has been half destroyed. You cut off the file system paths and so I can't see 
> what:
> 
> File ".....core/api/api_util.py", line 15, in log_user_access
> 
> is likely a part of (if open source project) and infer anything about whether 
> a separate thread is running. So a more complete stack trace may help.
> 
> Also, given you are using an ancient Python version, what mod_wsgi version 
> are you using?
> 
>> On 16 May 2019, at 12:41 pm, Sujai Kumar <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Hi Graham,
>> 
>> Yes, mod_wsgi is pulling the right python. I have verified them before 
>> writing to you. As mentioned earlier, the system is working fine for more 
>> than a year now. This issue happened suddenly and there were no code change 
>> recently and hence the concern. The only thing, that I see as external 
>> factor is 'apache reload' (as part of logrotate simultaneously). Are there 
>> any other things that we need to check? I shall send the complete stack 
>> trace in some time.
>> 
>> Thanks & regards,
>> Sujaikumar
>> 
>> On Thu, 16 May 2019, 8:03 am Graham Dumpleton, <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Are you sure you mod_wsgi is pulling in the correct Python shared library, 
>> given that it looks like you are using a custom Python installation.
>> 
>> Is Python 3.6 installed as system Python?
>> 
>> Are you wanting to actually use a separate Python installation you installed 
>> from source code?
>> 
>> Did you compile mod_wsgi from source code against any separate Python 
>> installation? If you did that, was LD_RUN_PATH environment variable set to 
>> the lib directory for that Python installation where the Python shared 
>> library is, when mod_wsgi was being built, to ensure that at run time it 
>> would use that library and not the system Python one.
>> 
>> If you are getting the wrong Python shared library pulled in, and there are 
>> patch level differences, you could see all sorts of strange issues.
>> 
>>> On 16 May 2019, at 11:36 am, Sujai Kumar <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Thanks for looking into this.
>>> 
>>> Well, the stack trace doesn't have much information. The issue happens when 
>>> caller function name was about to be logged (using the inspect module). 
>>> This was a working application for over an year and suddenly the situation 
>>> has occurred.
>>> 
>>> My inference is that the python state has gone bad due to the apache reload 
>>> that happens simultaneously due to logrotate configs. My understanding is 
>>> that, on apache reload, the python processes goes gracefully down rereads 
>>> the apache configuration(if any) and comes up. Why would existing python 
>>> library (inspect module) give the 'list index out of range' error? Is there 
>>> any other way that this situation could happen?
>>> 
>>> Again the apache restart (systemctl restart httpd) has to be done manually 
>>> to bring the python process back to normal state.
>>> 
>>> Thanks & regards,
>>> Sujaikumar
>>> 
>>> On Thu, 16 May 2019, 3:57 am Graham Dumpleton, <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> Hard to tell just from the information you have given because you have 
>>> truncated the file system paths so can't tell what package this code is 
>>> executed from. The stack trace doesn't even look complete.
>>> 
>>> At a guess you are hitting an issue where there if there is a background 
>>> thread running when the process is shutdown, that thread can start up when 
>>> the interpreter is in a half destroyed state. This can result in strange 
>>> things happening due to the interpreter having started to destroy objects 
>>> and clear our modules.
>>> 
>>> Is this only happening when the processes are being shutdown?
>>> 
>>> Graham
>>> 
>>>> On 16 May 2019, at 1:44 am, Sujai Kumar <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>> Hello All,
>>>> 
>>>> We have a Apache/Python/Django using modwsgi. We hit upon a situation 
>>>> where the following error is happening in the site,  
>>>> 
>>>> Error Log
>>>> 
>>>> 2019-05-09 09:18:08,471 - root - ERROR] - Error : Traceback (most recent 
>>>> call last):
>>>>   File ".....core/api/api_util.py", line 15, in log_user_access
>>>>     caller_func_name = inspect.stack()[1][3]  # retrieves the name of the 
>>>> function that calls this function
>>>>   File ".../Python-3.6.3s/lib/python3.6/inspect.py", line 1491, in stack
>>>>     return getouterframes(sys._getframe(1), context)
>>>>   File ".../Python-3.6.3s/lib/python3.6/inspect.py", line 1468, in 
>>>> getouterframes
>>>>     frameinfo = (frame,) + getframeinfo(frame, context)
>>>>   File ".../Python-3.6.3s/lib/python3.6/inspect.py", line 1442, in 
>>>> getframeinfo
>>>>     lines, lnum = findsource(frame)
>>>>   File ".../Python-3.6.3s/lib/python3.6/inspect.py", line 825, in 
>>>> findsource
>>>>     if pat.match(lines[lnum]): break
>>>> IndexError: list index out of range 
>>>> 
>>>> My understanding
>>>> I think that the issue is happening because of apache getting reloaded due 
>>>> to below configurations. At the same time the logrotate triggers 'apache 
>>>> reload' around the same time.
>>>> 
>>>> Quick Fix
>>>> The quick fix that we had to do was to restart the apache. Just after the 
>>>> restart the application started working.
>>>> 
>>>> Question:
>>>> What has caused this situation and how to avoid this occurring in future 
>>>> so that we are not reloading it manually? Thanks,
>>>> 
>>>> Logrotate Configs
>>>> 
>>>> 
>>>> 
>>>> [Sujai@machine0009 logrotate.d]$ cat apache
>>>> 
>>>> # THIS FILE IS AUTOMATICALLY DISTRIBUTED BY PUPPET.  ANY CHANGES WILL BE
>>>> 
>>>> # OVERWRITTEN.
>>>> 
>>>> 
>>>> 
>>>> /opt/www/logs/*log {
>>>> 
>>>>   compress
>>>> 
>>>>   daily
>>>> 
>>>>   dateext
>>>> 
>>>>   missingok
>>>> 
>>>>   olddir /opt/www/logs/roll
>>>> 
>>>>   rotate 31
>>>> 
>>>>   sharedscripts
>>>> 
>>>>   postrotate
>>>> 
>>>>     /bin/systemctl reload httpd.service >/dev/null 2>/dev/null || true
>>>> 
>>>>   endscript
>>>> 
>>>> }
>>>> 
>>>> [Sujai@machine0009 logrotate.d]$ cat httpd
>>>> 
>>>> /var/log/httpd/*log {
>>>> 
>>>>     missingok
>>>> 
>>>>     notifempty
>>>> 
>>>>     sharedscripts
>>>> 
>>>>     delaycompress
>>>> 
>>>>     postrotate
>>>> 
>>>>         /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
>>>> 
>>>>     endscript
>>>> 
>>>> }
>>>> 
>>>> 
>>>> 
>>>> Thanks & regards,
>>>> Sujaikumar
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "modwsgi" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to [email protected] 
>>>> <mailto:[email protected]>.
>>>> To post to this group, send email to [email protected] 
>>>> <mailto:[email protected]>.
>>>> Visit this group at https://groups.google.com/group/modwsgi 
>>>> <https://groups.google.com/group/modwsgi>.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/modwsgi/b75f3ce9-7408-4be2-b35f-e131e78bfb2e%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/modwsgi/b75f3ce9-7408-4be2-b35f-e131e78bfb2e%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>>> For more options, visit https://groups.google.com/d/optout 
>>>> <https://groups.google.com/d/optout>.
>>> 
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "modwsgi" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to [email protected] 
>>> <mailto:[email protected]>.
>>> To post to this group, send email to [email protected] 
>>> <mailto:[email protected]>.
>>> Visit this group at https://groups.google.com/group/modwsgi 
>>> <https://groups.google.com/group/modwsgi>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/modwsgi/970534A1-DBCA-4C56-8A8C-7A9104DBF8B4%40gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/modwsgi/970534A1-DBCA-4C56-8A8C-7A9104DBF8B4%40gmail.com?utm_medium=email&utm_source=footer>.
>>> For more options, visit https://groups.google.com/d/optout 
>>> <https://groups.google.com/d/optout>.
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "modwsgi" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to [email protected] 
>>> <mailto:[email protected]>.
>>> To post to this group, send email to [email protected] 
>>> <mailto:[email protected]>.
>>> Visit this group at https://groups.google.com/group/modwsgi 
>>> <https://groups.google.com/group/modwsgi>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/modwsgi/CAEpWo-5qrsR59MReynDFCS6DRm3vH4OvCmZDXc_CZV3kt%2BCLag%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/modwsgi/CAEpWo-5qrsR59MReynDFCS6DRm3vH4OvCmZDXc_CZV3kt%2BCLag%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>>> For more options, visit https://groups.google.com/d/optout 
>>> <https://groups.google.com/d/optout>.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "modwsgi" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <mailto:[email protected]>.
>> To post to this group, send email to [email protected] 
>> <mailto:[email protected]>.
>> Visit this group at https://groups.google.com/group/modwsgi 
>> <https://groups.google.com/group/modwsgi>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/modwsgi/8D1DA36D-513A-4E2D-88B1-9E3290EE2D9E%40gmail.com
>>  
>> <https://groups.google.com/d/msgid/modwsgi/8D1DA36D-513A-4E2D-88B1-9E3290EE2D9E%40gmail.com?utm_medium=email&utm_source=footer>.
>> For more options, visit https://groups.google.com/d/optout 
>> <https://groups.google.com/d/optout>.
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "modwsgi" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <mailto:[email protected]>.
>> To post to this group, send email to [email protected] 
>> <mailto:[email protected]>.
>> Visit this group at https://groups.google.com/group/modwsgi 
>> <https://groups.google.com/group/modwsgi>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/modwsgi/CAEpWo-6Bgm1KZT35Pda6eZX9Via5AfX_ZV__yu%2BUCfpGYPUSKA%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/modwsgi/CAEpWo-6Bgm1KZT35Pda6eZX9Via5AfX_ZV__yu%2BUCfpGYPUSKA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>> For more options, visit https://groups.google.com/d/optout 
>> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/modwsgi 
> <https://groups.google.com/group/modwsgi>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/modwsgi/4C85A26F-8162-4000-AB0C-108970B5FDAE%40gmail.com
>  
> <https://groups.google.com/d/msgid/modwsgi/4C85A26F-8162-4000-AB0C-108970B5FDAE%40gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/modwsgi 
> <https://groups.google.com/group/modwsgi>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/modwsgi/CAEpWo-7tg4z4cYbytkQXbPOVg7XOKY3sCNy1PohGVQ%2BmDre5%2Bg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/modwsgi/CAEpWo-7tg4z4cYbytkQXbPOVg7XOKY3sCNy1PohGVQ%2BmDre5%2Bg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/DB703E53-07CC-4848-BC16-D72AF019ACD8%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to