* pcm->private_data is NULL in alsa core!! @ 2007-06-16 12:50 Pharaoh . 2007-06-17 15:45 ` Pharaoh . 2007-06-18 7:37 ` Clemens Ladisch 0 siblings, 2 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-16 12:50 UTC (permalink / raw) To: alsa-devel Hi I am writing an alsa driver for my omap based board. I am testing it using cat /dev/audio currently, i.e. I have OSS emulation turned on. This is an initial round of testing and I will use alsa-libs and utils later. My problem is: I have set the pcm->private_data = my_chip after registering the pcm ops, after referring various standard drivers in alsa tree. My module is insmoded properly but after I do snd_card_register(card) the pcm->private_data is corrupted !! Before this step, the pcm->private_data is intact. But after looking at the snd_card_register(), I realized that it doesn't even touch the pcm pointer. So, when I cat the device I get huge segfault in snd_pcm_attach_substream(), since pcm->private_data is NULL but surprisingly all the other fields are intact in pcm pointer. Even the OSS code doesn't touch the pcm pointer, what must be wrong? I have checked my source atleast 5 times and couldn't find anything in it. -pharaoh. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-16 12:50 pcm->private_data is NULL in alsa core!! Pharaoh . @ 2007-06-17 15:45 ` Pharaoh . 2007-06-18 7:37 ` Clemens Ladisch 1 sibling, 0 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-17 15:45 UTC (permalink / raw) To: alsa-devel On 6/16/07, Pharaoh . <pharaoh137@gmail.com> wrote: > Hi > I am writing an alsa driver for my omap based board. I am testing it using > cat /dev/audio currently, i.e. I have OSS emulation turned on. This is > an initial round of testing and I will use alsa-libs and utils later. > > My problem is: > > I have set the pcm->private_data = my_chip after registering the pcm ops, > after referring various standard drivers in alsa tree. My module is > insmoded properly but after I do snd_card_register(card) the > pcm->private_data is corrupted !! Before this step, the > pcm->private_data is intact. But after looking at the > snd_card_register(), I realized that it doesn't even touch the pcm > pointer. > > So, when I cat the device I get huge segfault in > snd_pcm_attach_substream(), since pcm->private_data is NULL but > surprisingly all the other fields are intact in pcm pointer. > > Even the OSS code doesn't touch the pcm pointer, what must be wrong? > I have checked my source atleast 5 times and couldn't find anything in it. > > -pharaoh. > Is the above post visible? I didn't receive it like all the other mails sent to this list. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-16 12:50 pcm->private_data is NULL in alsa core!! Pharaoh . 2007-06-17 15:45 ` Pharaoh . @ 2007-06-18 7:37 ` Clemens Ladisch 2007-06-18 11:56 ` Pharaoh . 1 sibling, 1 reply; 15+ messages in thread From: Clemens Ladisch @ 2007-06-18 7:37 UTC (permalink / raw) To: Pharaoh ., alsa-devel Pharaoh . wrote: > I have set the pcm->private_data = my_chip after registering the pcm ops, Should work. > ... but after I do snd_card_register(card) the pcm->private_data is > corrupted !! > > I have checked my source atleast 5 times and couldn't find anything in it. I couldn't find anything either. Not even your source code. Regards, Clemens ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-18 7:37 ` Clemens Ladisch @ 2007-06-18 11:56 ` Pharaoh . 2007-06-18 11:58 ` Pharaoh . 2007-06-19 11:10 ` Clemens Ladisch 0 siblings, 2 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-18 11:56 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel Hi Clemens, Sorry, I forgot to attach the source files. I am attaching the corressponding files, the code is still pretty much in development and messy. One thing -pharaoh. On 6/18/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > Pharaoh . wrote: > > I have set the pcm->private_data = my_chip after registering the pcm ops, > > Should work. > > > ... but after I do snd_card_register(card) the pcm->private_data is > > corrupted !! > > > > I have checked my source atleast 5 times and couldn't find anything in it. > > I couldn't find anything either. Not even your source code. > > > Regards, > Clemens > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-18 11:56 ` Pharaoh . @ 2007-06-18 11:58 ` Pharaoh . 2007-06-19 11:10 ` Clemens Ladisch 1 sibling, 0 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-18 11:58 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel Ignore that one thing in above post, it's accidental. On 6/18/07, Pharaoh . <pharaoh137@gmail.com> wrote: > Hi Clemens, > Sorry, I forgot to attach the source files. I am attaching the > corressponding files, the code is still pretty much in development and > messy. One thing > > -pharaoh. > > On 6/18/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > > Pharaoh . wrote: > > > I have set the pcm->private_data = my_chip after registering the pcm > ops, > > > > Should work. > > > > > ... but after I do snd_card_register(card) the pcm->private_data is > > > corrupted !! > > > > > > I have checked my source atleast 5 times and couldn't find anything in > it. > > > > I couldn't find anything either. Not even your source code. > > > > > > Regards, > > Clemens > > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-18 11:56 ` Pharaoh . 2007-06-18 11:58 ` Pharaoh . @ 2007-06-19 11:10 ` Clemens Ladisch 2007-06-19 11:30 ` Pharaoh . 1 sibling, 1 reply; 15+ messages in thread From: Clemens Ladisch @ 2007-06-19 11:10 UTC (permalink / raw) To: Pharaoh .; +Cc: alsa-devel Pharaoh . wrote: > > > I have set the pcm->private_data = my_chip after registering the pcm ops, > > > ... but after I do snd_card_register(card) the pcm->private_data is > > > corrupted !! snd_card_omap_alsa_pcm() should be __devinit, and full duplex is implied when no other XXX_DUPLEX flag is set, but I couldn't find any obvious errors related to private_data. Does the changing of private_data really occur in snd_card_register(), i.e., the output you get is: | in register codec 4 pvt data is (something) | in register codec 5 pvt data is 0 And the new value is NULL? snd_card_register() calls callbacks for all registered devices. It could be possible that some callback registered by eac_register_mixer() does something, but I don't know what this function does. Regards, Clemens ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-19 11:10 ` Clemens Ladisch @ 2007-06-19 11:30 ` Pharaoh . 2007-06-19 12:17 ` Pharaoh . 2007-06-19 14:29 ` Clemens Ladisch 0 siblings, 2 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-19 11:30 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel On 6/19/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > Pharaoh . wrote: > > > > I have set the pcm->private_data = my_chip after registering the pcm > ops, > > > > ... but after I do snd_card_register(card) the pcm->private_data is > > > > corrupted !! > > snd_card_omap_alsa_pcm() should be __devinit, and full duplex is implied > when no other XXX_DUPLEX flag is set, but I couldn't find any obvious > errors related to private_data. > > Does the changing of private_data really occur in snd_card_register(), > i.e., the output you get is: > > | in register codec 4 pvt data is (something) > | in register codec 5 pvt data is 0 > > And the new value is NULL? > > snd_card_register() calls callbacks for all registered devices. It > could be possible that some callback registered by eac_register_mixer() > does something, but I don't know what this function does. > > > Regards, > Clemens > Thanks Clemens for pondering over it. > snd_card_omap_alsa_pcm() should be __devinit, and full duplex is implied > when no other XXX_DUPLEX flag is set, but I couldn't find any obvious > errors related to private_data. I got it. > Does the changing of private_data really occur in snd_card_register(), > i.e., the output you get is: > > | in register codec 4 pvt data is (something) > | in register codec 5 pvt data is 0 > > And the new value is NULL? I get the following outputs: in register codec 2 pvt data is c3d81180 in register codec 3 pvt data is c3d81180 in register codec 4 pvt data is c3d81180 Registering the sound card in register codec 5 pvt data is c3998f20 i.e. after registering the sound card the value changes/gets corrupted, and c3998f20 is not the value I get everytime, so I am thinking it is corrrupted somehow. But back in probe, after above function are executed, i.e. after register codec is over, I get the correct value for eac->pcm->private_data i.e. c3d81180, but by now the value of pcm->private_data is corrupted! I am missing something here, I am sure. > snd_card_register() calls callbacks for all registered devices. It > could be possible that some callback registered by eac_register_mixer() > does something, but I don't know what this function does. eac_register_mixer was added later on, so I am sure it doesn't do anything with pcm. The error/fault predates the addition of this function and is reproduced without it too. When I open the device I get, # cat /dev/audio Inside snd_pcm_attach_substream pcm name is omap alsa pcm /*This is correct.*/ pcm id is OMAP PCM /*This is correct.*/ pcm private is 00000000 /*This shouldn't be NULL !!*/ In RECORD Copying the pvt_data /* i.e. substream->private_data = pcm->private_data;*/ pcm is not NULL pvt data is NULL /*This shouldn't be NULL !!*/ Done Copying the pvt_data Unable to handle kernel paging request at virtual address e5963230 pgd = c3e78000 [e5963230] *pgd=00000000 Internal error: Oops: 5 [#1] Modules linked in: omap_audio CPU: 0 PC is at snd_pcm_oss_open+0x338/0x52c LR is at 0xc39afe14 pc : [<c01808f8>] lr : [<c39afe14>] Not tainted sp : c39afdb4 ip : c008fbcc fp : c39afe60 r10: c039c4a0 r9 : 00000004 r8 : 0000000d r7 : c001fc00 r6 : c3dcc980 r5 : c39afe04 r4 : c008fb0c r3 : 00000000 r2 : 00000000 r1 : e5963014 r0 : 00000000 Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user Control: 5317F Table: 13E78000 DAC: 00000015 Process cat (pid: 218, stack limit = 0xc39ae250) Stack: (0xc39afdb4 to 0xc39b0000) fda0: c001fce8 00000001 00000004 fdc0: c001fd18 c001fd24 c39ae000 00000001 c38ec198 c008fb0c 00000000 00000000 fde0: c03a2040 c003a8e8 c001fd24 c001fd24 00000000 00000000 00000000 00000000 fe00: 00000000 00000000 00000000 00000000 00000000 00000000 00746163 00726500 fe20: 00000000 00000000 c39afe00 c39afe38 c00892e8 c010cb0c c39ae000 c0267ff0 fe40: 00000003 00000000 00000003 c039c4a0 c0268df0 c39afe90 c39afe64 c0163954 fe60: c01805d0 c38ec198 c39ae000 c3d64a20 c38ec198 00000000 00000001 c39ae000 fe80: c039c4a0 c39afebc c39afe94 c00895cc c016372c 00000004 c00893e8 c039c4a0 fea0: c38ec198 c03542a0 c38f7724 00000001 c39afee4 c39afec0 c0084f50 c00893f8 fec0: c039c4a0 c39aff04 00000003 ffffff9c c0023fe4 c0397000 c39afefc c39afee8 fee0: c00850d8 c0084e1c 00000000 00000000 c39aff68 c39aff00 c0085130 c00850b4 ff00: c39aff04 c38f7724 c03542a0 00000000 00000000 c3e78000 00000101 00000001 ff20: 00000000 c0368a48 c0368a40 ffffffe8 c39ae000 c0397000 c39aff68 c39aff48 ff40: c00852f4 c009d9c0 00000001 00000000 c039c4a0 00000000 000001b6 c39aff94 ff60: c39aff6c c00854f0 c00850fc 000081e4 bed18f95 000e72a0 000cac34 00000005 ff80: c0023fe4 00000000 c39affa4 c39aff98 c00855a4 c00854ac 00000000 c39affa8 ffa0: c0023e40 c0085590 bed18f95 000e72a0 bed18f95 00000000 000001b6 00000000 ffc0: bed18f95 000e72a0 000cac34 00000008 000080c0 000081e4 00000000 bed18e64 ffe0: 00000001 bed18e1c 0004de1c 000704d4 20000010 bed18f95 00000000 00000000 Backtrace: [<c01805c0>] (snd_pcm_oss_open+0x0/0x52c) from [<c0163954>] (soundcore_open+0x238/0x3ec) [<c016371c>] (soundcore_open+0x0/0x3ec) from [<c00895cc>] (chrdev_open+0x1e4/0x208) [<c00893e8>] (chrdev_open+0x0/0x208) from [<c0084f50>] (__dentry_open+0x144/0x298) [<c0084e0c>] (__dentry_open+0x0/0x298) from [<c00850d8>] (nameidata_to_filp+0x34/0x48) [<c00850a4>] (nameidata_to_filp+0x0/0x48) from [<c0085130>] (do_filp_open+0x44/0x4c) r4 = 00000000 [<c00850ec>] (do_filp_open+0x0/0x4c) from [<c00854f0>] (do_sys_open+0x54/0xe4) r5 = 000001B6 r4 = 00000000 [<c008549c>] (do_sys_open+0x0/0xe4) from [<c00855a4>] (sys_open+0x24/0x28) [<c0085580>] (sys_open+0x0/0x28) from [<c0023e40>] (ret_fast_syscall+0x0/0x2c) Code: e59430a4 e3c33b02 e58430a4 e5941070 (e5d1321c) Segmentation fault ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-19 11:30 ` Pharaoh . @ 2007-06-19 12:17 ` Pharaoh . 2007-06-19 14:29 ` Clemens Ladisch 1 sibling, 0 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-19 12:17 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel Further debugging revealed the following. Registering the sound card In snd_device_register_all Inside snd_pcm_dev_register Inside snd_pcm_dev_register, private_data is 00000000 /* Why NULL*/ card registered card registered etc. Now I have a very fundamental question, what I am doing in my driver code is setting pcm->private_data = my_local_chip_struct, but there is no way the ALSA core layer knows this, i.e. I am passing the name and id etc while allocating the pcm via snd_pcm_new(), but after that when I set pcm->private_data = my_local_chip_struct, how the alsa core will know this? I am not passing pcm to alsa core after this, right? Am I being too paranoid witht the entire thing? On 6/19/07, Pharaoh . <pharaoh137@gmail.com> wrote: > On 6/19/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > > Pharaoh . wrote: > > > > > I have set the pcm->private_data = my_chip after registering the pcm > > ops, > > > > > ... but after I do snd_card_register(card) the pcm->private_data is > > > > > corrupted !! > > > > snd_card_omap_alsa_pcm() should be __devinit, and full duplex is implied > > when no other XXX_DUPLEX flag is set, but I couldn't find any obvious > > errors related to private_data. > > > > Does the changing of private_data really occur in snd_card_register(), > > i.e., the output you get is: > > > > | in register codec 4 pvt data is (something) > > | in register codec 5 pvt data is 0 > > > > And the new value is NULL? > > > > snd_card_register() calls callbacks for all registered devices. It > > could be possible that some callback registered by eac_register_mixer() > > does something, but I don't know what this function does. > > > > > > Regards, > > Clemens > > > > Thanks Clemens for pondering over it. > > > snd_card_omap_alsa_pcm() should be __devinit, and full duplex is implied > > when no other XXX_DUPLEX flag is set, but I couldn't find any obvious > > errors related to private_data. > > I got it. > > > Does the changing of private_data really occur in snd_card_register(), > > i.e., the output you get is: > > > > | in register codec 4 pvt data is (something) > > | in register codec 5 pvt data is 0 > > > > And the new value is NULL? > > I get the following outputs: > > in register codec 2 pvt data is c3d81180 > in register codec 3 pvt data is c3d81180 > in register codec 4 pvt data is c3d81180 > Registering the sound card > in register codec 5 pvt data is c3998f20 > > i.e. after registering the sound card the value changes/gets > corrupted, and c3998f20 > is not the value I get everytime, so I am thinking it is corrrupted somehow. > > But back in probe, after above function are executed, i.e. after > register codec is over, I get the correct value for > eac->pcm->private_data i.e. c3d81180, but by now the value of > pcm->private_data is corrupted! I am missing something here, I am > sure. > > > snd_card_register() calls callbacks for all registered devices. It > > could be possible that some callback registered by eac_register_mixer() > > does something, but I don't know what this function does. > > eac_register_mixer was added later on, so I am sure it doesn't do > anything with pcm. > The error/fault predates the addition of this function and is > reproduced without it too. > > When I open the device I get, > > # cat /dev/audio > Inside snd_pcm_attach_substream > pcm name is omap alsa pcm /*This is correct.*/ > pcm id is OMAP PCM /*This is correct.*/ > pcm private is 00000000 /*This shouldn't be NULL !!*/ > In RECORD > Copying the pvt_data /* i.e. substream->private_data = > pcm->private_data;*/ > pcm is not NULL > pvt data is NULL /*This shouldn't be NULL !!*/ > Done Copying the pvt_data > Unable to handle kernel paging request at virtual address e5963230 > > pgd = c3e78000 > [e5963230] *pgd=00000000 > Internal error: Oops: 5 [#1] > Modules linked in: omap_audio > CPU: 0 > PC is at snd_pcm_oss_open+0x338/0x52c > LR is at 0xc39afe14 > pc : [<c01808f8>] lr : [<c39afe14>] Not tainted > sp : c39afdb4 ip : c008fbcc fp : c39afe60 > r10: c039c4a0 r9 : 00000004 r8 : 0000000d > r7 : c001fc00 r6 : c3dcc980 r5 : c39afe04 r4 : c008fb0c > r3 : 00000000 r2 : 00000000 r1 : e5963014 r0 : 00000000 > Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user > Control: 5317F > Table: 13E78000 DAC: 00000015 > Process cat (pid: 218, stack limit = 0xc39ae250) > Stack: (0xc39afdb4 to 0xc39b0000) > fda0: c001fce8 00000001 > 00000004 > fdc0: c001fd18 c001fd24 c39ae000 00000001 c38ec198 c008fb0c 00000000 > 00000000 > fde0: c03a2040 c003a8e8 c001fd24 c001fd24 00000000 00000000 00000000 > 00000000 > fe00: 00000000 00000000 00000000 00000000 00000000 00000000 00746163 > 00726500 > fe20: 00000000 00000000 c39afe00 c39afe38 c00892e8 c010cb0c c39ae000 > c0267ff0 > fe40: 00000003 00000000 00000003 c039c4a0 c0268df0 c39afe90 c39afe64 > c0163954 > fe60: c01805d0 c38ec198 c39ae000 c3d64a20 c38ec198 00000000 00000001 > c39ae000 > fe80: c039c4a0 c39afebc c39afe94 c00895cc c016372c 00000004 c00893e8 > c039c4a0 > fea0: c38ec198 c03542a0 c38f7724 00000001 c39afee4 c39afec0 c0084f50 > c00893f8 > fec0: c039c4a0 c39aff04 00000003 ffffff9c c0023fe4 c0397000 c39afefc > c39afee8 > fee0: c00850d8 c0084e1c 00000000 00000000 c39aff68 c39aff00 c0085130 > c00850b4 > ff00: c39aff04 c38f7724 c03542a0 00000000 00000000 c3e78000 00000101 > 00000001 > ff20: 00000000 c0368a48 c0368a40 ffffffe8 c39ae000 c0397000 c39aff68 > c39aff48 > ff40: c00852f4 c009d9c0 00000001 00000000 c039c4a0 00000000 000001b6 > c39aff94 > ff60: c39aff6c c00854f0 c00850fc 000081e4 bed18f95 000e72a0 000cac34 > 00000005 > ff80: c0023fe4 00000000 c39affa4 c39aff98 c00855a4 c00854ac 00000000 > c39affa8 > ffa0: c0023e40 c0085590 bed18f95 000e72a0 bed18f95 00000000 000001b6 > 00000000 > ffc0: bed18f95 000e72a0 000cac34 00000008 000080c0 000081e4 00000000 > bed18e64 > ffe0: 00000001 bed18e1c 0004de1c 000704d4 20000010 bed18f95 00000000 > 00000000 > Backtrace: > [<c01805c0>] (snd_pcm_oss_open+0x0/0x52c) from [<c0163954>] > (soundcore_open+0x238/0x3ec) > [<c016371c>] (soundcore_open+0x0/0x3ec) from [<c00895cc>] > (chrdev_open+0x1e4/0x208) > [<c00893e8>] (chrdev_open+0x0/0x208) from [<c0084f50>] > (__dentry_open+0x144/0x298) > [<c0084e0c>] (__dentry_open+0x0/0x298) from [<c00850d8>] > (nameidata_to_filp+0x34/0x48) > [<c00850a4>] (nameidata_to_filp+0x0/0x48) from [<c0085130>] > (do_filp_open+0x44/0x4c) > r4 = 00000000 > [<c00850ec>] (do_filp_open+0x0/0x4c) from [<c00854f0>] > (do_sys_open+0x54/0xe4) > r5 = 000001B6 r4 = 00000000 > [<c008549c>] (do_sys_open+0x0/0xe4) from [<c00855a4>] (sys_open+0x24/0x28) > [<c0085580>] (sys_open+0x0/0x28) from [<c0023e40>] > (ret_fast_syscall+0x0/0x2c) > Code: e59430a4 e3c33b02 e58430a4 e5941070 (e5d1321c) > Segmentation fault > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-19 11:30 ` Pharaoh . 2007-06-19 12:17 ` Pharaoh . @ 2007-06-19 14:29 ` Clemens Ladisch 2007-06-20 10:18 ` Pharaoh . 1 sibling, 1 reply; 15+ messages in thread From: Clemens Ladisch @ 2007-06-19 14:29 UTC (permalink / raw) To: Pharaoh .; +Cc: alsa-devel Pharaoh . wrote: > in register codec 4 pvt data is c3d81180 > Registering the sound card > in register codec 5 pvt data is c3998f20 > > i.e. after registering the sound card the value changes/gets > corrupted, and c3998f20 > is not the value I get everytime, so I am thinking it is corrrupted somehow. I'd guess the memory gets overwritten. > But back in probe, after above function are executed, i.e. after > register codec is over, I get the correct value for > eac->pcm->private_data i.e. c3d81180, but by now the value of > pcm->private_data is corrupted! This implies that eac->pcm != pcm. It seems quite a lot of memory gets corrupted. Try to check which one of the various "eac" and "pcm" pointers changes its value. HTH Clemens ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-19 14:29 ` Clemens Ladisch @ 2007-06-20 10:18 ` Pharaoh . 2007-06-20 11:12 ` Pharaoh . 0 siblings, 1 reply; 15+ messages in thread From: Pharaoh . @ 2007-06-20 10:18 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel I think I have fixed the problem, atleast the value of pcm->private_data doesn't get currupted anymore...After enabling kernel debugging for semaphores/mutexes, I realised that code was sleeping in a place where it was not supposed to. I dont know/didn't check where exactly the memory was getting corrupted but after doing appropriate lock/unlock the pcm->private_data seems looks healthy. But now when I do cat /dev/audio/ the machine just hangs!! Looking in to it. Clemens, I was holding mutexes in register_codec(), there it was corrupting. Thanks for help. -pharaoh. On 6/19/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > Pharaoh . wrote: > > in register codec 4 pvt data is c3d81180 > > Registering the sound card > > in register codec 5 pvt data is c3998f20 > > > > i.e. after registering the sound card the value changes/gets > > corrupted, and c3998f20 > > is not the value I get everytime, so I am thinking it is corrrupted > somehow. > > I'd guess the memory gets overwritten. > > > But back in probe, after above function are executed, i.e. after > > register codec is over, I get the correct value for > > eac->pcm->private_data i.e. c3d81180, but by now the value of > > pcm->private_data is corrupted! > > This implies that eac->pcm != pcm. > > It seems quite a lot of memory gets corrupted. > Try to check which one of the various "eac" and "pcm" pointers changes > its value. > > > HTH > Clemens > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-20 10:18 ` Pharaoh . @ 2007-06-20 11:12 ` Pharaoh . 2007-06-20 11:16 ` Pharaoh . 0 siblings, 1 reply; 15+ messages in thread From: Pharaoh . @ 2007-06-20 11:12 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel On 6/20/07, Pharaoh . <pharaoh137@gmail.com> wrote: > I think I have fixed the problem, atleast the value of > pcm->private_data doesn't get currupted anymore...After enabling > kernel debugging for semaphores/mutexes, I realised that code was > sleeping in a place where it was not supposed to. I dont know/didn't > check where exactly the memory was getting corrupted but after doing > appropriate lock/unlock the pcm->private_data seems looks healthy. > > But now when I do cat /dev/audio/ the machine just hangs!! Looking in to it. > > Clemens, I was holding mutexes in register_codec(), there it was > corrupting. Thanks for help. > > -pharaoh. > > On 6/19/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > > Pharaoh . wrote: > > > in register codec 4 pvt data is c3d81180 > > > Registering the sound card > > > in register codec 5 pvt data is c3998f20 > > > > > > i.e. after registering the sound card the value changes/gets > > > corrupted, and c3998f20 > > > is not the value I get everytime, so I am thinking it is corrrupted > > somehow. > > > > I'd guess the memory gets overwritten. > > > > > But back in probe, after above function are executed, i.e. after > > > register codec is over, I get the correct value for > > > eac->pcm->private_data i.e. c3d81180, but by now the value of > > > pcm->private_data is corrupted! > > > > This implies that eac->pcm != pcm. > > > > It seems quite a lot of memory gets corrupted. > > Try to check which one of the various "eac" and "pcm" pointers changes > > its value. > > > > > > HTH > > Clemens > > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-20 11:12 ` Pharaoh . @ 2007-06-20 11:16 ` Pharaoh . 2007-06-20 16:13 ` Clemens Ladisch 0 siblings, 1 reply; 15+ messages in thread From: Pharaoh . @ 2007-06-20 11:16 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel The problem still persists!! I get the following: While insmoding : ..................... Registering the sound card pcm->private in snd_device_register_all is c1d7d310 //correct Inside snd_pcm_dev_register, pcm is c1f05d44(correct), pcm->pvt_data is 00000000(This shouldn't be NULL) In snd_device_register, eac is c1d7d310 //correct In snd_device_register, eac is c1d7d310 ...................... # cat a.sh > dev/audio pcm name is omap alsa pcm pcm id is OMAP PCM pcm private is 00000000 PLAYBACK Unable to handle kernel paging request at virtual address e591321c pgd = c1fb4000 [e591321c] *pgd=00000000 Internal error: Oops: 5 [#1] Modules linked in: omap_audio CPU: 0 PC is at snd_pcm_oss_open+0x374/0x578 LR is at 0xc1f23e00 pc : [<c0192e14>] lr : [<c1f23e00>] Not tainted sp : c1f23db4 ip : c0118cd0 fp : c1f23e60 r10: c1f22000 r9 : 00000004 r8 : c0118c10 r7 : 00000000 r6 : c199e1c8 r5 : c1f05df4 r4 : c1f23df0 r3 : 00000000 r2 : 00000000 r1 : e5913000 r0 : 00000000 Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user Control: 5317F Table: 11FB4000 DAC: 00000015 Process sh (pid: 209, stack limit = 0xc1f22250) Stack: (0xc1f23db4 to 0xc1f24000) 3da0: c1f05e8c c1f05e74 0000000e 3dc0: 00000000 00000001 c1f05d44 c0374e3c c18e834c c0118c10 00000000 00000000 3de0: c0370580 c003c1f4 c1f05e8c c1f05e8c 00000000 00000000 00000000 00000000 3e00: 00000000 00000000 00000000 00000000 00000000 00000000 74006873 00726500 3e20: 00000000 00000000 c022d400 c005d088 c1d67b68 00000000 c028220c c1f22000 3e40: 00000000 00000003 c028306c c18e834c c0374e3c c1f23e90 c1f23e64 c0174cc0 3e60: c0192ab0 00000001 c1f22000 c1d37f08 c18e834c 00000000 00000001 c1f22000 3e80: c0374e3c c1f23ebc c1f23e94 c009145c c0174a2c 00000004 c0374e3c c18e834c 3ea0: c00912c0 c1e5feec c032a280 00000001 c1f23ee4 c1f23ec0 c008cb78 c00912d0 3ec0: c0374e3c c1f23f04 00000003 ffffff9c c0025024 c1955000 c1f23efc c1f23ee8 3ee0: c008ccbc c008c9c4 00000000 00000241 c1f23f68 c1f23f00 c008cd20 c008cc98 3f00: c1f23f04 c1e5feec c032a280 10bc8063 00000005 c1955004 00000300 00000000 3f20: 00000000 c033913c c1f22000 ffffffe8 c1f22000 c1955000 c1f23f68 c1f23f48 3f40: c008ceb8 c00a65dc 00000242 000001b6 c0374e3c 00000241 000001b6 c1f23f94 3f60: c1f23f6c c008d118 c008cce4 0003fe80 ffffffff 000ddd9c 000ddd24 00000005 3f80: c0025024 000e7460 c1f23fa4 c1f23f98 c008d1cc c008d0cc 00000000 c1f23fa8 3fa0: c0024e80 c008d1b8 ffffffff 000ddd9c 000ddd9c 00000241 000001b6 00000000 3fc0: ffffffff 000ddd9c 000ddd24 bed0ed24 bed0ed7c 00000003 000e7460 000ddd8c 3fe0: 00000fe0 bed0eb58 0002cdac 000704d4 60000010 000ddd9c 00000000 00000000 Backtrace: [<c0192aa0>] (snd_pcm_oss_open+0x0/0x578) from [<c0174cc0>] (soundcore_open+0x2a4/0x408) [<c0174a1c>] (soundcore_open+0x0/0x408) from [<c009145c>] (chrdev_open+0x19c/0x218) [<c00912c0>] (chrdev_open+0x0/0x218) from [<c008cb78>] (__dentry_open+0x1c4/0x2d4) [<c008c9b4>] (__dentry_open+0x0/0x2d4) from [<c008ccbc>] (nameidata_to_filp+0x34/0x4c) [<c008cc88>] (nameidata_to_filp+0x0/0x4c) from [<c008cd20>] (do_filp_open+0x4c/0x50) r4 = 00000241 [<c008ccd4>] (do_filp_open+0x0/0x50) from [<c008d118>] (do_sys_open+0x5c/0xec) r5 = 000001B6 r4 = 00000241 [<c008d0bc>] (do_sys_open+0x0/0xec) from [<c008d1cc>] (sys_open+0x24/0x28) [<c008d1a8>] (sys_open+0x0/0x28) from [<c0024e80>] (ret_fast_syscall+0x0/0x2c) Code: e59830a4 e3c33b02 e58830a4 e5981070 (e5d1321c) On 6/20/07, Pharaoh . <pharaoh137@gmail.com> wrote: > On 6/20/07, Pharaoh . <pharaoh137@gmail.com> wrote: > > I think I have fixed the problem, atleast the value of > > pcm->private_data doesn't get currupted anymore...After enabling > > kernel debugging for semaphores/mutexes, I realised that code was > > sleeping in a place where it was not supposed to. I dont know/didn't > > check where exactly the memory was getting corrupted but after doing > > appropriate lock/unlock the pcm->private_data seems looks healthy. > > > > But now when I do cat /dev/audio/ the machine just hangs!! Looking in to > it. > > > > Clemens, I was holding mutexes in register_codec(), there it was > > corrupting. Thanks for help. > > > > -pharaoh. > > > > On 6/19/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > > > Pharaoh . wrote: > > > > in register codec 4 pvt data is c3d81180 > > > > Registering the sound card > > > > in register codec 5 pvt data is c3998f20 > > > > > > > > i.e. after registering the sound card the value changes/gets > > > > corrupted, and c3998f20 > > > > is not the value I get everytime, so I am thinking it is corrrupted > > > somehow. > > > > > > I'd guess the memory gets overwritten. > > > > > > > But back in probe, after above function are executed, i.e. after > > > > register codec is over, I get the correct value for > > > > eac->pcm->private_data i.e. c3d81180, but by now the value of > > > > pcm->private_data is corrupted! > > > > > > This implies that eac->pcm != pcm. > > > > > > It seems quite a lot of memory gets corrupted. > > > Try to check which one of the various "eac" and "pcm" pointers changes > > > its value. > > > > > > > > > HTH > > > Clemens > > > > > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-20 11:16 ` Pharaoh . @ 2007-06-20 16:13 ` Clemens Ladisch 2007-06-20 16:29 ` Pharaoh . 0 siblings, 1 reply; 15+ messages in thread From: Clemens Ladisch @ 2007-06-20 16:13 UTC (permalink / raw) To: Pharaoh .; +Cc: alsa-devel Pharaoh . wrote: > Registering the sound card > pcm->private in snd_device_register_all is c1d7d310 //correct > Inside snd_pcm_dev_register, pcm is c1f05d44(correct), pcm->pvt_data > is 00000000(This shouldn't be NULL) Does the value of pcm itself change? Do other fields in pcm change? Regards, Clemens ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-20 16:13 ` Clemens Ladisch @ 2007-06-20 16:29 ` Pharaoh . 2007-06-22 20:03 ` Pharaoh . 0 siblings, 1 reply; 15+ messages in thread From: Pharaoh . @ 2007-06-20 16:29 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel Value of pcm pointer doesn't change. Other fields which are populated by me do not change except private_data. The following shows it: # cat a.sh > dev/audio pcm name is omap alsa pcm //Intact pcm id is OMAP PCM //Intact pcm private is 00000000 //Only this changes On 6/20/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > Pharaoh . wrote: > > Registering the sound card > > pcm->private in snd_device_register_all is c1d7d310 //correct > > Inside snd_pcm_dev_register, pcm is c1f05d44(correct), pcm->pvt_data > > is 00000000(This shouldn't be NULL) > > Does the value of pcm itself change? > Do other fields in pcm change? > > > Regards, > Clemens > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: pcm->private_data is NULL in alsa core!! 2007-06-20 16:29 ` Pharaoh . @ 2007-06-22 20:03 ` Pharaoh . 0 siblings, 0 replies; 15+ messages in thread From: Pharaoh . @ 2007-06-22 20:03 UTC (permalink / raw) To: Clemens Ladisch; +Cc: alsa-devel Problem solved guys...many misc things were wrong..after fixing them it worked. Thank you all. On 6/20/07, Pharaoh . <pharaoh137@gmail.com> wrote: > Value of pcm pointer doesn't change. Other fields which are populated > by me do not change except private_data. > > The following shows it: > > # cat a.sh > dev/audio > pcm name is omap alsa pcm //Intact > pcm id is OMAP PCM //Intact > pcm private is 00000000 //Only this changes > > On 6/20/07, Clemens Ladisch <cladisch@fastmail.net> wrote: > > Pharaoh . wrote: > > > Registering the sound card > > > pcm->private in snd_device_register_all is c1d7d310 //correct > > > Inside snd_pcm_dev_register, pcm is c1f05d44(correct), pcm->pvt_data > > > is 00000000(This shouldn't be NULL) > > > > Does the value of pcm itself change? > > Do other fields in pcm change? > > > > > > Regards, > > Clemens > > > ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2007-06-22 20:03 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-06-16 12:50 pcm->private_data is NULL in alsa core!! Pharaoh . 2007-06-17 15:45 ` Pharaoh . 2007-06-18 7:37 ` Clemens Ladisch 2007-06-18 11:56 ` Pharaoh . 2007-06-18 11:58 ` Pharaoh . 2007-06-19 11:10 ` Clemens Ladisch 2007-06-19 11:30 ` Pharaoh . 2007-06-19 12:17 ` Pharaoh . 2007-06-19 14:29 ` Clemens Ladisch 2007-06-20 10:18 ` Pharaoh . 2007-06-20 11:12 ` Pharaoh . 2007-06-20 11:16 ` Pharaoh . 2007-06-20 16:13 ` Clemens Ladisch 2007-06-20 16:29 ` Pharaoh . 2007-06-22 20:03 ` Pharaoh .
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.