Your IP : 172.28.240.42


Current Path : /usr/share/apport/general-hooks/
Upload File :
Current File : //usr/share/apport/general-hooks/parse_segv.pyc


5Oc@s@ddlZddlZddlZdefdYZdZedkr<eejdkpzejddd	gkrd
GHdGHdejd
GHej	d
nee
ejdje
ejdje
ejdjZej
\ZZZdeefGHd
Zer,dZnej	endS(iNt	ParseSegvcBs\eZedZdZdZdZdZdZdZ	dZ
dZRS(	cCs|rtjdtjn|j||_d|_x6ddgD](}||jkrD|j||_qDqDW|j|\|_|_	|_
|_|_d|_
|j||_dS(Ntleveltrsptesp(tloggingtbasicConfigtDEBUGt
parse_regstregstNonetsptparse_disassemblytlinetpctinsntsrctdestt	stack_vmat
parse_mapstmaps(tselft	registerstdisassemblyRtdebugtreg((s-/usr/share/apport/general-hooks/parse_segv.pyt__init__s	-	cCs<x5|jD]*}||dkr
||dkr
|Sq
WdS(Ntstarttend(RR	(Rtaddrtvma((s-/usr/share/apport/general-hooks/parse_segv.pytfind_vma"s c
Cs#g}x|jD]}|jj}y|dd!\}}}}Wntd|jnXt|dkrd}	n
|d}	g|jdD]}
t|
d^q\}}|	dkrt||_n|ji|d6|d	6|d
6|	d6t	j
||||	qW|S(NiisCannot parse maps line: %sit-is[stack]RRtpermstname(t
splitlineststriptsplitt
ValueErrortlenR	tintRtappendRR(
Rtmaps_strRRtitemstspanR tbitstdevR!txRR((s-/usr/share/apport/general-hooks/parse_segv.pyR(s 	
1)cCsgt}xW|jD]I}|jdd!\}}t|d||<tjd|||qW|S(Niiis	%s:0x%08x(tdictR"R$R'RR(Rtreg_strRRRthexvalue((s-/usr/share/apport/general-hooks/parse_segv.pyR;s	cCs|jstdn|j}t|dkrY|djdrY|jdnt|dkrztdn|dj}|jdr|dj}ntj||j	d}|jdrt
|j	d	dd
}ntd||ftjd||j	d	ddj}d
|ksc|dkrvt|dkrv||dddfS|dkr|djdr|d|dj}|j	d	ddj}n|j	}|djdr|djdr|jdnd}t|dkr8|jd}ndj
|}	tjd|	g}
d}d}|dkr~d}
ntjd|xHtjd|D]4}
t|
jdr|
j|
jdqqWt|
dkr|
d}tjd|nt|
dkr7|
d}tjd|n|	d#krzx4d d!gD]#}||jkrPd"|}PqPqPWn|||	||fS($NsRegisters not loaded yet!?itDumpis Failed to load empty disassemblys=>it0xt:is1Could not parse PC "%s" from disassembly line: %ss
pc: 0x%08xsCannot access memory at addresstt it>t<sinsn: %ss
args: "%s"s([^,\(]*(\(:?[^\)]+\))*)ssrc: %ssdest: %stpushtpoptpushltpopltcalltcallqtrettretqRRs(%%%s)(R9spopR;R<scallR>R?R@(RR%R"R&t
startswithR:R#RRR$R'R	tendswithtjointretfinditertgroupR((RRtlinesRtpc_strR
t
full_insn_strt
insn_partstargs_strRtargsRRtmR((s-/usr/share/apport/general-hooks/parse_segv.pyRCsf	%
*&	


c
Cs_iddgd6ddgd6ddgd	6}|j|}|dkrd
}|dkrcd}ntd
||||dfd||d|ffS||dkr8d}|dkrd	|dkrd}qd}nd||d||df}td||||d|d|d|d|df|fStd||fd||dfSdS(Nt
executablet	executingR.treadabletreadingtrtwritabletwritingtwtunknownitNULLsA%s (0x%08x) not located in a known VMA region (needed %s region)!is	%s %s VMAiR R5s	writable s
non-writable s%s %sVMA %sR!s5%s (0x%08x) in non-%s VMA region: 0x%08x-0x%08x %s %sRRs%s (0x%08x) oks%s ok(RR	tFalsetTrue(RtpermRR!t	perm_nameRtalarmisttshort((s-/usr/share/apport/general-hooks/parse_segv.pytvalidate_vmas -	4		>cCsc|}d}|jdr(|d}n||jkrB|j|St|dkr~|jdr~|dO}d|d}n||jkr|j||@St|dkr|jdr|d	O}d
|}n||jkr|j||@St|dkr0|jdr0|d
O}d|d}n||jkrO|j||@Std|dS(Nit%iitlis%sxR.Ise%sitelsr%ssCould not resolve register '%s'(RARR&RBR%(RRtreg_origtmask((s-/usr/share/apport/general-hooks/parse_segv.pytregister_values,
!
!

!
cCsFd}|jdrUd|krU|jdd}|j|dd}|d}n|jd}|d}d}|jdrd}|d}n|jdr|d}nt|dkr'|jdr|j|d}q-|jd	s
td
|dnt|dd|}nd}dd
}d}t|dkr|ddd!}	|	jd}
d}t|
dkr|||
d|}nd}t|
dkr|||
d|}nd}
t|
dkr|||
d|
}
n|||
}n|||}d|jkr:|dS|dSdS(NiR_R4it(Rit*R3sUnknown offset literal: %siicSsH|jdr#|j|d}n!|dkr8d}nt|}|S(NR_iR5i(RARR'(Rttexttval((s-/usr/share/apport/general-hooks/parse_segv.pyt_reg_vals	t,RIl(RAR$RR&R%R'(RtargtsegmenttpartstoffsettsigntaddRitvaluetparenstreg_listtbasetindextscale((s-/usr/share/apport/general-hooks/parse_segv.pyt
calculate_argsN




c	
Cst}g}d|jg}|jd|jd\}}}|j||sf|j|t}n|jd!kr|jd|jn]|jrDd|jkr|jdd"kr|jjdr|jd
|jqD|j	|j}|jd|d|j\}}}|j||sD|j|t}qDn|j
rd|j
kr|j
dd#kr|jd|j
q|j	|j
}|jd|d|j
\}}}|j||s|j|t}qn|jd$krB|rB|jd|j|j|jd|j|jt}n|jdkr|jdkr|j|j|jdkr|jdn|j|j|jdkr|jdqn|s|jd|jd\}}}|j||s|j|t}qqn|s|j|j}|rn|ddksQ|ddkrn|jd|jdq|jd|jdn|d j|d j|fS(%NsSegfault happened at: %sR.tPCtleatlealsinsn (%s) does not access VMAR4iR_t$Rfs*%ssource "%s" okRRssource "%s"sdestination "%s" okRUsdestination "%s"touttins(disallowed I/O port operation on port %dRs/Stack memory exhausted (SP below stack segment)Rs&Stack pointer not within stack segmenttSPR!s[vdso]s
[vsyscall]sSReason could not be automatically determined. (Unhandled exception in kernel code?)s-Reason could not be automatically determined.s
(RyRz(R_R{Rf(R_R{Rf(soutsin(RXRR^R
R(RYRRRARwRRdR
R	RRRRC(	Rt
understoodtreasontdetailstvalidR|R]RR((s-/usr/share/apport/general-hooks/parse_segv.pytreportsh!

		5%

	"%

	!

&

(t__name__t
__module__RXRRRRRR^RdRwR(((s-/usr/share/apport/general-hooks/parse_segv.pyRs				G		%	@cCs|jdddkrdSdddddg}x,|D]$}||kr8d||d	<dSq8W|ddkrtdSyTt|d|d|d}|j\}}}|r||d<n||d	<Wn'tk
r}d
t||d	<nXdS(NtSignalt0t11tArchitecturetDisassemblytProcMapst	Registerss$Skipped: missing required field "%s"tSegvAnalysisti386tamd64t
SegvReasonsFailure: %s(si386samd64(tgetRRt
BaseExceptiontstr(RtneededtfieldtsegvRRRRa((s-/usr/share/apport/general-hooks/parse_segv.pytadd_infoKs"

t__main__iis-hs--helps8To run self-test, run without any arguments (or with -v)s To do stand-alone crash parsing:s6  Usage: %s Registers.txt Disassembly.txt ProcMaps.txtiiis%s

%s(tsysRDRtobjectRRRR&targvtexittopentreadRRRRRtrc(((s-/usr/share/apport/general-hooks/parse_segv.pyt<module>s$$;	.