1

We had some Deadlock alerts raised today - on further investigation I have found that it seems to all be the same SPID and related to parallelism events.

How has this happened? I didn't think deadlocks could occur within the context of one SPID?

I've uploaded the Deadlock XML to PasteBin

<deadlock>
 <victim-list />
 <process-list>
  <process id="process6560c1868" taskpriority="0" logused="10000" waittime="1058" schedulerid="2" kpid="12756" status="suspended" spid="888" sbid="0" ecid="15" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
   <executionStack>
    <frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_    </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown    </frame>
   </executionStack>
   <inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c   </inputbuf>
  </process>
  <process id="process105d194188" taskpriority="0" logused="10000" waittime="935" schedulerid="3" kpid="27616" status="suspended" spid="888" sbid="0" ecid="12" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
   <executionStack>
    <frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_    </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown    </frame>
   </executionStack>
   <inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c   </inputbuf>
  </process>
  <process id="process17556b868" taskpriority="0" logused="10000" waittime="935" schedulerid="3" kpid="30184" status="suspended" spid="888" sbid="0" ecid="2" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
   <executionStack>
    <frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_    </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown    </frame>
   </executionStack>
   <inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c   </inputbuf>
  </process>
  <process id="process6560f3868" taskpriority="0" logused="10000" waittime="939" schedulerid="1" kpid="28396" status="suspended" spid="888" sbid="0" ecid="3" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
   <executionStack>
    <frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_    </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown    </frame>
   </executionStack>
   <inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
 B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
 C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c   </inputbuf>
  </process>
 </process-list>
 <resource-list>
  <exchangeEvent id="Pipe55ae469a0" WaitType="e_waitPipeNewRow" nodeId="13">
   <owner-list>
    <owner id="process17556b868" />
   </owner-list>
   <waiter-list>
    <waiter id="process6560c1868" />
   </waiter-list>
  </exchangeEvent>
  <exchangeEvent id="Pipe1f1358fb0" WaitType="e_waitPipeNewRow" nodeId="10">
   <owner-list>
    <owner id="process6560f3868" />
   </owner-list>
   <waiter-list>
    <waiter id="process105d194188" />
   </waiter-list>
  </exchangeEvent>
  <exchangeEvent id="Pipe1f1359bb0" WaitType="e_waitPipeGetRow" nodeId="10">
   <owner-list>
    <owner id="process105d194188" />
   </owner-list>
   <waiter-list>
    <waiter id="process17556b868" />
   </waiter-list>
  </exchangeEvent>
  <exchangeEvent id="Pipe5232db6a0" WaitType="e_waitPipeGetRow" nodeId="13">
   <owner-list>
    <owner id="process6560c1868" />
   </owner-list>
   <waiter-list>
    <waiter id="process6560f3868" />
   </waiter-list>
  </exchangeEvent>
 </resource-list>
</deadlock>
4
  • 2
    Looks like a intra-query parallelism deadlock without a victim. Did the query generate an error or did you just see the deadlock xml report in a trace? Looks like a dup of dba.stackexchange.com/questions/197779/….
    – Dan Guzman
    May 23, 2019 at 9:51
  • Agree with Dan that it's a dupe, but out of interest do you have the query plan? May 23, 2019 at 9:59
  • @ErikDarling I don't unfortunately - thanks both for the input I missed that post. Will post the cached plan if the issue happens again. May 23, 2019 at 10:12
  • That'd be awesome! Thanks! May 23, 2019 at 10:15

0

Browse other questions tagged or ask your own question.