<div>Hello All,</div>
<div>Please anybody reply my message.</div>
<div> </div>
<div>I checked call stack when call sys_restart_syscall.</div>
<div>It was different with normal system call stack.</div>
<div> </div>
<div><br>< normal syscall ></div>
<div> </div>
<div>-000 |[0000:0xc00a97e0] sys_open(<br>     |    filename = 0x851C,<br>     |    flags = 1,<br>     |    mode = 0)<br>     |<br>-001 |[0000:0xC002EF40] ret_fast_syscall(asm)<br>     |<br> --> |exception<br>-002 |ZUR:0x6C6:<strong>0x400477BC</strong>(asm) : /lib/<a href="http://libc-2.5.so">libc-2.5.so</a><br>
     |<br>-003 |main()<br>     |<br>     |                open("/dev/meminfo", 1, NULL);<br> --- |end of frame<br>     |<br>     |</div>
<div>--------------------------------------------------------<br>< restart_syscall system call ></div>
<div> </div>
<div>-000 |[0000:C005CF74] sys_restart_syscall()<br>     |  restart = 0x0<br>     |  __func__ = (115, 121, 115, 95, 114, 101, 115, 116, 97, 114, 116, 95, 115<br>     |<br>-001 |[0000:C002F0B8] __sys_trace_return(asm)<br>
     |<br>     |        b       2b<br> --> |exception<br>-002 |ZUR:0x6C6:<strong>0xFFFF0520</strong>(asm)<br>     |<br>-003 |ZUR:0x6C6:0x400E5CCC(asm) : /lib/<a href="http://libc-2.5.so">libc-2.5.so</a><br>     |<br> --- |end of frame<br>
     |<br></div>
<div>In SYS_restart_syscall case, exception was occured on kernel space address(<strong>0xFFFF0520).</strong><br>So, this address transfer to ptrace(PEEK_DATA)'s parameter and make error in get_user_pages().</div>
<div> </div>
<div>I think that need to make patch for arm.</div>
<div>How do you think about this?</div>
<div> </div>
<div class="gmail_quote">2010/7/8 OneGun Lee <span dir="ltr"><<a href="mailto:inamind@gmail.com">inamind@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>Hi, all</div>
<div> </div>
<div>I tried to use strace-4.5.15(and .20) on linux-2.6.29.4, arm-cortex-a8.</div>
<div> </div>
<div>but strace was detached as soon as was attached one process.</div>
<div> </div>
<div># strace -p 1711 -d<br>Process 1711 attached - interrupt to quit<br> [wait(0x137f) = 1711]<br>pid 1711 stopped, [SIGSTOP]<br> [wait(0x57f) = 1711]<br>pid 1711 stopped, [SIGTRAP]<br>Process 1711 detached</div>
<div> </div>
<div>So, I debuged strace.</div>
<div>After attach, strace try to ptrace(PTRACE_PEEKTEXT) and input param is kernel space's address(0xFFFFxxxx).</div>
<div>This kernel space address's data is scno(restart_syscall).</div>
<div> </div>
<div>address = 0xffff051c, data = 0xef900000(restart_syscall)</div>
<div> </div>
<div>This command is sent kernel mode.</div>
<div>and than, arch_ptrace,kernel function, try to get data this address.</div>
<div>so this function call access_process_vm() -> get_user_pages().</div>
<div> </div>
<div>get_user_pages() function make error because start address param is kernel space's address.</div>
<div>so strace is detached.<br></div>
<div>I think that it is bug to need fix.</div>
<div>If address to want to get data is in kernel space, access_process_vm() just read data. don't call get_user_pages().</div>
<div>Or</div>
<div>strace have not try to peek data, if address is in kernel space.</div>
<div> </div>
<div>How do you think about this problem?</div></blockquote></div><br>