[asterisk-dev] Asterisk trunk on Mac OS/X 10.5
Vadim Lebedev
vadim at mbdsys.com
Sat Mar 14 10:19:40 CDT 2009
Le 14 mars 09 à 10:14, Russell Bryant a écrit :
>
> On Mar 13, 2009, at 6:13 PM, Vadim Lebedev wrote:
>
>>
>> Le 11 mars 09 à 02:01, Russell Bryant a écrit :
>>>
>>
>>> This is a known issue. It appears to be a bug with poll() /
>>> select()
>>> on OSX. See the following bug report for details:
>>>
>>> http://bugs.digium.com/view.php?id=13404
>>>
>>
>> I did some more debugging and see extremely strange stuff:
>>
>> main/poll.c is built and linked with the application,
>> but when asterisk calls poll it goes straight to the original
>> syscall...
>
> How did you go about determining that this was happening? Did you add
> some logging into the internal poll() or something? It seems quite
> strange that it would behave this way, indeed!
>
Well, first of all i've tried set a breakpoint at poll.
The breakpoint was installde but NEVER hit.
So i've did following:
(gdb) disass
Dump of assembler code for function ast_el_read_char:
0x0001a43c <ast_el_read_char+0>: push %ebp
0x0001a43d <ast_el_read_char+1>: mov %esp,%ebp
0x0001a43f <ast_el_read_char+3>: push %edi
0x0001a440 <ast_el_read_char+4>: push %esi
0x0001a441 <ast_el_read_char+5>: push %ebx
0x0001a442 <ast_el_read_char+6>: sub $0x23c,%esp
0x0001a448 <ast_el_read_char+12>: call 0x1a44d <ast_el_read_char+17>
0x0001a44d <ast_el_read_char+17>: pop %ebx
0x0001a44e <ast_el_read_char+18>: movl $0x0,-0x230(%ebp)
0x0001a458 <ast_el_read_char+28>: mov 0x11b10f(%ebx),%edx
0x0001a45e <ast_el_read_char+34>: lea -0x28(%ebp),%eax
0x0001a461 <ast_el_read_char+37>: mov %eax,-0x238(%ebp)
0x0001a467 <ast_el_read_char+43>: lea -0x228(%ebp),%eax
0x0001a46d <ast_el_read_char+49>: mov %eax,-0x23c(%ebp)
0x0001a473 <ast_el_read_char+55>: nop
0x0001a474 <ast_el_read_char+56>: mov 0x11c53b(%ebx),%eax
0x0001a47a <ast_el_read_char+62>: mov %eax,-0x28(%ebp)
0x0001a47d <ast_el_read_char+65>: movw $0x1,-0x24(%ebp)
0x0001a483 <ast_el_read_char+71>: test %dl,%dl
0x0001a485 <ast_el_read_char+73>: jns 0x1a5cc <ast_el_read_char+400>
0x0001a48b <ast_el_read_char+79>: mov $0x1,%eax
0x0001a490 <ast_el_read_char+84>: push %esi
0x0001a491 <ast_el_read_char+85>: push $0xffffffff
0x0001a493 <ast_el_read_char+87>: push %eax
0x0001a494 <ast_el_read_char+88>: pushl -0x238(%ebp)
0x0001a49a <ast_el_read_char+94>: call 0x15452b <dyld_stub_poll
$UNIX2003>
0x0001a49f <ast_el_read_char+99>: add $0x10,%esp
0x0001a4a2 <ast_el_read_char+102>: test %eax,%eax
0x0001a4a4 <ast_el_read_char+104>: js 0x1a5f8 <ast_el_read_char+444>
0x0001a4aa <ast_el_read_char+110>: mov 0x11b10f(%ebx),%edx
0x0001a4b0 <ast_el_read_char+116>: test %dl,%dl
0x0001a4b2 <ast_el_read_char+118>: js 0x1a4bf <ast_el_read_char+131>
0x0001a4b4 <ast_el_read_char+120>: cmpw $0x0,-0x1a(%ebp)
0x0001a4b9 <ast_el_read_char+125>: jne 0x1a7e0 <ast_el_read_char+932>
0x0001a4bf <ast_el_read_char+131>: cmpw $0x0,-0x22(%ebp)
0x0001a4c4 <ast_el_read_char+136>: je 0x1a474 <ast_el_read_char+56>
0x0001a4c6 <ast_el_read_char+138>: push %esi
0x0001a4c7 <ast_el_read_char+139>: push $0x1ff
0x0001a4cc <ast_el_read_char+144>: pushl -0x23c(%ebp)
0x000
Thanks
Vadim
>> I think what needs to be done is following:
>> 1) replace all calls to poll( by AST_POLL
>> 2) on non Darwin platform AST_POLL will be defined as poll on darwin
>> as ast_internal_poll
>> 3) rename poll in asterisk/poll.c as ast_internal_poll
>
> --
> Russell Bryant
> Digium, Inc. | Senior Software Engineer, Open Source Team Lead
> 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
> Check us out at: www.digium.com & www.asterisk.org
>
>
>
>
>
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20090314/90999c1f/attachment.htm
More information about the asterisk-dev
mailing list