[alsa-devel] ALSA seq Segfault on snd_seq_event_output_direct in 64bit
Hi
I was made a program called stygmorgan that mades hard use of the ALSA sequencer ...
I run this programs in a lot of 32 bit computers without problems but I received various emails form ppl that has 64bit and the program segfault in:
#0 0x00007f5e6c1cb9a6 in snd_seq_event_output_direct () from /usr/lib/libasound.so.2 #1 0x000000000040caf2 in RMGMO::enviocontrol (this=<value optimized out>, canal=<value optimized out>, control=28, value=0) at stygmorgan.midiout.C:91
Unfortunately I dont have any 64 bit computer to check but I made some checks with some users and the incredible thing is the segfault is produced after the function is called 90 times ... at the 91 segfault. And is not related to the midi event data because previously I send the same data.
This is the function:
void RMGMO::enviocontrol(int canal,int control, int value) {
snd_seq_event_t midievent; snd_seq_ev_clear (&midievent);
snd_seq_ev_set_controller (&midievent, canal, control, value); snd_seq_ev_set_subs (&midievent); snd_seq_ev_set_direct (&midievent); snd_seq_event_output_direct (midi_out, &midievent);
}
Any help ... any idea? ... is this an ALSA seq bug?
Josep
Josep Andreu wrote:
I run this programs in a lot of 32 bit computers without problems but I received various emails form ppl that has 64bit and the program segfault in:
#0 0x00007f5e6c1cb9a6 in snd_seq_event_output_direct () from /usr/lib/libasound.so.2
Unfortunately I dont have any 64 bit computer to check but I made some checks with some users and the incredible thing is the segfault is produced after the function is called 90 times ... at the 91 segfault. And is not related to the midi event data because previously I send the same data.
This is the function:
void RMGMO::enviocontrol(int canal,int control, int value) {
snd_seq_event_t midievent; snd_seq_ev_clear (&midievent);
snd_seq_ev_set_controller (&midievent, canal, control, value); snd_seq_ev_set_subs (&midievent); snd_seq_ev_set_direct (&midievent); snd_seq_event_output_direct (midi_out, &midievent);
}
This function looks correct.
It's possible that the memory in midi_out got corrupted. Try running stygmorgan with Valgrind.
Regards, Clemens
participants (2)
-
Clemens Ladisch
-
Josep Andreu