I have dump of w3wp process (taken by procdump) where I see strange situation.
Simplified version on my code:
logger.Log(Thread.CurrentThread.ManagedThreadId);
using(semaphore_release_on_dispose_object)
{
// some third party code with unmanaged parts
DangerousCode();
}
semaphore_release_on_dispose_object - release semaphore in Dispose.
Process dump was taken after some timeout, when it was clear that semaphore was not released
I found thread in dump, but it seems become 'bad'. It listed by ~ command, but not listed by !threads command. When I switch to it I can see unmanaged stack, but not managed:
0:004> ~
...
3 Id: 63ec.11b0 Suspend: 1 Teb: 000007ff`fffae000 Unfrozen
...
0:004> ~~[11b0]s
ntdll!NtRemoveIoCompletion+0xa:
00000000`76e913aa c3 ret
0:003> k
# Child-SP RetAddr Call Site
00 00000000`01a3f818 000007fe`fcea169d ntdll!NtRemoveIoCompletion+0xa
01 00000000`01a3f820 00000000`76d2a4e1 KERNELBASE!GetQueuedCompletionStatus+0x39
02 00000000`01a3f880 000007fe`f0311f7b kernel32!GetQueuedCompletionStatusStub+0x11
03 00000000`01a3f8c0 000007fe`f0312024 w3tp!THREAD_POOL_DATA::ThreadPoolThread+0x3b
04 00000000`01a3f910 000007fe`f03120a1 w3tp!THREAD_POOL_DATA::ThreadPoolThread+0x34
05 00000000`01a3f940 00000000`76d3652d w3tp!THREAD_MANAGER::ThreadManagerThread+0x61
06 00000000`01a3f970 00000000`76e6c521 kernel32!BaseThreadInitThunk+0xd
07 00000000`01a3f9a0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
0:003> !clrstack
OS Thread Id: 0x11b0 (3)
Child SP IP Call Site
GetFrameContext failed: 1
0000000000000000 0000000000000000
So, I assume that somehow third party code some how 'broke' thread and skip finally block (using).
Any ideas how it is possible?
Related
I just downloaded SceneBuilder-15.0.0-RC1.msi from gluon website, installed it. When starting, nothing happens, no message whatsoever. When starting as administrator, basically the same, but I discovered in the installation folder a file is created named hs_err_pidxxxxx.log, containing the following
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=16520, tid=3752
#
# JRE version: (15.0.1+9) (build )
# Java VM: OpenJDK 64-Bit Server VM (15.0.1+9, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C 0x0000000000000000
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
#
--------------- S U M M A R Y ------------
Command Line: --add-opens=javafx.fxml/javafx.fxml=ALL-UNNAMED --module-path=C:\Program Files\SceneBuilder\app\mods com.oracle.javafx.scenebuilder.app.SceneBuilderApp
Host: Intel(R) Core(TM) i7-4790K CPU # 4.00GHz, 8 cores, 15G, Windows 10 , 64 bit Build 19041 (10.0.19041.662)
Time: Sun Jan 10 15:57:12 2021 Mitteleuropäische Zeit elapsed time: 0.051742 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x000001fee94fb5f0): JavaThread "Unknown thread" [_thread_in_vm, id=3752, stack(0x000000f58ac00000,0x000000f58ad00000)]
Stack: [0x000000f58ac00000,0x000000f58ad00000], sp=0x000000f58acfea98, free space=1018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), data execution prevention violation at address 0x0000000000000000
Registers:
RAX=0x000001fee9c0fe08, RBX=0x000001fe86f28090, RCX=0x000001fee9c0fe08, RDX=0x000000000000034b
RSP=0x000000f58acfea98, RBP=0x000000f58acfebb0, RSI=0x000001fee9c0fdeb, RDI=0x000001fee9c0fdeb
R8 =0x000001fe86f28090, R9 =0x00000000000005ce, R10=0x000000f58acfeb10, R11=0x45f1c7cf10132c67
R12=0x00000000000005ce, R13=0x000001fee94fd810, R14=0x000001fee94fdb50, R15=0x000001fee94fdb50
RIP=0x0000000000000000, EFLAGS=0x0000000000010246
Top of Stack: (sp=0x000000f58acfea98)
0x000000f58acfea98: 00007fff44431833 000001fe86f28090
0x000000f58acfeaa8: 00007fff44431877 00000000000005ce
0x000000f58acfeab8: 0000000000000000 000000f58acfeaf8
0x000000f58acfeac8: 0000000000000000 000001fee9c0fdeb
0x000000f58acfead8: 00007fff44431495 000001fe86f28090
0x000000f58acfeae8: 000000f58acfebb0 000001fee9c0fdeb
0x000000f58acfeaf8: 0000000000000000 000000f58acfebb0
0x000000f58acfeb08: 00007fff0471f74a 000000f5cafefafa
0x000000f58acfeb18: 000000000000034b 00000000000005ce
0x000000f58acfeb28: ffffffff00000007 0000000086183d01
0x000000f58acfeb38: 00005831f7a63934 00000000000005ce
0x000000f58acfeb48: 000001fee94fdb50 000001fee94fbac0
0x000000f58acfeb58: 000001fee738cef0 0000000000525f03
0x000000f58acfeb68: 0000000000000368 000001fee9c0fdeb
0x000000f58acfeb78: 00007fff44431ed7 000001fe86717450
0x000000f58acfeb88: 0000000000000016 0000000000000001
Instructions: (pc=0x0000000000000000)
0xffffffffffffff00:
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x00007fff04affa50, length=0, elements={
}
Java Threads: ( => current thread )
Other Threads:
0x000001fee954ee10 GCTaskThread "GC Thread#0" [stack: 0x000000f58ad00000,0x000000f58ae00000] [id=1668]
0x000001fee9560520 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000f58ae00000,0x000000f58af00000] [id=1408]
0x000001fee9561020 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000f58af00000,0x000000f58b000000] [id=684]
0x000001fe865a40e0 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000f58b000000,0x000000f58b100000] [id=10684]
0x000001fe865a4bf0 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x000000f58b100000,0x000000f58b200000] [id=572]
=>0x000001fee94fb5f0 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=3752, stack(0x000000f58ac00000,0x000000f58ad00000)]
Threads with active compile tasks:
VM state: not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: None
Heap address: 0x0000000700e00000, size: 4082 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS disabled.
Compressed class space mapped at: 0x0000000800000000-0x0000000840000000, size: 1073741824
Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x40000000
GC Precious Log:
CPUs: 8 total, 8 available
Memory: 16322M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (Zero based)
Heap Region Size: 2M
Heap Min Capacity: 8M
Heap Initial Capacity: 256M
Heap Max Capacity: 4082M
Pre-touch: Disabled
Parallel Workers: 8
Concurrent Workers: 2
Concurrent Refinement Workers: 8
Periodic GC: Disabled
Heap:
garbage-first heap total 262144K, used 0K [0x0000000700e00000, 0x0000000800000000)
region size 2048K, 1 young (2048K), 0 survivors (0K)
Metaspace used 4K, capacity 4480K, committed 4480K, reserved 1056768K
class space used 3K, capacity 384K, committed 384K, reserved 1048576K
'''
(skipping rest of log file)
any ideas?
I am receiving a "Thread was being aborted." in the stack trace of my ASP.NET application. I am attempting to use the WinDbg technique described here to diagnose:
http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx
Right now I am just trying to catch this in the sample asp.net application provided. I can get the asp.net application to timeout but I can't get the dump described in the article to generate. I think I need help from a WinDbg person to understand where I am going wrong. I am including the WinDbg entries. My output is a bit different but I can't tell which address to use in the aspnet_timeout.cfg file described.
0:038> .symfix
0:038> .loadby sos clr
0:038> !name2ee system.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded
Module: 59201000
Assembly: System.Web.dll
Token: 0600699b
MethodDesc: 592926e4
Name: System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
JITTED Code Address: 593f4200
0:038> !U 593f4200
preJIT generated code
System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
Begin 593f4200, size 29. Cold region begin 59d14150, size 23
Hot region:
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Web\ccb5cc864818531ed9725d02d3d078a6\System.Web.ni.dll
>>> 593f4200 55 push ebp
593f4201 8bec mov ebp,esp
593f4203 57 push edi
593f4204 56 push esi
593f4205 8bf1 mov esi,ecx
593f4207 8b4e10 mov ecx,dword ptr [esi+10h]
593f420a 8d4508 lea eax,[ebp+8]
593f420d ff7004 push dword ptr [eax+4]
593f4210 ff30 push dword ptr [eax]
593f4212 3909 cmp dword ptr [ecx],ecx
593f4214 e85f83f5ff call System_Web_ni+0x14c578 (5934c578) (System.Web.HttpContext.MustTimeout(System.DateTime), mdToken: 060025f7)
593f4219 8bf8 mov edi,eax
593f421b 85ff test edi,edi
593f421d 0f852dff9100 jne System_Web_ni+0xb14150 (59d14150)
593f4223 5e pop esi
593f4224 5f pop edi
593f4225 5d pop ebp
593f4226 c20800 ret 8
Cold region:
59d14150 8bce mov ecx,esi
59d14152 e849bb6cff call System_Web_ni+0x1dfca0 (593dfca0) (System.Web.RequestTimeoutManager+RequestTimeoutEntry.RemoveFromList(), mdToken: 0600699a)
59d14157 b9508f4859 mov ecx,offset System_Web_ni+0x288f50 (59488f50) (MT: System.Web.HttpApplication+CancelModuleException)
59d1415c e8ef4c63ff call System_Web_ni+0x148e50 (59348e50) (System_Web_ni)
59d14161 8bd0 mov edx,eax
59d14163 c6420401 mov byte ptr [edx+4],1
59d14167 8bcf mov ecx,edi
59d14169 e89a0963ff call System_Web_ni+0x144b08 (59344b08) (System_Web_ni)
59d1416e e9b0006eff jmp System_Web_ni+0x1f4223 (593f4223)
aspnet_timeout.cfg
<ADPlus Version='2'>
<!-- Configuring ADPlus to log all first chance exceptions -->
<!-- Will still create full dump for any type of second chance exceptions -->
<KeyWords>
<keyword Name="loadbysos"> .loadby sos clr</keyword>
<keyword Name="GetJIT"> !name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded </keyword>
<keyword Name="JITAddress"> .foreach /pS 0n13 ( record {!name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded}) { r $t1= ${record}; bp $t1+0xb14150 ".dump /ma /u ${AdpDumpDirEsc}\\Full Request timed out ${AdpProcName}_.dmp;g"; .printf"*breakpoint list*\n"; bl} </keyword>
</KeyWords>
<Settings>
<Option> NoDumpOnFirst </Option>
<RunMode> CRASH </RunMode>
</Settings>
<PreCommands>
<DebugActions> loadbysos; GetJIT; JITAddress </DebugActions>
</PreCommands>
</ADPlus>
This log shows that you have a TimeOut somewhere. But you must have some other event on your computer that shows in witch page you got that time out.
If you have many times out you first need to locate the page that cause that, maybe a download page that hold the session, or a page that need more time to runs than the Timeout set.
This execution timeout is set on web.config with 110 seconds default value:
<system.web>
<httpRuntime executionTimeout="110"/>
</system.web>
Does someone know how can I fix the problem below? I'm not familiar with UNIX/Solaris in deep. I've googled it and I've found some information.
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0xFF2B44E4
Function=strlen+0x80
Library=/usr/lib/libc.so.1
Current Java thread:
at com.tertio.tome.Tome.init0(Native Method)
at com.tertio.tome.TomeConfig.<init>(TomeConfig.java:42)
at com.tertio.tome.Tome.initConfig(Tome.java:124)
at com.tertio.tome.Tome.initConfig(Tome.java:118)
at com.tertio.provident.rmi.server.ServerConfig.<init>(ServerConfig.java:28)
at com.tertio.provident.cli.Cli.connect(Cli.java:38)
at com.tertio.provident.cli.Admin.main(Admin.java:23)
Dynamic libraries:
0x10000 /oracle/product/home0/jre/1.4.2/bin/java
0xff370000 /usr/lib/libthread.so.1
0xff3fa000 /usr/lib/libdl.so.1
0xff280000 /usr/lib/libc.so.1
0xff3a0000 /usr/platform/SUNW,Sun-Fire/lib/libc_psr.so.1
0xfec00000 /oracle/product/home0/jre/1.4.2/lib/sparc/client/libjvm.so
0xff230000 /usr/lib/libCrun.so.1
0xff210000 /usr/lib/libsocket.so.1
0xff100000 /usr/lib/libnsl.so.1
0xff1c0000 /usr/lib/libm.so.1
0xff0e0000 /usr/lib/libsched.so.1
0xff0b0000 /usr/lib/libmp.so.2
0xff070000 /oracle/product/home0/jre/1.4.2/lib/sparc/native_threads/libhpi.so
0xfebd0000 /oracle/product/home0/jre/1.4.2/lib/sparc/libverify.so
0xfeb90000 /oracle/product/home0/jre/1.4.2/lib/sparc/libjava.so
0xff040000 /oracle/product/home0/jre/1.4.2/lib/sparc/libzip.so
0xfe3b0000 /ACS/DEV/users/dvprv02/prov52/lib/libjtome.so
0xfcbb0000 /ACS/DEV/users/dvprv02/prov52/lib/libtome.so
0xfe390000 /ACS/DEV/users/dvprv02/prov52/lib/libtome_ev.so
0xfcad0000 /oracle/product/home0/jre/1.4.2/lib/sparc/libnet.so
Heap at VM Abort:
Heap
def new generation total 2112K, used 476K [0xf1c00000, 0xf1e20000, 0xf2310000)
eden space 2048K, 23% used [0xf1c00000, 0xf1c77230, 0xf1e00000)
from space 64K, 0% used [0xf1e00000, 0xf1e00000, 0xf1e10000)
to space 64K, 0% used [0xf1e10000, 0xf1e10000, 0xf1e20000)
tenured generation total 1408K, used 0K [0xf2310000, 0xf2470000, 0xf5c00000)
the space 1408K, 0% used [0xf2310000, 0xf2310000, 0xf2310200, 0xf2470000)
compacting perm gen total 4096K, used 1223K [0xf5c00000, 0xf6000000, 0xf9c00000)
the space 4096K, 29% used [0xf5c00000, 0xf5d31c80, 0xf5d31e00, 0xf6000000)
Local Time = Wed Jan 23 18:03:25 2013
Elapsed Time = 0
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2_03-b02 mixed mode)
#
# An error report file has been saved as hs_err_pid11057.log.
# Please refer to the file for further information.
#
Abort (core dumped)
I'm trying to update Status information on assignments via Statusing Web Service (PSI). Problem is, that the results are not as expected. I'll try to explain what I'm doing in detail:
Two cases:
1) An assignment for the resource exists on specified tasks. I want to report work actuals (update status).
2) There is no assignment for the resource on specified tasks. I want to create the assignment and report work actuals.
I have one task in my project (Auto scheduled, Fixed work). Resource availability of all resources is set to 100%. They all have the same calendar.
Name: Task 31 - Fixed Work
Duration: 12,5 days?
Start: Thu 14.03.13
Finish: Tue 02.04.13
Resource Names: Resource 1
Work: 100 hrs
First I execute an UpdateStatus with the following ChangeXML
<Changes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Proj ID="a8a601ce-f3ab-4c01-97ce-fecdad2359d9">
<Assn ID="d7273a28-c038-486b-b997-cdb2450ceef5" ResID="8a164257-7960-4b76-9506-ccd0efabdb72">
<Change PID="251658250">900000</Change>
</Assn>
</Proj>
</Changes>
Then I call a SubmitStatusForResource
client.SubmitStatusForResource(new Guid("8a164257-7960-4b76-9506-ccd0efabdb72"), null, "auto submit PSIStatusingGateway");
The following entry pops up in approval center (which is as I expected it):
Status Update; Task 31; Task update; Resource 1; 3/20/2012; 15h; 15%;
85h
Update in Project (still looks fine):
Task Name: Task 31 - Fixed Work
Duration: 12,5 days?
Start: Thu 14.03.13
Finish: Tue 02.04.13
Resource Names: Resource 1
Work: 100 hrs
Actual Work: 15 hrs
Remaining Work: 85 hrs
Then second case is executed: First I create a new assignment...
client.CreateNewAssignmentWithWork(
sName: Task 31 - Fixed Work,
projGuid: "a8a601ce-f3ab-4c01-97ce-fecdad2359d9",
taskGuid: "024d7b61-858b-40bb-ade3-009d7d821b3f",
assnGuid: "e3451938-36a5-4df3-87b1-0eb4b25a1dab",
sumTaskGuid: Guid.Empty,
dtStart: 14.03.2013 08:00:00,
dtFinish: 02.04.2013 15:36:00,
actWork: 900000,
fMilestone: false,
fAddToTimesheet: false,
fSubmit: false,
sComment: "auto commit...");
Then I call the UpdateStatus again:
<Changes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Proj ID="a8a601ce-f3ab-4c01-97ce-fecdad2359d9">
<Assn ID="e3451938-36a5-4df3-87b1-0eb4b25a1dab" ResID="c59ad8e2-7533-47bd-baa5-f5b03c3c43d6">
<Change PID="251658250">900000</Change>
</Assn>
</Proj>
</Changes>
And finally the SubmitStatusForResource again
client.SubmitStatusForResource(new Guid("c59ad8e2-7533-47bd-baa5-f5b03c3c43d6"), null, "auto submit PSIStatusingGateway");
This creates the following entry in approval center:
Status Update; Task 31 - Fixed Work; New reassignment request;
Resource 2; 3/20/2012; 15h; 100%; 0h
I accept it and update my project:
Name: Task 31 - Fixed Work
Duration: 6,76 days?
Start: Thu 14.03.13
Finish: Mon 25.03.13
Resource Names: Resource 1;Resource 2
Work: 69,05 hrs
Actual Work: 30 hrs
Remaining Work: 39,05 hrs
And I really don't get, why the new work would be 69,05 hours. The results I expected would have been:
Name: Task 31 - Fixed Work
Duration: 6,76 days?
Start: Thu 14.03.13
Finish: Mon 25.03.13
Resource Names: Resource 1;Resource 2
Work: 65 hrs
Actual Work: 30 hrs
Remaining Work: 35 hrs
I've spend quite a bunch of time, trying to find out, how to update the values to get the results that I want. I really would appreciate some help. This makes me want to rip my hair out!
Thanks in advance
PS: Forgot to say that I'm working with MS Project Server 2010 and MS Project Professional 2010
Hi
I am running a bi-di 'iperf' test on an interface using my driver.
Steps to repro would be to run bi-di I/O on one interface(other interface is not active):
Run iperf -c -P 8 -t 100000 -I 10 on DUT
iperf -c with same params as above from peer almost immediately ( after 1st 10s of above 'iperf send' are over)
With 'iperf -s -w 256K' on both
The crash is not happening as such in the driver but in the 'iperf' context. I am going to copy-paste the stack trace:
PID: 8855 TASK: f7036550 CPU: 0 COMMAND: "iperf"
#0 [c074bed0] crash_kexec at c0443233
#1 [c074bf14] die at c04064d3
#2 [c074bf44] do_page_fault at c062134b
#3 [c074bf94] error_code (via page_fault) at c0405abb
EAX: f5888100 EBX: 00000000 ECX: 00100100 EDX: 00200200 EBP: 00000001
DS: 007b ESI: f5888000 ES: 007b EDI: cb614000
CS: 0060 EIP: c05c4e94 ERR: ffffffff EFLAGS: 00010046
#4 [c074bfc8] net_rx_action at c05c4e94
#5 [c074bfe4] __do_softirq at c042aa65
--- <soft IRQ> ---
#0 [f281ac4c] do_softirq at c04073e5
#1 [f281ac58] do_IRQ at c04074d9
#2 [f281ac70] common_interrupt at c0405975
EAX: 39383736 EBX: f281af4c ECX: 00000428 EDX: 31303938 EBP: f378b042
DS: 007b ESI: f378b1c2 ES: 007b EDI: 09fdb448
CS: 0060 EIP: c04f1c07 ERR: ffffffba EFLAGS: 00000202
#3 [f281aca4] __copy_to_user_ll at c04f1c07
#4 [f281acb0] memcpy_toiovec at c05bfecc
#5 [f281acc4] skb_copy_datagram_iovec at c05c059b
#6 [f281acf4] tcp_rcv_established at c05ef40a
#7 [f281ad20] tcp_v4_do_rcv at c05f48c5
#8 [f281ad54] tcp_prequeue_process at c05e6bdd
#9 [f281ad5c] tcp_recvmsg at c05e90e2
#10 [f281ad9c] sock_common_recvmsg at c05bb1c4
#11 [f281adc0] sock_recvmsg at c05b8dc6
#12 [f281aea0] sys_recvfrom at c05ba6ab
#13 [f281af64] sys_recv at c05ba727
#14 [f281af80] sys_socketcall at c05bab52
#15 [f281afb8] system_call at c0404f44
EAX: ffffffda EBX: 0000000a ECX: b6ba2340 EDX: 00014268
DS: 007b ESI: 00000000 ES: 007b EDI: 09fbe630
SS: 007b ESP: b6ba2328 EBP: b6ba2378
CS: 0073 EIP: 004ad410 ERR: 00000066 EFLAGS: 00000293
crash>
the EIP at the time of crash is net_rx_action:0xdd/19ca. Now i have compiled the kernel-2.6.18-238 sources( the source version of the OS on which the DUT is running) and did an 'objdump -S ./net/core/dev.o > dev_o_dmp' on the ./net/core/dev.c which has the definition of the net_rx_acdtion(). Now in the 'dev_o_dmp' file the net_rx_action() has lots of inline definitions and hence somehow does not exactly mirror the flow in the source file. In such a scenario ,is it safe to add 0xdd to the base addr of net_rx_action (say 32FF) => 340C .i.e would 340C be the offending line number that is giving rise to the crash ' kernel paging request error'
Any tips /recommendations on how to go about debugging this problem would be of great help
Unfortunately, or fortunately depending on your perspective, with high levels of optimization it is possible for the compiler to create assembly code that the debug format cannot make a reasonable C code line to assembly instruction(s) mapping. What type of cases you can run into this problem depends on the compiler, optimization level, debug symbol format, debug symbol level, and the code itself.
You have to assume that line numbers gained via this technique could be wrong. That being said, I use this technique frequently in my own kernel work and I have not had any problems yet (knocks on wood). Just remember that if you are faced with something that just makes no sense, you could have a bad line number.