
    [hV                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z	d dlZ	dadad Zd Zd Zd Zd ZdS )    Nc                     t           j        j        r"ddg}|D ]}t          j        | |          r dS n&|                     t           j        j                  rdS dS )Nz*/usr/bin/open5gs-*z*/usr/bin/osmo-*TF)testenvargsbinary_repofnmatch
startswithcache)exepatternspatterns      T/home/osmocom-build/jenkins/workspace/ttcn3-remsim-test/_testenv/testenv/coredump.pyexecutable_is_relevantr      sw    | !

   	 	GsG,, tt	 >>',,-- 	45    c                  X   t          j        d           t          j        d          st          j        d           d S t
          j                                        t          j        d          z
                      d          } ddd| d	d
g}t          j        d|            t          j
        |dd          }|j        dk    rt          j        d           d S t          j        |j                  d         }t          |d                   st          j        d           d S t          j        d           t           j        j         dat           j        
                    dddd| dt$          t)          |d                   |d         g	t          j        d           |d         ad S )Nz'Looking for a coredump with coredumpctlcoredumpctlz7coredumpctl is not available, won't try to get coredump   )secondsz%Y-%m-%d %H:%M:%Sz-qz-Sz--json=shortz-n1z+ T)capture_outputtextr   zNo coredump foundr
   z%Found an unrelated coredump, ignoringz"Coredump found, copying to log dirz/coredumpz-opid)stdout	no_podman)logginginfoshutilwhichdebugdatetimenow	timedeltastrftime
subprocessrun
returncodejsonloadsr   r   r   testdir	core_pathcmdstrDEVNULLexecutable_path)sincer*   pcoredumps       r   get_from_coredumpctlr1   %   s    L:;;;<&& OPPP ""$$x'9!'D'D'DDNNObccE$e^U
CCM*s**s4d;;;A|q)*** z!(##A&H!(5/22 =>>>M6777?*111IKOO	dE4CQVDXDXZbchZij!     uoOOOr   c                     t          j        d           t          j        t          j        j         d          } | sd S | d         at          j                            dt
          gddd          }t          |j	        d           t          j        d	|j	                  }|r+|                    d
          at          j        d           d S t          j        d           d S )NzLooking for a coredump filez/*/core*r   fileT)r   r   r    )endzexecfn: '(.*?)'   zCoredump file and execfn foundz,Failed to get execfn path from coredump file)r   r   globr   r(   r)   r*   r$   printr   researchgroupr-   r   )glob_matchesr/   execfn_matchs      r   get_from_filer>   J   s     L.///9 7AAABBL QI		 	 	 	A 
!(9/::L F&,,Q//677777DEEEEEr   c                  @   t          d          5 } |                                                                 }d d d            n# 1 swxY w Y   d|v rt                       d S |                    d          rt                       d S t          j        d|            d S )Nz/proc/sys/kernel/core_patternzsystemd-coredumpcorez5Unsupported core_pattern, won't try to get coredump: )openreadlinerstripr1   r   r>   r   r   )fr   s     r   get_coredumprE   e   s    	-	.	. (!**,,%%''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( W$$			F	#	# YWgWWXXXXXs   'AA
Ac                  n   t           rt          sd S t          j        d           d} | dz  } | dt	          j        t                      z  } | dt	          j        t                     z  } | dz  } | dt	          j        t                     dz  } | dz  } t          j                            |            d a d S )	NzRunning gdb to get a backtracez	echo; gdbz --batch z -ex btz | tee z.backtrace;z echo)	r-   r)   r   r   shlexquoter   r*   r$   )r*   s    r   get_backtracerJ   q   s      ) L1222
C:C-u{?++---C'u{9%%'''C9C8U[++8888C7NCKOOCOOOr   )r   r   r7   r&   r   r9   rH   r   r#   r   testenv.daemonstestenv.testdirr)   r-   r   r1   r>   rE   rJ    r   r   <module>rN      s         				               	  ""& "& "&JF F F6	Y 	Y 	Y    r   